GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Passed
Push — master ( 47c2ea...25ec51 )
by
unknown
05:34
created

credentials/providers/profile_test.go   A

Size/Duplication

Total Lines 251
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
cc 7
eloc 122
dl 0
loc 251
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A providers.TestProfileCredentialsProviderBuilder 0 21 1
B providers.TestProfileCredentialsProviderGetCredentials 0 55 5
B providers.TestProfileCredentialsProvider_getCredentialsProvider 0 82 1
1
package providers
2
3
import (
4
	"os"
5
	"path"
6
	"testing"
7
8
	"github.com/aliyun/credentials-go/credentials/internal/utils"
9
	"github.com/stretchr/testify/assert"
10
	"gopkg.in/ini.v1"
11
)
12
13
var inistr = `
14
[default]
15
enable = true
16
type = access_key
17
access_key_id = foo
18
access_key_secret = bar
19
20
[notype]
21
access_key_id = foo
22
access_key_secret = bar
23
24
[noak]
25
type = access_key
26
access_key_secret = bar
27
28
[emptyak]
29
type = access_key
30
access_key_id =
31
access_key_secret = bar
32
33
[ecs]
34
type = ecs_ram_role
35
role_name = EcsRamRoleTest
36
37
[noecs]
38
type = ecs_ram_role
39
40
[emptyecs]
41
type = ecs_ram_role
42
role_name =
43
44
[ram]
45
type = ram_role_arn
46
access_key_id = foo
47
access_key_secret = bar
48
role_arn = role_arn
49
role_session_name = session_name
50
policy = {"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"}
51
52
[noram]
53
type = ram_role_arn
54
access_key_secret = bar
55
role_arn = role_arn
56
role_session_name = session_name
57
58
[emptyram]
59
type = ram_role_arn
60
access_key_id =
61
access_key_secret = bar
62
role_arn = role_arn
63
role_session_name = session_name
64
65
[rsa]
66
type = rsa_key_pair
67
public_key_id = publicKeyId
68
private_key_file = ./pk.pem
69
70
[norsa]
71
type = rsa_key_pair
72
public_key_id = publicKeyId
73
74
[emptyrsa]
75
type = rsa_key_pair
76
public_key_id = publicKeyId
77
private_key_file =
78
79
[error_rsa]
80
type = rsa_key_pair
81
public_key_id = publicKeyId
82
private_key_file = ./pk_error.pem
83
84
[error_type]
85
type = error_type
86
public_key_id = publicKeyId
87
private_key_file = ./pk_error.pem
88
`
89
90
func TestProfileCredentialsProviderBuilder(t *testing.T) {
91
	rollback := utils.Memory("ALIBABA_CLOUD_PROFILE")
92
	defer rollback()
93
94
	// profile name from specified
95
	provider, err := NewProfileCredentialsProviderBuilder().WithProfileName("custom").Build()
96
	assert.Nil(t, err)
97
	assert.Equal(t, "custom", provider.profileName)
98
99
	// profile name from env
100
	os.Setenv("ALIBABA_CLOUD_PROFILE", "profile_from_env")
101
	provider, err = NewProfileCredentialsProviderBuilder().Build()
102
	assert.Nil(t, err)
103
104
	assert.Equal(t, "profile_from_env", provider.profileName)
105
106
	// profile name from default
107
	os.Setenv("ALIBABA_CLOUD_PROFILE", "")
108
	provider, err = NewProfileCredentialsProviderBuilder().Build()
109
	assert.Nil(t, err)
110
	assert.Equal(t, "default", provider.profileName)
111
}
112
113
func TestProfileCredentialsProvider_getCredentialsProvider(t *testing.T) {
114
	provider, err := NewProfileCredentialsProviderBuilder().WithProfileName("custom").Build()
115
	assert.Nil(t, err)
116
	_, err = provider.getCredentialsProvider(ini.Empty())
117
	assert.NotNil(t, err)
118
	assert.EqualError(t, err, "ERROR: Can not load sectionsection \"custom\" does not exist")
119
120
	file, err := ini.Load([]byte(inistr))
121
	assert.Nil(t, err)
122
	assert.NotNil(t, file)
123
124
	// no type
125
	provider, err = NewProfileCredentialsProviderBuilder().WithProfileName("notype").Build()
126
	assert.Nil(t, err)
127
	_, err = provider.getCredentialsProvider(file)
128
	assert.NotNil(t, err)
129
	assert.EqualError(t, err, "ERROR: Can not find credential typeerror when getting key of section \"notype\": key \"type\" not exists")
130
131
	// no ak
132
	provider, err = NewProfileCredentialsProviderBuilder().WithProfileName("noak").Build()
133
	assert.Nil(t, err)
134
	_, err = provider.getCredentialsProvider(file)
135
	assert.NotNil(t, err)
136
	assert.EqualError(t, err, "ERROR: Failed to get value")
137
138
	// value is empty
139
	provider, err = NewProfileCredentialsProviderBuilder().WithProfileName("emptyak").Build()
140
	assert.Nil(t, err)
141
	_, err = provider.getCredentialsProvider(file)
142
	assert.NotNil(t, err)
143
	assert.EqualError(t, err, "ERROR: Value can't be empty")
144
145
	// static ak provider
146
	provider, err = NewProfileCredentialsProviderBuilder().Build()
147
	assert.Nil(t, err)
148
	cp, err := provider.getCredentialsProvider(file)
149
	assert.Nil(t, err)
150
	akcp, ok := cp.(*StaticAKCredentialsProvider)
151
	assert.True(t, ok)
152
	cc, err := akcp.GetCredentials()
153
	assert.Nil(t, err)
154
	assert.Equal(t, &Credentials{AccessKeyId: "foo", AccessKeySecret: "bar", SecurityToken: "", ProviderName: "static_ak"}, cc)
155
156
	// ecs_ram_role without rolename
157
	provider, err = NewProfileCredentialsProviderBuilder().WithProfileName("noecs").Build()
158
	assert.Nil(t, err)
159
	_, err = provider.getCredentialsProvider(file)
160
	assert.EqualError(t, err, "ERROR: Failed to get value")
161
162
	// ecs_ram_role with rolename
163
	provider, err = NewProfileCredentialsProviderBuilder().WithProfileName("ecs").Build()
164
	assert.Nil(t, err)
165
	cp, err = provider.getCredentialsProvider(file)
166
	assert.Nil(t, err)
167
	_, ok = cp.(*ECSRAMRoleCredentialsProvider)
168
	assert.True(t, ok)
169
170
	// ram role arn without keys
171
	provider, err = NewProfileCredentialsProviderBuilder().WithProfileName("noram").Build()
172
	assert.Nil(t, err)
173
	_, err = provider.getCredentialsProvider(file)
174
	assert.EqualError(t, err, "ERROR: Failed to get value")
175
176
	// ram role arn without values
177
	provider, err = NewProfileCredentialsProviderBuilder().WithProfileName("emptyram").Build()
178
	assert.Nil(t, err)
179
	_, err = provider.getCredentialsProvider(file)
180
	assert.EqualError(t, err, "ERROR: Value can't be empty")
181
182
	// normal ram role arn
183
	provider, err = NewProfileCredentialsProviderBuilder().WithProfileName("ram").Build()
184
	assert.Nil(t, err)
185
	cp, err = provider.getCredentialsProvider(file)
186
	assert.Nil(t, err)
187
	_, ok = cp.(*RAMRoleARNCredentialsProvider)
188
	assert.True(t, ok)
189
190
	// unsupported type
191
	provider, err = NewProfileCredentialsProviderBuilder().WithProfileName("error_type").Build()
192
	assert.Nil(t, err)
193
	_, err = provider.getCredentialsProvider(file)
194
	assert.EqualError(t, err, "ERROR: Failed to get credential")
195
}
196
197
func TestProfileCredentialsProviderGetCredentials(t *testing.T) {
198
	rollback := utils.Memory("ALIBABA_CLOUD_CREDENTIALS_FILE")
199
	defer func() {
200
		getHomePath = utils.GetHomePath
201
		rollback()
202
	}()
203
204
	// testcase: empty home
205
	getHomePath = func() string {
206
		return ""
207
	}
208
	provider, err := NewProfileCredentialsProviderBuilder().WithProfileName("custom").Build()
209
	assert.Nil(t, err)
210
	_, err = provider.GetCredentials()
211
	assert.EqualError(t, err, "cannot found home dir")
212
213
	// testcase: invalid home
214
	getHomePath = func() string {
215
		return "/path/invalid/home/dir"
216
	}
217
218
	provider, err = NewProfileCredentialsProviderBuilder().WithProfileName("custom").Build()
219
	assert.Nil(t, err)
220
	_, err = provider.GetCredentials()
221
	assert.EqualError(t, err, "ERROR: Can not open fileopen /path/invalid/home/dir/.alibabacloud/credentials: no such file or directory")
222
223
	// testcase: specify credentials file with env
224
	os.Setenv("ALIBABA_CLOUD_CREDENTIALS_FILE", "/path/to/credentials.invalid")
225
	provider, err = NewProfileCredentialsProviderBuilder().WithProfileName("custom").Build()
226
	assert.Nil(t, err)
227
	_, err = provider.GetCredentials()
228
	assert.EqualError(t, err, "ERROR: Can not open fileopen /path/to/credentials.invalid: no such file or directory")
229
	os.Unsetenv("ALIBABA_CLOUD_CREDENTIALS_FILE")
230
231
	// get from credentials file
232
	getHomePath = func() string {
233
		wd, _ := os.Getwd()
234
		return path.Join(wd, "fixtures")
235
	}
236
237
	provider, err = NewProfileCredentialsProviderBuilder().WithProfileName("custom").Build()
238
	assert.Nil(t, err)
239
	_, err = provider.GetCredentials()
240
	assert.EqualError(t, err, "ERROR: Can not load sectionsection \"custom\" does not exist")
241
242
	provider, err = NewProfileCredentialsProviderBuilder().Build()
243
	assert.Nil(t, err)
244
	cc, err := provider.GetCredentials()
245
	assert.Nil(t, err)
246
	assert.Equal(t, &Credentials{AccessKeyId: "foo", AccessKeySecret: "bar", SecurityToken: "", ProviderName: "profile/static_ak"}, cc)
247
248
	// get credentials again
249
	cc, err = provider.GetCredentials()
250
	assert.Nil(t, err)
251
	assert.Equal(t, &Credentials{AccessKeyId: "foo", AccessKeySecret: "bar", SecurityToken: "", ProviderName: "profile/static_ak"}, cc)
252
}
253