@@ -21,15 +21,17 @@ import (
21
21
"fmt"
22
22
"os"
23
23
"reflect"
24
+ "runtime"
24
25
"strings"
26
+ "syscall"
25
27
"testing"
26
28
27
29
"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
28
30
"github.com/Azure/azure-sdk-for-go/storage"
29
- "go.uber.org/mock/gomock"
30
-
31
31
"github.com/Azure/go-autorest/autorest/azure"
32
32
"github.com/stretchr/testify/assert"
33
+ "go.uber.org/mock/gomock"
34
+ "k8s.io/client-go/kubernetes"
33
35
34
36
"sigs.k8s.io/blob-csi-driver/pkg/util"
35
37
"sigs.k8s.io/cloud-provider-azure/pkg/azureclients/subnetclient/mocksubnetclient"
@@ -61,12 +63,7 @@ kind: Config
61
63
users:
62
64
- name: foo-user
63
65
user:
64
- exec:
65
- apiVersion: client.authentication.k8s.io/v1alpha1
66
- args:
67
- - arg-1
68
- - arg-2
69
- command: foo-command
66
+ token: 2fef7f7c64127579b48d61434c44ad46d87793169ee6a4199af3ce16a3cf5be3371
70
67
`
71
68
72
69
err := createTestFile (emptyKubeConfig )
@@ -90,35 +87,25 @@ users:
90
87
expectedErr error
91
88
}{
92
89
{
93
- desc : "out of cluster, no kubeconfig, no credential file" ,
94
- kubeconfig : "" ,
90
+ desc : "[success] out of cluster, no kubeconfig, no credential file" ,
95
91
nodeID : "" ,
96
92
allowEmptyCloudConfig : true ,
97
93
expectedErr : nil ,
98
94
},
99
95
{
100
- desc : "[failure][disallowEmptyCloudConfig] out of cluster, no kubeconfig, no credential file" ,
101
- kubeconfig : "" ,
96
+ desc : "[linux][failure][disallowEmptyCloudConfig] out of cluster, no kubeconfig, no credential file" ,
102
97
nodeID : "" ,
103
98
allowEmptyCloudConfig : false ,
104
- expectedErr : nil ,
99
+ expectedErr : syscall . ENOENT ,
105
100
},
106
101
{
107
- desc : "[failure] out of cluster & in cluster, specify a non-exist kubeconfig, no credential file" ,
108
- kubeconfig : "/tmp/non-exist.json" ,
102
+ desc : "[windows][failure][disallowEmptyCloudConfig] out of cluster, no kubeconfig, no credential file" ,
109
103
nodeID : "" ,
110
- allowEmptyCloudConfig : true ,
111
- expectedErr : nil ,
112
- },
113
- {
114
- desc : "[failure] out of cluster & in cluster, specify a empty kubeconfig, no credential file" ,
115
- kubeconfig : emptyKubeConfig ,
116
- nodeID : "" ,
117
- allowEmptyCloudConfig : true ,
118
- expectedErr : fmt .Errorf ("invalid configuration: no configuration has been provided, try setting KUBERNETES_MASTER environment variable" ),
104
+ allowEmptyCloudConfig : false ,
105
+ expectedErr : syscall .ENOTDIR ,
119
106
},
120
107
{
121
- desc : "[failure ] out of cluster & in cluster, specify a fake kubeconfig, no credential file" ,
108
+ desc : "[success ] out of cluster & in cluster, specify a fake kubeconfig, no credential file" ,
122
109
createFakeKubeConfig : true ,
123
110
kubeconfig : fakeKubeConfig ,
124
111
nodeID : "" ,
@@ -128,15 +115,21 @@ users:
128
115
{
129
116
desc : "[success] out of cluster & in cluster, no kubeconfig, a fake credential file" ,
130
117
createFakeCredFile : true ,
131
- kubeconfig : "" ,
132
118
nodeID : "" ,
133
119
userAgent : "useragent" ,
134
120
allowEmptyCloudConfig : true ,
135
121
expectedErr : nil ,
136
122
},
137
123
}
138
124
125
+ var kubeClient kubernetes.Interface
139
126
for _ , test := range tests {
127
+ if strings .HasPrefix (test .desc , "[linux]" ) && runtime .GOOS != "linux" {
128
+ continue
129
+ }
130
+ if strings .HasPrefix (test .desc , "[windows]" ) && runtime .GOOS != "windows" {
131
+ continue
132
+ }
140
133
if test .createFakeKubeConfig {
141
134
if err := createTestFile (fakeKubeConfig ); err != nil {
142
135
t .Error (err )
@@ -150,6 +143,13 @@ users:
150
143
if err := os .WriteFile (fakeKubeConfig , []byte (fakeContent ), 0666 ); err != nil {
151
144
t .Error (err )
152
145
}
146
+
147
+ kubeClient , err = util .GetKubeClient (test .kubeconfig , 25.0 , 50 , "" )
148
+ if err != nil {
149
+ t .Error (err )
150
+ }
151
+ } else {
152
+ kubeClient = nil
153
153
}
154
154
if test .createFakeCredFile {
155
155
if err := createTestFile (fakeCredFile ); err != nil {
@@ -169,17 +169,10 @@ users:
169
169
}
170
170
os .Setenv (DefaultAzureCredentialFileEnv , fakeCredFile )
171
171
}
172
- kubeClient , err := util .GetKubeClient (test .kubeconfig , 25.0 , 50 , "" )
173
- if err != nil {
174
- if ! reflect .DeepEqual (err , test .expectedErr ) && test .expectedErr != nil && ! strings .Contains (err .Error (), test .expectedErr .Error ()) {
175
- t .Errorf ("desc: %s,\n input: %q, GetCloudProvider err: %v, expectedErr: %v" , test .desc , test .kubeconfig , err , test .expectedErr )
176
- }
177
- continue
178
- }
172
+
179
173
cloud , err := GetCloudProvider (context .Background (), kubeClient , test .nodeID , "" , "" , test .userAgent , test .allowEmptyCloudConfig )
180
- if ! reflect .DeepEqual (err , test .expectedErr ) && test .expectedErr != nil && ! strings .Contains (err .Error (), test .expectedErr .Error ()) {
181
- t .Errorf ("desc: %s,\n input: %q, GetCloudProvider err: %v, expectedErr: %v" , test .desc , test .kubeconfig , err , test .expectedErr )
182
- }
174
+ assert .ErrorIs (t , err , test .expectedErr )
175
+
183
176
if cloud == nil {
184
177
t .Errorf ("return value of getCloudProvider should not be nil even there is error" )
185
178
} else {
0 commit comments