@@ -38,6 +38,194 @@ var m = metadata.FakeProvider{
3838 },
3939}
4040
41+ func TestParseCredentialsFromSecret (t * testing.T ) {
42+ tests := []struct {
43+ name string
44+ secrets map [string ]string
45+ expected struct {
46+ akID string
47+ akSecret string
48+ }
49+ }{
50+ {
51+ name : "Case 1: AkID and AkSecret have valid values" ,
52+ secrets : map [string ]string {
53+ AkID : " validAkID " ,
54+ AkSecret : " validAkSecret " ,
55+ },
56+ expected : struct {
57+ akID string
58+ akSecret string
59+ }{
60+ akID : "validAkID" ,
61+ akSecret : "validAkSecret" ,
62+ },
63+ },
64+ {
65+ name : "Case 2: AkID and AkSecret are empty, but AccessKeyID and AccessKeySecret have valid values" ,
66+ secrets : map [string ]string {
67+ AkID : "" ,
68+ AkSecret : "" ,
69+ AccessKeyID : " validAccessKeyID " ,
70+ AccessKeySecret : " validAccessKeySecret " ,
71+ },
72+ expected : struct {
73+ akID string
74+ akSecret string
75+ }{
76+ akID : "validAccessKeyID" ,
77+ akSecret : "validAccessKeySecret" ,
78+ },
79+ },
80+ {
81+ name : "Case 3: AkSecret is empty, but AccessKeyID and AccessKeySecret have valid values" ,
82+ secrets : map [string ]string {
83+ AkID : "" ,
84+ AkSecret : "AkSecret" ,
85+ AccessKeyID : " validAccessKeyID " ,
86+ AccessKeySecret : " validAccessKeySecret " ,
87+ },
88+ expected : struct {
89+ akID string
90+ akSecret string
91+ }{
92+ akID : "" ,
93+ akSecret : "AkSecret" ,
94+ },
95+ },
96+ {
97+ name : "Case 4: All fields are set, but AccessKeyID and AccessKeySecret have valid values" ,
98+ secrets : map [string ]string {
99+ AkID : "AkID" ,
100+ AkSecret : "AkSecret" ,
101+ AccessKeyID : " validAccessKeyID " ,
102+ AccessKeySecret : " validAccessKeySecret " ,
103+ },
104+ expected : struct {
105+ akID string
106+ akSecret string
107+ }{
108+ akID : "AkID" ,
109+ akSecret : "AkSecret" ,
110+ },
111+ },
112+ {
113+ name : "Case 5: All keys have empty values" ,
114+ secrets : map [string ]string {
115+ AkID : "" ,
116+ AkSecret : "" ,
117+ AccessKeyID : "" ,
118+ AccessKeySecret : "" ,
119+ },
120+ expected : struct {
121+ akID string
122+ akSecret string
123+ }{
124+ akID : "" ,
125+ akSecret : "" ,
126+ },
127+ },
128+ {
129+ name : "Case 6: Missing some keys, but others have valid values" ,
130+ secrets : map [string ]string {
131+ AccessKeyID : " validAccessKeyID " ,
132+ AccessKeySecret : " validAccessKeySecret " ,
133+ },
134+ expected : struct {
135+ akID string
136+ akSecret string
137+ }{
138+ akID : "validAccessKeyID" ,
139+ akSecret : "validAccessKeySecret" ,
140+ },
141+ },
142+ }
143+
144+ for _ , tt := range tests {
145+ t .Run (tt .name , func (t * testing.T ) {
146+ akID , akSecret := parseCredentialsFromSecret (tt .secrets )
147+ assert .Equal (t , tt .expected .akID , akID )
148+ assert .Equal (t , tt .expected .akSecret , akSecret )
149+ })
150+ }
151+ }
152+
153+ func TestParseOptons_credentialsCompatibility (t * testing.T ) {
154+ tests := []struct {
155+ name string
156+ options map [string ]string
157+ secrets map [string ]string
158+ akID string
159+ akSecret string
160+ }{
161+ {
162+ name : "allows obtaining the credentials with the former way" ,
163+ secrets : map [string ]string {
164+ AkID : "validAkID" ,
165+ AkSecret : "validAkSecret" ,
166+ },
167+ akID : "validAkID" ,
168+ akSecret : "validAkSecret" ,
169+ },
170+ {
171+ name : "allows the secret is empty" ,
172+ },
173+ {
174+ name : "prioritizes obtaining the credentials with the former way" ,
175+ secrets : map [string ]string {
176+ AkID : "validAkID" ,
177+ AkSecret : "validAkSecret" ,
178+ AccessKeyID : "validAccessKeyID" ,
179+ AccessKeySecret : "validAccessKeySecret" ,
180+ },
181+ akID : "validAkID" ,
182+ akSecret : "validAkSecret" ,
183+ },
184+ {
185+ name : "allows obtaining the credentials with the latter way" ,
186+ secrets : map [string ]string {
187+ AccessKeyID : "validAccessKeyID" ,
188+ AccessKeySecret : "validAccessKeySecret" ,
189+ },
190+ akID : "validAccessKeyID" ,
191+ akSecret : "validAccessKeySecret" ,
192+ },
193+ {
194+ name : "ingnore invalid credentials" ,
195+ secrets : map [string ]string {
196+ AkID : "validAkID" ,
197+ AccessKeySecret : "validAccessKeySecret" ,
198+ },
199+ akID : "validAkID" ,
200+ akSecret : "" ,
201+ },
202+ {
203+ name : "options overwrite the credentials" ,
204+ secrets : map [string ]string {
205+ AkID : "validAkID" ,
206+ AkSecret : "validAkSecret" ,
207+ AccessKeyID : "validAccessKeyID" ,
208+ AccessKeySecret : "validAccessKeySecret" ,
209+ },
210+ options : map [string ]string {
211+ AkID : "optionsAkID" ,
212+ AkSecret : "optionsAkSecret" ,
213+ },
214+ akID : "optionsAkID" ,
215+ akSecret : "optionsAkSecret" ,
216+ },
217+ }
218+ for _ , tt := range tests {
219+ t .Run (tt .name , func (t * testing.T ) {
220+ gotOptions := parseOptions (tt .options ,
221+ tt .secrets , []* csi.VolumeCapability {},
222+ false , "" , false , m )
223+ assert .Equal (t , tt .akID , gotOptions .AkID )
224+ assert .Equal (t , tt .akSecret , gotOptions .AkSecret )
225+ })
226+ }
227+ }
228+
41229func Test_parseOptions (t * testing.T ) {
42230 t .Setenv ("ALIBABA_CLOUD_NETWORK_TYPE" , "vpc" )
43231
0 commit comments