@@ -77,48 +77,87 @@ users:
77
77
}()
78
78
79
79
tests := []struct {
80
- desc string
81
- createFakeCredFile bool
82
- createFakeKubeConfig bool
83
- kubeconfig string
84
- nodeID string
85
- userAgent string
86
- allowEmptyCloudConfig bool
87
- expectedErr error
80
+ desc string
81
+ createFakeCredFile bool
82
+ createFakeKubeConfig bool
83
+ setFederatedWorkloadIdentityEnv bool
84
+ kubeconfig string
85
+ nodeID string
86
+ userAgent string
87
+ allowEmptyCloudConfig bool
88
+ expectedErr error
89
+ aadFederatedTokenFile string
90
+ useFederatedWorkloadIdentityExtension bool
91
+ aadClientID string
92
+ tenantID string
88
93
}{
89
94
{
90
- desc : "[success] out of cluster, no kubeconfig, no credential file" ,
91
- nodeID : "" ,
92
- allowEmptyCloudConfig : true ,
93
- expectedErr : nil ,
95
+ desc : "[success] out of cluster, no kubeconfig, no credential file" ,
96
+ nodeID : "" ,
97
+ allowEmptyCloudConfig : true ,
98
+ aadFederatedTokenFile : "" ,
99
+ useFederatedWorkloadIdentityExtension : false ,
100
+ aadClientID : "" ,
101
+ tenantID : "" ,
102
+ expectedErr : nil ,
94
103
},
95
104
{
96
- desc : "[linux][failure][disallowEmptyCloudConfig] out of cluster, no kubeconfig, no credential file" ,
97
- nodeID : "" ,
98
- allowEmptyCloudConfig : false ,
99
- expectedErr : syscall .ENOENT ,
105
+ desc : "[linux][failure][disallowEmptyCloudConfig] out of cluster, no kubeconfig, no credential file" ,
106
+ nodeID : "" ,
107
+ allowEmptyCloudConfig : false ,
108
+ aadFederatedTokenFile : "" ,
109
+ useFederatedWorkloadIdentityExtension : false ,
110
+ aadClientID : "" ,
111
+ tenantID : "" ,
112
+ expectedErr : syscall .ENOENT ,
100
113
},
101
114
{
102
- desc : "[windows][failure][disallowEmptyCloudConfig] out of cluster, no kubeconfig, no credential file" ,
103
- nodeID : "" ,
104
- allowEmptyCloudConfig : false ,
105
- expectedErr : syscall .ENOTDIR ,
115
+ desc : "[windows][failure][disallowEmptyCloudConfig] out of cluster, no kubeconfig, no credential file" ,
116
+ nodeID : "" ,
117
+ allowEmptyCloudConfig : false ,
118
+ aadFederatedTokenFile : "" ,
119
+ useFederatedWorkloadIdentityExtension : false ,
120
+ aadClientID : "" ,
121
+ tenantID : "" ,
122
+ expectedErr : syscall .ENOTDIR ,
106
123
},
107
124
{
108
- desc : "[success] out of cluster & in cluster, specify a fake kubeconfig, no credential file" ,
109
- createFakeKubeConfig : true ,
110
- kubeconfig : fakeKubeConfig ,
111
- nodeID : "" ,
112
- allowEmptyCloudConfig : true ,
113
- expectedErr : nil ,
125
+ desc : "[success] out of cluster & in cluster, specify a fake kubeconfig, no credential file" ,
126
+ createFakeKubeConfig : true ,
127
+ kubeconfig : fakeKubeConfig ,
128
+ nodeID : "" ,
129
+ allowEmptyCloudConfig : true ,
130
+ aadFederatedTokenFile : "" ,
131
+ useFederatedWorkloadIdentityExtension : false ,
132
+ aadClientID : "" ,
133
+ tenantID : "" ,
134
+ expectedErr : nil ,
114
135
},
115
136
{
116
- desc : "[success] out of cluster & in cluster, no kubeconfig, a fake credential file" ,
117
- createFakeCredFile : true ,
118
- nodeID : "" ,
119
- userAgent : "useragent" ,
120
- allowEmptyCloudConfig : true ,
121
- expectedErr : nil ,
137
+ desc : "[success] out of cluster & in cluster, no kubeconfig, a fake credential file" ,
138
+ createFakeCredFile : true ,
139
+ nodeID : "" ,
140
+ userAgent : "useragent" ,
141
+ allowEmptyCloudConfig : true ,
142
+ aadFederatedTokenFile : "" ,
143
+ useFederatedWorkloadIdentityExtension : false ,
144
+ aadClientID : "" ,
145
+ tenantID : "" ,
146
+ expectedErr : nil ,
147
+ },
148
+ {
149
+ desc : "[success] get azure client with workload identity" ,
150
+ createFakeKubeConfig : true ,
151
+ createFakeCredFile : true ,
152
+ setFederatedWorkloadIdentityEnv : true ,
153
+ kubeconfig : fakeKubeConfig ,
154
+ nodeID : "" ,
155
+ userAgent : "useragent" ,
156
+ useFederatedWorkloadIdentityExtension : true ,
157
+ aadFederatedTokenFile : "fake-token-file" ,
158
+ aadClientID : "fake-client-id" ,
159
+ tenantID : "fake-tenant-id" ,
160
+ expectedErr : nil ,
122
161
},
123
162
}
124
163
@@ -135,7 +174,7 @@ users:
135
174
t .Error (err )
136
175
}
137
176
defer func () {
138
- if err := os .Remove (fakeKubeConfig ); err != nil {
177
+ if err := os .Remove (fakeKubeConfig ); err != nil && ! os . IsNotExist ( err ) {
139
178
t .Error (err )
140
179
}
141
180
}()
@@ -156,7 +195,7 @@ users:
156
195
t .Error (err )
157
196
}
158
197
defer func () {
159
- if err := os .Remove (fakeCredFile ); err != nil {
198
+ if err := os .Remove (fakeCredFile ); err != nil && ! os . IsNotExist ( err ) {
160
199
t .Error (err )
161
200
}
162
201
}()
@@ -169,6 +208,11 @@ users:
169
208
}
170
209
os .Setenv (DefaultAzureCredentialFileEnv , fakeCredFile )
171
210
}
211
+ if test .setFederatedWorkloadIdentityEnv {
212
+ t .Setenv ("AZURE_TENANT_ID" , test .tenantID )
213
+ t .Setenv ("AZURE_CLIENT_ID" , test .aadClientID )
214
+ t .Setenv ("AZURE_FEDERATED_TOKEN_FILE" , test .aadFederatedTokenFile )
215
+ }
172
216
173
217
cloud , err := GetCloudProvider (context .Background (), kubeClient , test .nodeID , "" , "" , test .userAgent , test .allowEmptyCloudConfig )
174
218
assert .ErrorIs (t , err , test .expectedErr )
@@ -178,6 +222,10 @@ users:
178
222
} else {
179
223
assert .Equal (t , cloud .Environment .StorageEndpointSuffix , storage .DefaultBaseURL )
180
224
assert .Equal (t , cloud .UserAgent , test .userAgent )
225
+ assert .Equal (t , cloud .AADFederatedTokenFile , test .aadFederatedTokenFile )
226
+ assert .Equal (t , cloud .UseFederatedWorkloadIdentityExtension , test .useFederatedWorkloadIdentityExtension )
227
+ assert .Equal (t , cloud .AADClientID , test .aadClientID )
228
+ assert .Equal (t , cloud .TenantID , test .tenantID )
181
229
}
182
230
}
183
231
}
0 commit comments