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 ( a7ec9d...f14615 )
by
unknown
05:47
created

providers.TestProfileCredentialsProviderBuilder   A

Complexity

Conditions 1

Size

Total Lines 18
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 11
nop 1
dl 0
loc 18
rs 9.85
c 0
b 0
f 0
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
51
[noram]
52
type = ram_role_arn
53
access_key_secret = bar
54
role_arn = role_arn
55
role_session_name = session_name
56
57
[emptyram]
58
type = ram_role_arn
59
access_key_id =
60
access_key_secret = bar
61
role_arn = role_arn
62
role_session_name = session_name
63
64
[rsa]
65
type = rsa_key_pair
66
public_key_id = publicKeyId
67
private_key_file = ./pk.pem
68
69
[norsa]
70
type = rsa_key_pair
71
public_key_id = publicKeyId
72
73
[emptyrsa]
74
type = rsa_key_pair
75
public_key_id = publicKeyId
76
private_key_file =
77
78
[error_rsa]
79
type = rsa_key_pair
80
public_key_id = publicKeyId
81
private_key_file = ./pk_error.pem
82
83
[error_type]
84
type = error_type
85
public_key_id = publicKeyId
86
private_key_file = ./pk_error.pem
87
`
88
89
func TestProfileCredentialsProviderBuilder(t *testing.T) {
90
	rollback := utils.Memory("ALIBABA_CLOUD_PROFILE")
91
	defer rollback()
92
93
	// profile name from specified
94
	provider := NewProfileCredentialsProviderBuilder().WithProfileName("custom").Build()
95
	assert.Equal(t, "custom", provider.profileName)
96
97
	// profile name from env
98
	os.Setenv("ALIBABA_CLOUD_PROFILE", "profile_from_env")
99
	provider = NewProfileCredentialsProviderBuilder().Build()
100
101
	assert.Equal(t, "profile_from_env", provider.profileName)
102
103
	// profile name from default
104
	os.Setenv("ALIBABA_CLOUD_PROFILE", "")
105
	provider = NewProfileCredentialsProviderBuilder().Build()
106
	assert.Equal(t, "default", provider.profileName)
107
}
108
109
func TestProfileCredentialsProvider_getCredentialsProvider(t *testing.T) {
110
	provider := NewProfileCredentialsProviderBuilder().WithProfileName("custom").Build()
111
	_, err := provider.getCredentialsProvider(ini.Empty())
112
	assert.NotNil(t, err)
113
	assert.EqualError(t, err, "ERROR: Can not load sectionsection \"custom\" does not exist")
114
115
	file, err := ini.Load([]byte(inistr))
116
	assert.Nil(t, err)
117
	assert.NotNil(t, file)
118
119
	// no type
120
	provider = NewProfileCredentialsProviderBuilder().WithProfileName("notype").Build()
121
	_, err = provider.getCredentialsProvider(file)
122
	assert.NotNil(t, err)
123
	assert.EqualError(t, err, "ERROR: Can not find credential typeerror when getting key of section \"notype\": key \"type\" not exists")
124
125
	// no ak
126
	provider = NewProfileCredentialsProviderBuilder().WithProfileName("noak").Build()
127
	_, err = provider.getCredentialsProvider(file)
128
	assert.NotNil(t, err)
129
	assert.EqualError(t, err, "ERROR: Failed to get value")
130
131
	// value is empty
132
	provider = NewProfileCredentialsProviderBuilder().WithProfileName("emptyak").Build()
133
	_, err = provider.getCredentialsProvider(file)
134
	assert.NotNil(t, err)
135
	assert.EqualError(t, err, "ERROR: Value can't be empty")
136
137
	// static ak provider
138
	provider = NewProfileCredentialsProviderBuilder().Build()
139
	cp, err := provider.getCredentialsProvider(file)
140
	assert.Nil(t, err)
141
	akcp, ok := cp.(*StaticAKCredentialsProvider)
142
	assert.True(t, ok)
143
	cc, err := akcp.GetCredentials()
144
	assert.Nil(t, err)
145
	assert.Equal(t, &Credentials{AccessKeyId: "foo", AccessKeySecret: "bar", SecurityToken: "", ProviderName: "static_ak"}, cc)
146
147
	// ecs_ram_role without rolename
148
	provider = NewProfileCredentialsProviderBuilder().WithProfileName("noecs").Build()
149
	_, err = provider.getCredentialsProvider(file)
150
	assert.EqualError(t, err, "ERROR: Failed to get value")
151
152
	// ecs_ram_role with rolename
153
	provider = NewProfileCredentialsProviderBuilder().WithProfileName("ecs").Build()
154
	cp, err = provider.getCredentialsProvider(file)
155
	assert.Nil(t, err)
156
	_, ok = cp.(*ECSRAMRoleCredentialsProvider)
157
	assert.True(t, ok)
158
159
	// ram role arn without keys
160
	provider = NewProfileCredentialsProviderBuilder().WithProfileName("noram").Build()
161
	_, err = provider.getCredentialsProvider(file)
162
	assert.EqualError(t, err, "ERROR: Failed to get value")
163
164
	// ram role arn without values
165
	provider = NewProfileCredentialsProviderBuilder().WithProfileName("emptyram").Build()
166
	_, err = provider.getCredentialsProvider(file)
167
	assert.EqualError(t, err, "ERROR: Value can't be empty")
168
169
	// normal ram role arn
170
	provider = NewProfileCredentialsProviderBuilder().WithProfileName("ram").Build()
171
	cp, err = provider.getCredentialsProvider(file)
172
	assert.Nil(t, err)
173
	_, ok = cp.(*RAMRoleARNCredentialsProvider)
174
	assert.True(t, ok)
175
176
	// unsupported type
177
	provider = NewProfileCredentialsProviderBuilder().WithProfileName("error_type").Build()
178
	_, err = provider.getCredentialsProvider(file)
179
	assert.EqualError(t, err, "ERROR: Failed to get credential")
180
}
181
182
func TestProfileCredentialsProviderGetCredentials(t *testing.T) {
183
	rollback := utils.Memory("ALIBABA_CLOUD_CREDENTIALS_FILE")
184
	defer func() {
185
		getHomePath = utils.GetHomePath
186
		rollback()
187
	}()
188
189
	// testcase: empty home
190
	getHomePath = func() string {
191
		return ""
192
	}
193
	provider := NewProfileCredentialsProviderBuilder().WithProfileName("custom").Build()
194
	_, err := provider.GetCredentials()
195
	assert.EqualError(t, err, "cannot found home dir")
196
197
	// testcase: invalid home
198
	getHomePath = func() string {
199
		return "/path/invalid/home/dir"
200
	}
201
202
	provider = NewProfileCredentialsProviderBuilder().WithProfileName("custom").Build()
203
	_, err = provider.GetCredentials()
204
	assert.EqualError(t, err, "ERROR: Can not open fileopen /path/invalid/home/dir/.alibabacloud/credentials: no such file or directory")
205
206
	// testcase: specify credentials file with env
207
	os.Setenv("ALIBABA_CLOUD_CREDENTIALS_FILE", "/path/to/credentials.invalid")
208
	provider = NewProfileCredentialsProviderBuilder().WithProfileName("custom").Build()
209
	_, err = provider.GetCredentials()
210
	assert.EqualError(t, err, "ERROR: Can not open fileopen /path/to/credentials.invalid: no such file or directory")
211
	os.Unsetenv("ALIBABA_CLOUD_CREDENTIALS_FILE")
212
213
	// get from credentials file
214
	getHomePath = func() string {
215
		wd, _ := os.Getwd()
216
		return path.Join(wd, "fixtures")
217
	}
218
219
	provider = NewProfileCredentialsProviderBuilder().WithProfileName("custom").Build()
220
	_, err = provider.GetCredentials()
221
	assert.EqualError(t, err, "ERROR: Can not load sectionsection \"custom\" does not exist")
222
223
	provider = NewProfileCredentialsProviderBuilder().Build()
224
	cc, err := provider.GetCredentials()
225
	assert.Nil(t, err)
226
	assert.Equal(t, &Credentials{AccessKeyId: "foo", AccessKeySecret: "bar", SecurityToken: "", ProviderName: "profile/static_ak"}, cc)
227
228
	// get credentials again
229
	cc, err = provider.GetCredentials()
230
	assert.Nil(t, err)
231
	assert.Equal(t, &Credentials{AccessKeyId: "foo", AccessKeySecret: "bar", SecurityToken: "", ProviderName: "profile/static_ak"}, cc)
232
}
233