@@ -14,6 +14,16 @@ import (
1414 "github.com/coder/coder/v2/cli/sessionstore"
1515)
1616
17+ func readRawKeychainCredential (t * testing.T , serviceName string ) []byte {
18+ t .Helper ()
19+
20+ winCred , err := wincred .GetGenericCredential (serviceName )
21+ if err != nil {
22+ t .Fatal (err )
23+ }
24+ return winCred .CredentialBlob
25+ }
26+
1727func TestWindowsKeyring_WriteReadDelete (t * testing.T ) {
1828 t .Parallel ()
1929
@@ -38,10 +48,7 @@ func TestWindowsKeyring_WriteReadDelete(t *testing.T) {
3848 winCred , err := wincred .GetGenericCredential (serviceName )
3949 require .NoError (t , err , "getting windows credential" )
4050
41- var storedCreds map [string ]struct {
42- CoderURL string `json:"coder_url"`
43- APIToken string `json:"api_token"`
44- }
51+ storedCreds := make (storedCredentials )
4552 err = json .Unmarshal (winCred .CredentialBlob , & storedCreds )
4653 require .NoError (t , err , "unmarshalling stored credentials" )
4754
@@ -65,63 +72,3 @@ func TestWindowsKeyring_WriteReadDelete(t *testing.T) {
6572 _ , err = backend .Read (srvURL )
6673 require .ErrorIs (t , err , os .ErrNotExist )
6774}
68-
69- func TestWindowsKeyring_MultipleServers (t * testing.T ) {
70- t .Parallel ()
71-
72- const testURL1 = "http://127.0.0.1:1337"
73- srv1URL , err := url .Parse (testURL1 )
74- require .NoError (t , err )
75-
76- const testURL2 = "http://127.0.0.1:1338"
77- srv2URL , err := url .Parse (testURL2 )
78- require .NoError (t , err )
79-
80- serviceName := keyringTestServiceName (t )
81- backend := sessionstore .NewKeyringWithService (serviceName )
82- t .Cleanup (func () {
83- _ = backend .Delete (srv1URL )
84- _ = backend .Delete (srv2URL )
85- })
86-
87- // Write token for server 1
88- const token1 = "token-server-1"
89- err = backend .Write (srv1URL , token1 )
90- require .NoError (t , err )
91-
92- // Write token for server 2 (should NOT overwrite server 1's token)
93- const token2 = "token-server-2"
94- err = backend .Write (srv2URL , token2 )
95- require .NoError (t , err )
96-
97- // Verify both credentials are stored in Windows Credential Manager
98- winCred , err := wincred .GetGenericCredential (serviceName )
99- require .NoError (t , err , "getting windows credential" )
100-
101- var storedCreds map [string ]struct {
102- CoderURL string `json:"coder_url"`
103- APIToken string `json:"api_token"`
104- }
105- err = json .Unmarshal (winCred .CredentialBlob , & storedCreds )
106- require .NoError (t , err , "unmarshalling stored credentials" )
107-
108- // Both credentials should exist
109- require .Len (t , storedCreds , 2 )
110- require .Equal (t , token1 , storedCreds [srv1URL .Host ].APIToken )
111- require .Equal (t , token2 , storedCreds [srv2URL .Host ].APIToken )
112-
113- // Read individual credentials
114- token , err := backend .Read (srv1URL )
115- require .NoError (t , err )
116- require .Equal (t , token1 , token )
117-
118- token , err = backend .Read (srv2URL )
119- require .NoError (t , err )
120- require .Equal (t , token2 , token )
121-
122- // Cleanup
123- err = backend .Delete (srv1URL )
124- require .NoError (t , err )
125- err = backend .Delete (srv2URL )
126- require .NoError (t , err )
127- }
0 commit comments