Merge pull request #1283 from crosbymichael/username-not-set

Copy authConfigs on save so data is not modified
This commit is contained in:
Victor Vieux 2013-07-25 06:31:34 -07:00
commit 7df6c4b9ad
2 changed files with 48 additions and 6 deletions

View File

@ -116,14 +116,19 @@ func SaveConfig(configFile *ConfigFile) error {
os.Remove(confFile) os.Remove(confFile)
return nil return nil
} }
configs := make(map[string]AuthConfig, len(configFile.Configs))
for k, authConfig := range configFile.Configs { for k, authConfig := range configFile.Configs {
authConfig.Auth = encodeAuth(&authConfig) authCopy := authConfig
authConfig.Username = ""
authConfig.Password = "" authCopy.Auth = encodeAuth(&authCopy)
configFile.Configs[k] = authConfig authCopy.Username = ""
authCopy.Password = ""
configs[k] = authCopy
} }
b, err := json.Marshal(configFile.Configs) b, err := json.Marshal(configs)
if err != nil { if err != nil {
return err return err
} }

View File

@ -3,6 +3,7 @@ package auth
import ( import (
"crypto/rand" "crypto/rand"
"encoding/hex" "encoding/hex"
"io/ioutil"
"os" "os"
"strings" "strings"
"testing" "testing"
@ -51,7 +52,7 @@ func TestCreateAccount(t *testing.T) {
} }
token := hex.EncodeToString(tokenBuffer)[:12] token := hex.EncodeToString(tokenBuffer)[:12]
username := "ut" + token username := "ut" + token
authConfig := &AuthConfig{Username: username, Password: "test42", Email: "docker-ut+"+token+"@example.com"} authConfig := &AuthConfig{Username: username, Password: "test42", Email: "docker-ut+" + token + "@example.com"}
status, err := Login(authConfig) status, err := Login(authConfig)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
@ -73,3 +74,39 @@ func TestCreateAccount(t *testing.T) {
t.Fatalf("Expected message \"%s\" but found \"%s\" instead", expectedError, err) t.Fatalf("Expected message \"%s\" but found \"%s\" instead", expectedError, err)
} }
} }
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()
}
}