auth/auth_test.go
be20f3c5
 package auth
 
 import (
20a57f15
 	"crypto/rand"
 	"encoding/hex"
0fc11699
 	"io/ioutil"
20a57f15
 	"os"
 	"strings"
be20f3c5
 	"testing"
 )
 
 func TestEncodeAuth(t *testing.T) {
c72ff318
 	newAuthConfig := &AuthConfig{Username: "ken", Password: "test", Email: "test@example.com"}
13e03a69
 	authStr := encodeAuth(newAuthConfig)
f4b41e1a
 	decAuthConfig := &AuthConfig{}
 	var err error
 	decAuthConfig.Username, decAuthConfig.Password, err = decodeAuth(authStr)
be20f3c5
 	if err != nil {
 		t.Fatal(err)
 	}
 	if newAuthConfig.Username != decAuthConfig.Username {
 		t.Fatal("Encode Username doesn't match decoded Username")
 	}
 	if newAuthConfig.Password != decAuthConfig.Password {
 		t.Fatal("Encode Password doesn't match decoded Password")
 	}
 	if authStr != "a2VuOnRlc3Q=" {
 		t.Fatal("AuthString encoding isn't correct.")
 	}
 }
20a57f15
 
17ad00a3
 func TestLogin(t *testing.T) {
20a57f15
 	os.Setenv("DOCKER_INDEX_URL", "https://indexstaging-docker.dotcloud.com")
 	defer os.Setenv("DOCKER_INDEX_URL", "")
f4b41e1a
 	authConfig := &AuthConfig{Username: "unittester", Password: "surlautrerivejetattendrai", Email: "noise+unittester@dotcloud.com"}
7bade49d
 	status, err := Login(authConfig, nil)
20a57f15
 	if err != nil {
 		t.Fatal(err)
 	}
639833aa
 	if status != "Login Succeeded" {
20a57f15
 		t.Fatalf("Expected status \"Login Succeeded\", found \"%s\" instead", status)
 	}
 }
 
17ad00a3
 func TestCreateAccount(t *testing.T) {
20a57f15
 	os.Setenv("DOCKER_INDEX_URL", "https://indexstaging-docker.dotcloud.com")
 	defer os.Setenv("DOCKER_INDEX_URL", "")
 	tokenBuffer := make([]byte, 16)
 	_, err := rand.Read(tokenBuffer)
 	if err != nil {
 		t.Fatal(err)
 	}
 	token := hex.EncodeToString(tokenBuffer)[:12]
 	username := "ut" + token
0fc11699
 	authConfig := &AuthConfig{Username: username, Password: "test42", Email: "docker-ut+" + token + "@example.com"}
7bade49d
 	status, err := Login(authConfig, nil)
20a57f15
 	if err != nil {
 		t.Fatal(err)
 	}
 	expectedStatus := "Account created. Please use the confirmation link we sent" +
639833aa
 		" to your e-mail to activate it."
20a57f15
 	if status != expectedStatus {
 		t.Fatalf("Expected status: \"%s\", found \"%s\" instead.", expectedStatus, status)
 	}
 
7bade49d
 	status, err = Login(authConfig, nil)
20a57f15
 	if err == nil {
 		t.Fatalf("Expected error but found nil instead")
 	}
 
 	expectedError := "Login: Account is not Active"
 
 	if !strings.Contains(err.Error(), expectedError) {
1277dca3
 		t.Fatalf("Expected message \"%s\" but found \"%s\" instead", expectedError, err)
20a57f15
 	}
17ad00a3
 }
0fc11699
 
 func TestSameAuthDataPostSave(t *testing.T) {
 	root, err := ioutil.TempDir("", "docker-test")
 	if err != nil {
 		t.Fatal(err)
 	}
 	configFile := &ConfigFile{
 		rootPath: root,
 		Configs:  make(map[string]AuthConfig, 1),
 	}
 
 	configFile.Configs["testIndex"] = AuthConfig{
 		Username: "docker-user",
 		Password: "docker-pass",
 		Email:    "docker@docker.io",
 	}
 
 	err = SaveConfig(configFile)
 	if err != nil {
 		t.Fatal(err)
 	}
 
 	authConfig := configFile.Configs["testIndex"]
 	if authConfig.Username != "docker-user" {
 		t.Fail()
 	}
 	if authConfig.Password != "docker-pass" {
 		t.Fail()
 	}
 	if authConfig.Email != "docker@docker.io" {
 		t.Fail()
 	}
 	if authConfig.Auth != "" {
 		t.Fail()
 	}
 }