@@ -40,7 +40,7 @@ func TestBuildCredCacheDirPath(t *testing.T) {
40
40
assertEqualE (t , path , testRoot1 )
41
41
stat , err := os .Stat (testRoot1 )
42
42
assertNilF (t , err )
43
- assertEqualE (t , stat .Mode (). String (), "drwx------" )
43
+ assertEqualE (t , stat .Mode (), 0700 | os . ModeDir )
44
44
})
45
45
46
46
t .Run ("should use first dir that exists and append segments" , func (t * testing.T ) {
@@ -52,21 +52,21 @@ func TestBuildCredCacheDirPath(t *testing.T) {
52
52
assertEqualE (t , path , filepath .Join (testRoot2 , "sub1" , "sub2" ))
53
53
stat , err := os .Stat (testRoot2 )
54
54
assertNilF (t , err )
55
- assertEqualE (t , stat .Mode (). String (), "drwx------" )
55
+ assertEqualE (t , stat .Mode (), 0700 | os . ModeDir )
56
56
})
57
57
}
58
58
59
59
func TestSnowflakeFileBasedSecureStorageManager (t * testing.T ) {
60
60
skipOnWindows (t , "file system permission is different" )
61
61
credCacheDir , err := os .MkdirTemp ("" , "" )
62
62
assertNilF (t , err )
63
- assertNilF (t , os .MkdirAll (credCacheDir , 0777 ))
63
+ assertNilF (t , os .MkdirAll (credCacheDir , os . ModePerm ))
64
64
credCacheDirEnvOverride := overrideEnv (credCacheDirEnv , credCacheDir )
65
65
defer credCacheDirEnvOverride .rollback ()
66
66
ssm , err := newFileBasedSecureStorageManager ()
67
67
assertNilF (t , err )
68
68
69
- t .Run ("success " , func (t * testing.T ) {
69
+ t .Run ("store single token " , func (t * testing.T ) {
70
70
tokenSpec := newMfaTokenSpec ("host.com" , "johndoe" )
71
71
cred := "token123"
72
72
ssm .setCredential (tokenSpec , cred )
@@ -75,6 +75,44 @@ func TestSnowflakeFileBasedSecureStorageManager(t *testing.T) {
75
75
assertEqualE (t , ssm .getCredential (tokenSpec ), "" )
76
76
})
77
77
78
+ t .Run ("store tokens of different types, hosts and users" , func (t * testing.T ) {
79
+ mfaTokenSpec := newMfaTokenSpec ("host.com" , "johndoe" )
80
+ mfaCred := "token12"
81
+ idTokenSpec := newIDTokenSpec ("host.com" , "johndoe" )
82
+ idCred := "token34"
83
+ idTokenSpec2 := newIDTokenSpec ("host.org" , "johndoe" )
84
+ idCred2 := "token56"
85
+ idTokenSpec3 := newIDTokenSpec ("host.com" , "someoneelse" )
86
+ idCred3 := "token78"
87
+ ssm .setCredential (mfaTokenSpec , mfaCred )
88
+ ssm .setCredential (idTokenSpec , idCred )
89
+ ssm .setCredential (idTokenSpec2 , idCred2 )
90
+ ssm .setCredential (idTokenSpec3 , idCred3 )
91
+ assertEqualE (t , ssm .getCredential (mfaTokenSpec ), mfaCred )
92
+ assertEqualE (t , ssm .getCredential (idTokenSpec ), idCred )
93
+ assertEqualE (t , ssm .getCredential (idTokenSpec2 ), idCred2 )
94
+ assertEqualE (t , ssm .getCredential (idTokenSpec3 ), idCred3 )
95
+ ssm .deleteCredential (mfaTokenSpec )
96
+ assertEqualE (t , ssm .getCredential (mfaTokenSpec ), "" )
97
+ assertEqualE (t , ssm .getCredential (idTokenSpec ), idCred )
98
+ assertEqualE (t , ssm .getCredential (idTokenSpec2 ), idCred2 )
99
+ assertEqualE (t , ssm .getCredential (idTokenSpec3 ), idCred3 )
100
+ })
101
+
102
+ t .Run ("override single token" , func (t * testing.T ) {
103
+ mfaTokenSpec := newMfaTokenSpec ("host.com" , "johndoe" )
104
+ mfaCred := "token123"
105
+ idTokenSpec := newIDTokenSpec ("host.com" , "johndoe" )
106
+ idCred := "token456"
107
+ ssm .setCredential (mfaTokenSpec , mfaCred )
108
+ ssm .setCredential (idTokenSpec , idCred )
109
+ assertEqualE (t , ssm .getCredential (mfaTokenSpec ), mfaCred )
110
+ mfaCredOverride := "token789"
111
+ ssm .setCredential (mfaTokenSpec , mfaCredOverride )
112
+ assertEqualE (t , ssm .getCredential (mfaTokenSpec ), mfaCredOverride )
113
+ ssm .setCredential (idTokenSpec , idCred )
114
+ })
115
+
78
116
t .Run ("unlock stale cache" , func (t * testing.T ) {
79
117
startTime := time .Now ()
80
118
assertNilF (t , os .Mkdir (ssm .lockPath (), 0o700 ))
0 commit comments