@@ -15,11 +15,6 @@ func TestOSXKeychainHelper(t *testing.T) {
15
15
Username : "foobar" ,
16
16
Secret : "foobarbaz" ,
17
17
}
18
- creds1 := & credentials.Credentials {
19
- ServerURL : "https://foobar.example.com:2376/v2" ,
20
- Username : "foobarbaz" ,
21
- Secret : "foobar" ,
22
- }
23
18
helper := Osxkeychain {}
24
19
if err := helper .Add (creds ); err != nil {
25
20
t .Fatal (err )
@@ -43,19 +38,49 @@ func TestOSXKeychainHelper(t *testing.T) {
43
38
t .Fatal (err )
44
39
}
45
40
41
+ if _ , ok := auths [creds .ServerURL ]; ! ok {
42
+ t .Fatalf ("server %s not found in list, got: %+v" , creds .ServerURL , auths )
43
+ }
44
+
45
+ // Insert another token and check if it is in the list
46
+ creds1 := & credentials.Credentials {
47
+ ServerURL : "https://foobar.example.com:2376/v2" ,
48
+ Username : "foobarbaz" ,
49
+ Secret : "foobar" ,
50
+ }
46
51
helper .Add (creds1 )
47
52
defer helper .Delete (creds1 .ServerURL )
48
- newauths , err := helper .List ()
49
- if len (newauths )- len (auths ) != 1 {
50
- if err == nil {
51
- t .Fatalf ("Error: len(newauths): %d, len(auths): %d" , len (newauths ), len (auths ))
52
- }
53
- t .Fatalf ("Error: len(newauths): %d, len(auths): %d\n Error= %v" , len (newauths ), len (auths ), err )
53
+
54
+ auths , err = helper .List ()
55
+ if err != nil {
56
+ t .Fatalf ("operation List failed: %+v" , err )
57
+ }
58
+
59
+ if _ , ok := auths [creds .ServerURL ]; ! ok {
60
+ t .Fatalf ("server %s not found in list, got: %+v" , creds .ServerURL , auths )
61
+ }
62
+ if _ , ok := auths [creds1 .ServerURL ]; ! ok {
63
+ t .Fatalf ("server %s not found in list, got: %+v" , creds1 .ServerURL , auths )
54
64
}
55
65
66
+ // Delete the 1st token inserted
56
67
if err := helper .Delete (creds .ServerURL ); err != nil {
57
68
t .Fatal (err )
58
69
}
70
+
71
+ auths , err = helper .List ()
72
+ if err != nil {
73
+ t .Fatalf ("operation List failed: %+v" , err )
74
+ }
75
+
76
+ // First token should have been deleted
77
+ if _ , ok := auths [creds .ServerURL ]; ok {
78
+ t .Fatalf ("server %s was not deleted, got: %+v" , creds .ServerURL , auths )
79
+ }
80
+ // Second token should still be there
81
+ if _ , ok := auths [creds1 .ServerURL ]; ! ok {
82
+ t .Fatalf ("server %s not found in list, got: %+v" , creds1 .ServerURL , auths )
83
+ }
59
84
}
60
85
61
86
// TestOSXKeychainHelperRetrieveAliases verifies that secrets can be accessed
@@ -116,6 +141,39 @@ func TestOSXKeychainHelperRetrieveAliases(t *testing.T) {
116
141
}
117
142
}
118
143
144
+ func TestOSXKeychainHelperStoreWithUncleanPath (t * testing.T ) {
145
+ helper := Osxkeychain {}
146
+ creds := & credentials.Credentials {
147
+ ServerURL : "https://::1:8080//////location/../../hello" ,
148
+ Username : "testuser" ,
149
+ Secret : "testsecret" ,
150
+ }
151
+
152
+ // Clean store before and after the test.
153
+ defer helper .Delete (creds .ServerURL )
154
+ if err := helper .Delete (creds .ServerURL ); err != nil && ! credentials .IsErrCredentialsNotFound (err ) {
155
+ t .Errorf ("prepare: failed to delete '%s': %v" , creds .ServerURL , err )
156
+ }
157
+
158
+ // Store the credentials
159
+ if err := helper .Add (creds ); err != nil {
160
+ t .Fatalf ("Error: failed to store credentials with unclean path %q: %s" , creds .ServerURL , err )
161
+ }
162
+
163
+ // Retrieve and verify credentials
164
+ username , secret , err := helper .Get (creds .ServerURL )
165
+ if err != nil {
166
+ t .Fatalf ("Error: failed to retrieve credentials with unclean path %q: %s" , creds .ServerURL , err )
167
+ }
168
+
169
+ if username != creds .Username {
170
+ t .Errorf ("Error: expected username %s, got %s" , creds .Username , username )
171
+ }
172
+ if secret != creds .Secret {
173
+ t .Errorf ("Error: expected secret %s, got %s" , creds .Secret , secret )
174
+ }
175
+ }
176
+
119
177
// TestOSXKeychainHelperRetrieveStrict verifies that only matching secrets are
120
178
// returned.
121
179
func TestOSXKeychainHelperRetrieveStrict (t * testing.T ) {
0 commit comments