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 ( 115dc3...b73ef4 )
by
unknown
06:09
created

credentials/providers/default_test.go   A

Size/Duplication

Total Lines 197
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
cc 11
eloc 140
dl 0
loc 197
rs 10
c 0
b 0
f 0

6 Methods

Rating   Name   Duplication   Size   Complexity  
B providers.TestDefaultCredentialsProvider 0 88 1
A providers.*testErrorProvider.GetProviderName 0 2 1
B providers.TestDefaultCredentialsProvider_GetCredentials 0 66 6
A providers.*testProvider.GetCredentials 0 7 1
A providers.*testErrorProvider.GetCredentials 0 3 1
A providers.*testProvider.GetProviderName 0 2 1
1
package providers
2
3
import (
4
	"errors"
5
	"os"
6
	"path"
7
	"testing"
8
9
	httputil "github.com/aliyun/credentials-go/credentials/internal/http"
10
	"github.com/aliyun/credentials-go/credentials/internal/utils"
11
	"github.com/stretchr/testify/assert"
12
)
13
14
func TestDefaultCredentialsProvider(t *testing.T) {
15
	provider := NewDefaultCredentialsProvider()
16
	assert.NotNil(t, provider)
17
	assert.Len(t, provider.providerChain, 4)
18
	_, ok := provider.providerChain[0].(*EnvironmentVariableCredentialsProvider)
19
	assert.True(t, ok)
20
21
	_, ok = provider.providerChain[1].(*CLIProfileCredentialsProvider)
22
	assert.True(t, ok)
23
24
	_, ok = provider.providerChain[2].(*ProfileCredentialsProvider)
25
	assert.True(t, ok)
26
27
	_, ok = provider.providerChain[3].(*ECSRAMRoleCredentialsProvider)
28
	assert.True(t, ok)
29
30
	// Add oidc provider
31
	rollback := utils.Memory("ALIBABA_CLOUD_OIDC_TOKEN_FILE",
32
		"ALIBABA_CLOUD_OIDC_PROVIDER_ARN",
33
		"ALIBABA_CLOUD_ROLE_ARN",
34
		"ALIBABA_CLOUD_ECS_METADATA",
35
		"ALIBABA_CLOUD_CREDENTIALS_URI")
36
37
	defer rollback()
38
	os.Setenv("ALIBABA_CLOUD_OIDC_TOKEN_FILE", "/path/to/oidc.token")
39
	os.Setenv("ALIBABA_CLOUD_OIDC_PROVIDER_ARN", "oidcproviderarn")
40
	os.Setenv("ALIBABA_CLOUD_ROLE_ARN", "rolearn")
41
42
	provider = NewDefaultCredentialsProvider()
43
	assert.NotNil(t, provider)
44
	assert.Len(t, provider.providerChain, 5)
45
	_, ok = provider.providerChain[0].(*EnvironmentVariableCredentialsProvider)
46
	assert.True(t, ok)
47
48
	_, ok = provider.providerChain[1].(*OIDCCredentialsProvider)
49
	assert.True(t, ok)
50
51
	_, ok = provider.providerChain[2].(*CLIProfileCredentialsProvider)
52
	assert.True(t, ok)
53
54
	_, ok = provider.providerChain[3].(*ProfileCredentialsProvider)
55
	assert.True(t, ok)
56
57
	_, ok = provider.providerChain[4].(*ECSRAMRoleCredentialsProvider)
58
	assert.True(t, ok)
59
60
	// Add ecs ram role name
61
	os.Setenv("ALIBABA_CLOUD_ECS_METADATA", "rolename")
62
	provider = NewDefaultCredentialsProvider()
63
	assert.NotNil(t, provider)
64
	assert.Len(t, provider.providerChain, 5)
65
	_, ok = provider.providerChain[0].(*EnvironmentVariableCredentialsProvider)
66
	assert.True(t, ok)
67
68
	_, ok = provider.providerChain[1].(*OIDCCredentialsProvider)
69
	assert.True(t, ok)
70
71
	_, ok = provider.providerChain[2].(*CLIProfileCredentialsProvider)
72
	assert.True(t, ok)
73
74
	_, ok = provider.providerChain[3].(*ProfileCredentialsProvider)
75
	assert.True(t, ok)
76
77
	_, ok = provider.providerChain[4].(*ECSRAMRoleCredentialsProvider)
78
	assert.True(t, ok)
79
80
	// Add ecs ram role
81
	os.Setenv("ALIBABA_CLOUD_CREDENTIALS_URI", "http://")
82
	provider = NewDefaultCredentialsProvider()
83
	assert.NotNil(t, provider)
84
	assert.Len(t, provider.providerChain, 6)
85
	_, ok = provider.providerChain[0].(*EnvironmentVariableCredentialsProvider)
86
	assert.True(t, ok)
87
88
	_, ok = provider.providerChain[1].(*OIDCCredentialsProvider)
89
	assert.True(t, ok)
90
91
	_, ok = provider.providerChain[2].(*CLIProfileCredentialsProvider)
92
	assert.True(t, ok)
93
94
	_, ok = provider.providerChain[3].(*ProfileCredentialsProvider)
95
	assert.True(t, ok)
96
97
	_, ok = provider.providerChain[4].(*ECSRAMRoleCredentialsProvider)
98
	assert.True(t, ok)
99
100
	_, ok = provider.providerChain[5].(*URLCredentialsProvider)
101
	assert.True(t, ok)
102
}
103
104
func TestDefaultCredentialsProvider_GetCredentials(t *testing.T) {
105
	rollback := utils.Memory("ALIBABA_CLOUD_ACCESS_KEY_ID",
106
		"ALIBABA_CLOUD_ACCESS_KEY_SECRET",
107
		"ALIBABA_CLOUD_SECURITY_TOKEN",
108
		"ALIBABA_CLOUD_ECS_METADATA_DISABLED",
109
		"ALIBABA_CLOUD_PROFILE")
110
111
	defer func() {
112
		getHomePath = utils.GetHomePath
113
		rollback()
114
	}()
115
	originHttpDo := httpDo
116
	defer func() { httpDo = originHttpDo }()
117
118
	// testcase: empty home
119
	getHomePath = func() string {
120
		return ""
121
	}
122
123
	os.Setenv("ALIBABA_CLOUD_ECS_METADATA_DISABLED", "true")
124
	provider := NewDefaultCredentialsProvider()
125
	assert.Len(t, provider.providerChain, 3)
126
	_, err := provider.GetCredentials()
127
	assert.EqualError(t, err, "unable to get credentials from any of the providers in the chain: unable to get credentials from enviroment variables, Access key ID must be specified via environment variable (ALIBABA_CLOUD_ACCESS_KEY_ID), cannot found home dir, cannot found home dir")
128
129
	os.Setenv("ALIBABA_CLOUD_ACCESS_KEY_ID", "akid")
130
	os.Setenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET", "aksecret")
131
	provider = NewDefaultCredentialsProvider()
132
	assert.Len(t, provider.providerChain, 3)
133
	cc, err := provider.GetCredentials()
134
	assert.Nil(t, err)
135
	assert.Equal(t, &Credentials{AccessKeyId: "akid", AccessKeySecret: "aksecret", SecurityToken: "", ProviderName: "default/env"}, cc)
136
	// get again
137
	cc, err = provider.GetCredentials()
138
	assert.Nil(t, err)
139
	assert.Equal(t, &Credentials{AccessKeyId: "akid", AccessKeySecret: "aksecret", SecurityToken: "", ProviderName: "default/env"}, cc)
140
141
	getHomePath = func() string {
142
		wd, _ := os.Getwd()
143
		return path.Join(wd, "fixtures")
144
	}
145
	os.Setenv("ALIBABA_CLOUD_ACCESS_KEY_ID", "")
146
	os.Setenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET", "")
147
	os.Setenv("ALIBABA_CLOUD_PROFILE", "ChainableRamRoleArn")
148
	httpDo = func(req *httputil.Request) (res *httputil.Response, err error) {
149
		res = &httputil.Response{
150
			StatusCode: 200,
151
			Body:       []byte(`{"Credentials": {"AccessKeyId":"akid","AccessKeySecret":"aksecret","Expiration":"2021-10-20T04:27:09Z","SecurityToken":"ststoken"}}`),
152
		}
153
		return
154
	}
155
	provider = NewDefaultCredentialsProvider()
156
	cc, err = provider.GetCredentials()
157
	assert.Nil(t, err)
158
	assert.Equal(t, &Credentials{AccessKeyId: "akid", AccessKeySecret: "aksecret", SecurityToken: "ststoken", ProviderName: "default/cli_profile/ram_role_arn/ram_role_arn/static_ak"}, cc)
159
160
	provider.lastUsedProvider = new(testProvider)
161
	cc, err = provider.GetCredentials()
162
	assert.Nil(t, err)
163
	assert.Equal(t, "test", cc.AccessKeyId)
164
	assert.Equal(t, "test", cc.AccessKeySecret)
165
	assert.Equal(t, "default/test", cc.ProviderName)
166
167
	provider.lastUsedProvider = new(testErrorProvider)
168
	_, err = provider.GetCredentials()
169
	assert.Equal(t, "error", err.Error())
170
}
171
172
type testProvider struct {
173
}
174
175
func (provider *testProvider) GetCredentials() (cc *Credentials, err error) {
176
	cc = &Credentials{
177
		AccessKeyId:     "test",
178
		AccessKeySecret: "test",
179
		ProviderName:    "",
180
	}
181
	return
182
}
183
184
func (provider *testProvider) GetProviderName() string {
185
	return "test"
186
}
187
188
type testErrorProvider struct {
189
}
190
191
func (provider *testErrorProvider) GetCredentials() (cc *Credentials, err error) {
192
	err = errors.New("error")
193
	return
194
}
195
196
func (provider *testErrorProvider) GetProviderName() string {
197
	return "test"
198
}
199