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 ( f5d62c...a7ec9d )
by Jackson
08:28
created

credentials/internal/utils/utils_test.go   A

Size/Duplication

Total Lines 172
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
cc 21
eloc 102
dl 0
loc 172
rs 10
c 0
b 0
f 0

13 Methods

Rating   Name   Duplication   Size   Complexity  
A utils.TestGetUUID 0 6 1
A utils.TestHookRead 0 19 4
A utils.TestSha256WithRsa_DecodeString_Error 0 8 2
A utils.TestShaHmac1 0 5 1
A utils.TestGetMD5Base64 0 5 1
A utils.TestHookRSA 0 35 4
A utils.TestSha256WithRsa 0 20 1
A utils.TestGetURLFormedMap 0 8 1
A utils.TestGetTimeInFormatISO8601 0 6 1
A utils.TestSha256WithRsa_ParsePKCS8PrivateKey_Error 0 8 2
A utils.TestMemoryAndRollback 0 7 1
A utils.TestGetNonce 0 3 1
A utils.TestGetDefaultString 0 4 1
1
package utils
2
3
import (
4
	"crypto"
5
	"crypto/rsa"
6
	"errors"
7
	"io"
8
	"os"
9
	"regexp"
10
	"testing"
11
12
	"github.com/stretchr/testify/assert"
13
)
14
15
func TestGetUUID(t *testing.T) {
16
	uuid := newUUID()
17
	assert.Equal(t, 16, len(uuid))
18
	assert.Equal(t, 36, len(uuid.String()))
19
	uuidString := GetUUID()
20
	assert.Equal(t, 32, len(uuidString))
21
}
22
23
func TestGetMD5Base64(t *testing.T) {
24
	assert.Equal(t, "ERIHLmRX2uZmssDdxQnnxQ==",
25
		GetMD5Base64([]byte("That's all folks!!")))
26
	assert.Equal(t, "GsJRdI3kAbAnHo/0+3wWJw==",
27
		GetMD5Base64([]byte("中文也没啥问题")))
28
}
29
30
func TestGetTimeInFormatISO8601(t *testing.T) {
31
	s := GetTimeInFormatISO8601()
32
	assert.Equal(t, 20, len(s))
33
	// 2006-01-02T15:04:05Z
34
	re := regexp.MustCompile(`^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$`)
35
	assert.True(t, re.MatchString(s))
36
}
37
38
func TestGetURLFormedMap(t *testing.T) {
39
	m := make(map[string]string)
40
	m["key"] = "value"
41
	s := GetURLFormedMap(m)
42
	assert.Equal(t, "key=value", s)
43
	m["key2"] = "http://domain/?key=value&key2=value2"
44
	s2 := GetURLFormedMap(m)
45
	assert.Equal(t, "key=value&key2=http%3A%2F%2Fdomain%2F%3Fkey%3Dvalue%26key2%3Dvalue2", s2)
46
}
47
48
func TestShaHmac1(t *testing.T) {
49
	result := ShaHmac1("source", "secret")
50
	assert.Equal(t, "Jv4yi8SobFhg5t1C7nWLbhBSFZQ=", result)
51
52
	assert.Equal(t, "CqCYIa39h9SSWuXnTz8F5hh9UPA=", ShaHmac1("中文", "secret"))
53
}
54
55
func TestSha256WithRsa(t *testing.T) {
56
	secret := `
57
MIICeQIBADANBgkqhkiG9w0BAQEFAASCAmMwggJfAgEAAoGBAOJC+2WXtkXZ+6sa
58
3+qJp4mDOsiZb3BghHT9nVbjTeaw4hsZWHYxQ6l6XDmTg4twPB59LOGAlAjYrT31
59
3pdwEawnmdf6zyF93Zvxxpy7lO2HoxYKSjbtXO4I0pcq3WTnw2xlbhqHvrcuWwt+
60
FqH9akzcnwHjc03siZBzt/dwDL3vAgMBAAECgYEAzwgZPqFuUEYgaTVDFDl2ynYA
61
kNMMzBgUu3Pgx0Nf4amSitdLQYLcdbQXtTtMT4eYCxHgwkpDqkCRbLOQRKNwFo0I
62
oaCuhjZlxWcKil4z4Zb/zB7gkeuXPOVUjFSS3FogsRWMtnNAMgR/yJRlbcg/Puqk
63
Magt/yDk+7cJCe6H96ECQQDxMT4S+tVP9nOw//QT39Dk+kWe/YVEhnWnCMZmGlEq
64
1gnN6qpUi68ts6b3BVgrDPrPN6wm/Z9vpcKNeWpIvxXRAkEA8CcT2UEUwDGRKAUu
65
WVPJqdAJjpjc072eRF5g792NyO+TAF6thBlDKNslRvFQDB6ymLsjfy8JYCnGbbSb
66
WqbHvwJBAIs7KeI6+jiWxGJA3t06LpSABQCqyOut0u0Bm8YFGyXnOPGtrXXwzMdN
67
Fe0zIJp5e69zK+W2Mvt4bL7OgBROeoECQQDsE+4uLw0gFln0tosmovhmp60NcfX7
68
bLbtzL2MbwbXlbOztF7ssgzUWAHgKI6hK3g0LhsqBuo3jzmSVO43giZvAkEA08Nm
69
2TI9EvX6DfCVfPOiKZM+Pijh0xLN4Dn8qUgt3Tcew/vfj4WA2ZV6qiJqL01vMsHc
70
vftlY0Hs1vNXcaBgEA==`
71
	result := Sha256WithRsa("source", secret)
72
	assert.Equal(t, "UNyJPD27jjSNl70b02E/DUtgtNESdtAuxbNBZTlksk1t/GYjiQNRlFIubp/EGKcWsqs7p5SFKnNiSRqWG3A51VmJFBXXtyW1nwLC9xY/MbUj6JVWNYCuLkPWM942O+GAk7N+G8ZQZt7ib2MhruDAUmv1lLN26lDaCPBX2MJQJCo=", result)
73
74
	assert.Equal(t, "CKE0osxUnFFH+oYP3Q427saucBuignE+Mrni63G9w46yZFtVoXFOu5lNiNCnUtaPNpGmBf9X5oGCY+otqPf7bP93nB59rfdteQs0sS65PWH9yjH8RwYCWGCbuyRul/0qIv/nYYGzkLON1C1Vx9Z4Yep6llYuJang5RIXrAkQLmQ=", Sha256WithRsa("中文", secret))
75
}
76
77
func TestSha256WithRsa_DecodeString_Error(t *testing.T) {
78
	defer func() { // 进行异常捕捉
79
		err := recover()
80
		assert.NotNil(t, err)
81
		assert.Equal(t, "illegal base64 data at input byte 0", err.(error).Error())
82
	}()
83
	secret := `==`
84
	Sha256WithRsa("source", secret)
85
}
86
87
func TestSha256WithRsa_ParsePKCS8PrivateKey_Error(t *testing.T) {
88
	defer func() { // 进行异常捕捉
89
		err := recover()
90
		assert.NotNil(t, err)
91
		assert.Equal(t, "asn1: structure error: length too large", err.(error).Error())
92
	}()
93
	secret := `Jv4yi8SobFhg5t1C7nWLbhBSFZQ=`
94
	Sha256WithRsa("source", secret)
95
}
96
97
func TestHookRead(t *testing.T) {
98
	fn := func(p []byte) (n int, err error) {
99
		return 0, errors.New("hookRead")
100
	}
101
	result := hookRead(fn)
102
	n, err := result(nil)
103
	assert.Equal(t, 0, n)
104
	assert.Equal(t, "hookRead", err.Error())
105
106
	originHookRead := hookRead
107
	hookRead = func(old func(p []byte) (n int, err error)) func(p []byte) (n int, err error) {
108
		return fn
109
	}
110
	defer func() {
111
		err := recover()
112
		assert.Equal(t, "hookRead", err.(error).Error())
113
		hookRead = originHookRead
114
	}()
115
	safeRandom([]byte("credentialtest"))
116
}
117
118
func TestHookRSA(t *testing.T) {
119
	fn := func(rand io.Reader, priv *rsa.PrivateKey, hash crypto.Hash, hashed []byte) ([]byte, error) {
120
		return nil, errors.New("hookRSA")
121
	}
122
	result := hookRSA(fn)
123
	hash := crypto.Hash(10)
124
	byt, err := result(nil, nil, hash, nil)
125
	assert.Nil(t, byt)
126
	assert.Equal(t, "hookRSA", err.Error())
127
128
	originHookRSA := hookRSA
129
	hookRSA = func(old func(rand io.Reader, priv *rsa.PrivateKey, hash crypto.Hash, hashed []byte) ([]byte, error)) func(rand io.Reader, priv *rsa.PrivateKey, hash crypto.Hash, hashed []byte) ([]byte, error) {
130
		return fn
131
	}
132
	defer func() {
133
		err := recover()
134
		assert.Equal(t, "hookRSA", err.(error).Error())
135
		hookRSA = originHookRSA
136
	}()
137
	secret := `
138
MIICeQIBADANBgkqhkiG9w0BAQEFAASCAmMwggJfAgEAAoGBAOJC+2WXtkXZ+6sa
139
3+qJp4mDOsiZb3BghHT9nVbjTeaw4hsZWHYxQ6l6XDmTg4twPB59LOGAlAjYrT31
140
3pdwEawnmdf6zyF93Zvxxpy7lO2HoxYKSjbtXO4I0pcq3WTnw2xlbhqHvrcuWwt+
141
FqH9akzcnwHjc03siZBzt/dwDL3vAgMBAAECgYEAzwgZPqFuUEYgaTVDFDl2ynYA
142
kNMMzBgUu3Pgx0Nf4amSitdLQYLcdbQXtTtMT4eYCxHgwkpDqkCRbLOQRKNwFo0I
143
oaCuhjZlxWcKil4z4Zb/zB7gkeuXPOVUjFSS3FogsRWMtnNAMgR/yJRlbcg/Puqk
144
Magt/yDk+7cJCe6H96ECQQDxMT4S+tVP9nOw//QT39Dk+kWe/YVEhnWnCMZmGlEq
145
1gnN6qpUi68ts6b3BVgrDPrPN6wm/Z9vpcKNeWpIvxXRAkEA8CcT2UEUwDGRKAUu
146
WVPJqdAJjpjc072eRF5g792NyO+TAF6thBlDKNslRvFQDB6ymLsjfy8JYCnGbbSb
147
WqbHvwJBAIs7KeI6+jiWxGJA3t06LpSABQCqyOut0u0Bm8YFGyXnOPGtrXXwzMdN
148
Fe0zIJp5e69zK+W2Mvt4bL7OgBROeoECQQDsE+4uLw0gFln0tosmovhmp60NcfX7
149
bLbtzL2MbwbXlbOztF7ssgzUWAHgKI6hK3g0LhsqBuo3jzmSVO43giZvAkEA08Nm
150
2TI9EvX6DfCVfPOiKZM+Pijh0xLN4Dn8qUgt3Tcew/vfj4WA2ZV6qiJqL01vMsHc
151
vftlY0Hs1vNXcaBgEA==`
152
	Sha256WithRsa("source", secret)
153
}
154
155
func TestGetDefaultString(t *testing.T) {
156
	assert.Equal(t, "default", GetDefaultString("", "default"))
157
	assert.Equal(t, "custom", GetDefaultString("custom", "default"))
158
	assert.Equal(t, "", GetDefaultString("", "", ""))
159
}
160
161
func TestMemoryAndRollback(t *testing.T) {
162
	os.Setenv("test", "old")
163
	rollback := Memory("test")
164
	os.Setenv("test", "new")
165
	rollback()
166
167
	assert.Equal(t, "old", os.Getenv("test"))
168
}
169
170
func TestGetNonce(t *testing.T) {
171
	assert.Equal(t, 32, len(GetNonce()))
172
	assert.NotEqual(t, GetNonce(), GetNonce())
173
}
174