Conditions | 7 |
Total Lines | 84 |
Code Lines | 62 |
Lines | 0 |
Ratio | 0 % |
Changes | 0 |
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
1 | package providers |
||
198 | func TestProfileCredentialsProviderGetCredentials(t *testing.T) { |
||
199 | originHttpDo := httpDo |
||
200 | defer func() { httpDo = originHttpDo }() |
||
201 | rollback := utils.Memory("ALIBABA_CLOUD_CREDENTIALS_FILE") |
||
202 | defer func() { |
||
203 | getHomePath = utils.GetHomePath |
||
204 | rollback() |
||
205 | }() |
||
206 | |||
207 | // testcase: empty home |
||
208 | getHomePath = func() string { |
||
209 | return "" |
||
210 | } |
||
211 | provider, err := NewProfileCredentialsProviderBuilder().WithProfileName("custom").Build() |
||
212 | assert.Nil(t, err) |
||
213 | _, err = provider.GetCredentials() |
||
214 | assert.EqualError(t, err, "cannot found home dir") |
||
215 | |||
216 | // testcase: invalid home |
||
217 | getHomePath = func() string { |
||
218 | return "/path/invalid/home/dir" |
||
219 | } |
||
220 | |||
221 | provider, err = NewProfileCredentialsProviderBuilder().WithProfileName("custom").Build() |
||
222 | assert.Nil(t, err) |
||
223 | _, err = provider.GetCredentials() |
||
224 | assert.EqualError(t, err, "ERROR: Can not open fileopen /path/invalid/home/dir/.alibabacloud/credentials: no such file or directory") |
||
225 | |||
226 | // testcase: specify credentials file with env |
||
227 | os.Setenv("ALIBABA_CLOUD_CREDENTIALS_FILE", "/path/to/credentials.invalid") |
||
228 | provider, err = NewProfileCredentialsProviderBuilder().WithProfileName("custom").Build() |
||
229 | assert.Nil(t, err) |
||
230 | _, err = provider.GetCredentials() |
||
231 | assert.EqualError(t, err, "ERROR: Can not open fileopen /path/to/credentials.invalid: no such file or directory") |
||
232 | os.Unsetenv("ALIBABA_CLOUD_CREDENTIALS_FILE") |
||
233 | |||
234 | // get from credentials file |
||
235 | getHomePath = func() string { |
||
236 | wd, _ := os.Getwd() |
||
237 | return path.Join(wd, "fixtures") |
||
238 | } |
||
239 | |||
240 | provider, err = NewProfileCredentialsProviderBuilder().WithProfileName("custom").Build() |
||
241 | assert.Nil(t, err) |
||
242 | _, err = provider.GetCredentials() |
||
243 | assert.EqualError(t, err, "ERROR: Can not load sectionsection \"custom\" does not exist") |
||
244 | |||
245 | provider, err = NewProfileCredentialsProviderBuilder().Build() |
||
246 | assert.Nil(t, err) |
||
247 | cc, err := provider.GetCredentials() |
||
248 | assert.Nil(t, err) |
||
249 | assert.Equal(t, &Credentials{AccessKeyId: "foo", AccessKeySecret: "bar", SecurityToken: "", ProviderName: "profile/static_ak"}, cc) |
||
250 | |||
251 | // get credentials again |
||
252 | cc, err = provider.GetCredentials() |
||
253 | assert.Nil(t, err) |
||
254 | assert.Equal(t, &Credentials{AccessKeyId: "foo", AccessKeySecret: "bar", SecurityToken: "", ProviderName: "profile/static_ak"}, cc) |
||
255 | |||
256 | httpDo = func(req *httputil.Request) (res *httputil.Response, err error) { |
||
257 | res = &httputil.Response{ |
||
258 | StatusCode: 200, |
||
259 | Body: []byte(`{"Credentials": {"AccessKeyId":"akid","AccessKeySecret":"aksecret","Expiration":"2021-10-20T04:27:09Z","SecurityToken":"ststoken"}}`), |
||
260 | } |
||
261 | return |
||
262 | } |
||
263 | provider, err = NewProfileCredentialsProviderBuilder().WithProfileName("ram").Build() |
||
264 | assert.Nil(t, err) |
||
265 | cc, err = provider.GetCredentials() |
||
266 | assert.Nil(t, err) |
||
267 | assert.Equal(t, "akid", cc.AccessKeyId) |
||
268 | assert.Equal(t, "aksecret", cc.AccessKeySecret) |
||
269 | assert.Equal(t, "ststoken", cc.SecurityToken) |
||
270 | assert.Equal(t, "profile/ram_role_arn/static_ak", cc.ProviderName) |
||
271 | |||
272 | provider.innerProvider = new(testProvider) |
||
273 | cc, err = provider.GetCredentials() |
||
274 | assert.Nil(t, err) |
||
275 | assert.Equal(t, "test", cc.AccessKeyId) |
||
276 | assert.Equal(t, "test", cc.AccessKeySecret) |
||
277 | assert.Equal(t, "profile/test", cc.ProviderName) |
||
278 | |||
279 | provider.innerProvider = new(testErrorProvider) |
||
280 | _, err = provider.GetCredentials() |
||
281 | assert.Equal(t, "error", err.Error()) |
||
282 | } |
||
283 |