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 ( 117080...115dc3 )
by
unknown
05:55
created

credentials/providers/default_test.go   A

Size/Duplication

Total Lines 157
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
cc 7
eloc 115
dl 0
loc 157
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
B providers.TestDefaultCredentialsProvider 0 88 1
B providers.TestDefaultCredentialsProvider_GetCredentials 0 55 6
1
package providers
2
3
import (
4
	"os"
5
	"path"
6
	"testing"
7
8
	httputil "github.com/aliyun/credentials-go/credentials/internal/http"
9
	"github.com/aliyun/credentials-go/credentials/internal/utils"
10
	"github.com/stretchr/testify/assert"
11
)
12
13
func TestDefaultCredentialsProvider(t *testing.T) {
14
	provider := NewDefaultCredentialsProvider()
15
	assert.NotNil(t, provider)
16
	assert.Len(t, provider.providerChain, 4)
17
	_, ok := provider.providerChain[0].(*EnvironmentVariableCredentialsProvider)
18
	assert.True(t, ok)
19
20
	_, ok = provider.providerChain[1].(*CLIProfileCredentialsProvider)
21
	assert.True(t, ok)
22
23
	_, ok = provider.providerChain[2].(*ProfileCredentialsProvider)
24
	assert.True(t, ok)
25
26
	_, ok = provider.providerChain[3].(*ECSRAMRoleCredentialsProvider)
27
	assert.True(t, ok)
28
29
	// Add oidc provider
30
	rollback := utils.Memory("ALIBABA_CLOUD_OIDC_TOKEN_FILE",
31
		"ALIBABA_CLOUD_OIDC_PROVIDER_ARN",
32
		"ALIBABA_CLOUD_ROLE_ARN",
33
		"ALIBABA_CLOUD_ECS_METADATA",
34
		"ALIBABA_CLOUD_CREDENTIALS_URI")
35
36
	defer rollback()
37
	os.Setenv("ALIBABA_CLOUD_OIDC_TOKEN_FILE", "/path/to/oidc.token")
38
	os.Setenv("ALIBABA_CLOUD_OIDC_PROVIDER_ARN", "oidcproviderarn")
39
	os.Setenv("ALIBABA_CLOUD_ROLE_ARN", "rolearn")
40
41
	provider = NewDefaultCredentialsProvider()
42
	assert.NotNil(t, provider)
43
	assert.Len(t, provider.providerChain, 5)
44
	_, ok = provider.providerChain[0].(*EnvironmentVariableCredentialsProvider)
45
	assert.True(t, ok)
46
47
	_, ok = provider.providerChain[1].(*OIDCCredentialsProvider)
48
	assert.True(t, ok)
49
50
	_, ok = provider.providerChain[2].(*CLIProfileCredentialsProvider)
51
	assert.True(t, ok)
52
53
	_, ok = provider.providerChain[3].(*ProfileCredentialsProvider)
54
	assert.True(t, ok)
55
56
	_, ok = provider.providerChain[4].(*ECSRAMRoleCredentialsProvider)
57
	assert.True(t, ok)
58
59
	// Add ecs ram role name
60
	os.Setenv("ALIBABA_CLOUD_ECS_METADATA", "rolename")
61
	provider = NewDefaultCredentialsProvider()
62
	assert.NotNil(t, provider)
63
	assert.Len(t, provider.providerChain, 5)
64
	_, ok = provider.providerChain[0].(*EnvironmentVariableCredentialsProvider)
65
	assert.True(t, ok)
66
67
	_, ok = provider.providerChain[1].(*OIDCCredentialsProvider)
68
	assert.True(t, ok)
69
70
	_, ok = provider.providerChain[2].(*CLIProfileCredentialsProvider)
71
	assert.True(t, ok)
72
73
	_, ok = provider.providerChain[3].(*ProfileCredentialsProvider)
74
	assert.True(t, ok)
75
76
	_, ok = provider.providerChain[4].(*ECSRAMRoleCredentialsProvider)
77
	assert.True(t, ok)
78
79
	// Add ecs ram role
80
	os.Setenv("ALIBABA_CLOUD_CREDENTIALS_URI", "http://")
81
	provider = NewDefaultCredentialsProvider()
82
	assert.NotNil(t, provider)
83
	assert.Len(t, provider.providerChain, 6)
84
	_, ok = provider.providerChain[0].(*EnvironmentVariableCredentialsProvider)
85
	assert.True(t, ok)
86
87
	_, ok = provider.providerChain[1].(*OIDCCredentialsProvider)
88
	assert.True(t, ok)
89
90
	_, ok = provider.providerChain[2].(*CLIProfileCredentialsProvider)
91
	assert.True(t, ok)
92
93
	_, ok = provider.providerChain[3].(*ProfileCredentialsProvider)
94
	assert.True(t, ok)
95
96
	_, ok = provider.providerChain[4].(*ECSRAMRoleCredentialsProvider)
97
	assert.True(t, ok)
98
99
	_, ok = provider.providerChain[5].(*URLCredentialsProvider)
100
	assert.True(t, ok)
101
}
102
103
func TestDefaultCredentialsProvider_GetCredentials(t *testing.T) {
104
	rollback := utils.Memory("ALIBABA_CLOUD_ACCESS_KEY_ID",
105
		"ALIBABA_CLOUD_ACCESS_KEY_SECRET",
106
		"ALIBABA_CLOUD_SECURITY_TOKEN",
107
		"ALIBABA_CLOUD_ECS_METADATA_DISABLED",
108
		"ALIBABA_CLOUD_PROFILE")
109
110
	defer func() {
111
		getHomePath = utils.GetHomePath
112
		rollback()
113
	}()
114
	originHttpDo := httpDo
115
	defer func() { httpDo = originHttpDo }()
116
117
	// testcase: empty home
118
	getHomePath = func() string {
119
		return ""
120
	}
121
122
	os.Setenv("ALIBABA_CLOUD_ECS_METADATA_DISABLED", "true")
123
	provider := NewDefaultCredentialsProvider()
124
	assert.Len(t, provider.providerChain, 3)
125
	_, err := provider.GetCredentials()
126
	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")
127
128
	os.Setenv("ALIBABA_CLOUD_ACCESS_KEY_ID", "akid")
129
	os.Setenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET", "aksecret")
130
	provider = NewDefaultCredentialsProvider()
131
	assert.Len(t, provider.providerChain, 3)
132
	cc, err := provider.GetCredentials()
133
	assert.Nil(t, err)
134
	assert.Equal(t, &Credentials{AccessKeyId: "akid", AccessKeySecret: "aksecret", SecurityToken: "", ProviderName: "default/env"}, cc)
135
	// get again
136
	cc, err = provider.GetCredentials()
137
	assert.Nil(t, err)
138
	assert.Equal(t, &Credentials{AccessKeyId: "akid", AccessKeySecret: "aksecret", SecurityToken: "", ProviderName: "default/env"}, cc)
139
140
	getHomePath = func() string {
141
		wd, _ := os.Getwd()
142
		return path.Join(wd, "fixtures")
143
	}
144
	os.Setenv("ALIBABA_CLOUD_ACCESS_KEY_ID", "")
145
	os.Setenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET", "")
146
	os.Setenv("ALIBABA_CLOUD_PROFILE", "ChainableRamRoleArn")
147
	httpDo = func(req *httputil.Request) (res *httputil.Response, err error) {
148
		res = &httputil.Response{
149
			StatusCode: 200,
150
			Body:       []byte(`{"Credentials": {"AccessKeyId":"akid","AccessKeySecret":"aksecret","Expiration":"2021-10-20T04:27:09Z","SecurityToken":"ststoken"}}`),
151
		}
152
		return
153
	}
154
	provider = NewDefaultCredentialsProvider()
155
	cc, err = provider.GetCredentials()
156
	assert.Nil(t, err)
157
	assert.Equal(t, &Credentials{AccessKeyId: "akid", AccessKeySecret: "aksecret", SecurityToken: "ststoken", ProviderName: "default/cli_profile/ram_role_arn/ram_role_arn/static_ak"}, cc)
158
}
159