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
Pull Request — master (#7)
by zuochao
09:46
created

utils.TestInitStructWithDefaultTag   A

Complexity

Conditions 1

Size

Total Lines 15
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

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