@@ -80,14 +80,19 @@ users:
80
80
}()
81
81
82
82
tests := []struct {
83
- desc string
84
- createFakeCredFile bool
85
- createFakeKubeConfig bool
86
- kubeconfig string
87
- nodeID string
88
- userAgent string
89
- allowEmptyCloudConfig bool
90
- expectedErr error
83
+ desc string
84
+ createFakeCredFile bool
85
+ createFakeKubeConfig bool
86
+ setFederatedWorkloadIdentityEnv bool
87
+ kubeconfig string
88
+ nodeID string
89
+ userAgent string
90
+ allowEmptyCloudConfig bool
91
+ expectedErr error
92
+ aadFederatedTokenFile string
93
+ useFederatedWorkloadIdentityExtension bool
94
+ aadClientID string
95
+ tenantID string
91
96
}{
92
97
{
93
98
desc : "out of cluster, no kubeconfig, no credential file" ,
@@ -134,6 +139,20 @@ users:
134
139
allowEmptyCloudConfig : true ,
135
140
expectedErr : nil ,
136
141
},
142
+ {
143
+ desc : "[success] get azure client with workload identity" ,
144
+ createFakeKubeConfig : true ,
145
+ createFakeCredFile : true ,
146
+ setFederatedWorkloadIdentityEnv : true ,
147
+ kubeconfig : fakeKubeConfig ,
148
+ nodeID : "" ,
149
+ userAgent : "useragent" ,
150
+ useFederatedWorkloadIdentityExtension : true ,
151
+ aadFederatedTokenFile : "fake-token-file" ,
152
+ aadClientID : "fake-client-id" ,
153
+ tenantID : "fake-tenant-id" ,
154
+ expectedErr : nil ,
155
+ },
137
156
}
138
157
139
158
for _ , test := range tests {
@@ -142,7 +161,7 @@ users:
142
161
t .Error (err )
143
162
}
144
163
defer func () {
145
- if err := os .Remove (fakeKubeConfig ); err != nil {
164
+ if err := os .Remove (fakeKubeConfig ); err != nil && ! os . IsNotExist ( err ) {
146
165
t .Error (err )
147
166
}
148
167
}()
@@ -156,7 +175,7 @@ users:
156
175
t .Error (err )
157
176
}
158
177
defer func () {
159
- if err := os .Remove (fakeCredFile ); err != nil {
178
+ if err := os .Remove (fakeCredFile ); err != nil && ! os . IsNotExist ( err ) {
160
179
t .Error (err )
161
180
}
162
181
}()
@@ -176,6 +195,12 @@ users:
176
195
}
177
196
continue
178
197
}
198
+ if test .setFederatedWorkloadIdentityEnv {
199
+ t .Setenv ("AZURE_TENANT_ID" , test .tenantID )
200
+ t .Setenv ("AZURE_CLIENT_ID" , test .aadClientID )
201
+ t .Setenv ("AZURE_FEDERATED_TOKEN_FILE" , test .aadFederatedTokenFile )
202
+ }
203
+
179
204
cloud , err := GetCloudProvider (context .Background (), kubeClient , test .nodeID , "" , "" , test .userAgent , test .allowEmptyCloudConfig )
180
205
if ! reflect .DeepEqual (err , test .expectedErr ) && test .expectedErr != nil && ! strings .Contains (err .Error (), test .expectedErr .Error ()) {
181
206
t .Errorf ("desc: %s,\n input: %q, GetCloudProvider err: %v, expectedErr: %v" , test .desc , test .kubeconfig , err , test .expectedErr )
@@ -185,6 +210,10 @@ users:
185
210
} else {
186
211
assert .Equal (t , cloud .Environment .StorageEndpointSuffix , storage .DefaultBaseURL )
187
212
assert .Equal (t , cloud .UserAgent , test .userAgent )
213
+ assert .Equal (t , cloud .AADFederatedTokenFile , test .aadFederatedTokenFile )
214
+ assert .Equal (t , cloud .UseFederatedWorkloadIdentityExtension , test .useFederatedWorkloadIdentityExtension )
215
+ assert .Equal (t , cloud .AADClientID , test .aadClientID )
216
+ assert .Equal (t , cloud .TenantID , test .tenantID )
188
217
}
189
218
}
190
219
}
0 commit comments