Skip to content

Commit 4d91dcc

Browse files
committed
aes_test.go: add TestAESEncrypt and TestAESDecrypt, finish them.
1 parent 9ddcda4 commit 4d91dcc

File tree

1 file changed

+96
-0
lines changed

1 file changed

+96
-0
lines changed

wincrypto/aes_test.go

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,97 @@
11
package wincrypto
2+
3+
import (
4+
"crypto/rand"
5+
"errors"
6+
"testing"
7+
8+
"github.com/For-ACGN/monkey"
9+
"github.com/stretchr/testify/require"
10+
)
11+
12+
func TestAESEncrypt(t *testing.T) {
13+
key := make([]byte, 32)
14+
key[0] = 1
15+
key[1] = 2
16+
17+
t.Run("common", func(t *testing.T) {
18+
data := []byte("hello world")
19+
20+
output, err := AESEncrypt(data, key)
21+
require.NoError(t, err)
22+
require.Len(t, output, 32)
23+
})
24+
25+
t.Run("empty plain data", func(t *testing.T) {
26+
output, err := AESEncrypt(nil, key)
27+
require.Equal(t, ErrEmptyPlainData, err)
28+
require.Nil(t, output)
29+
})
30+
31+
t.Run("invalid key", func(t *testing.T) {
32+
data := []byte("hello world")
33+
34+
output, err := AESEncrypt(data, nil)
35+
require.EqualError(t, err, "crypto/aes: invalid key size 0")
36+
require.Nil(t, output)
37+
})
38+
39+
t.Run("failed to generate IV", func(t *testing.T) {
40+
patch := func([]byte) (int, error) {
41+
return 0, errors.New("monkey error")
42+
}
43+
pg := monkey.Patch(rand.Read, patch)
44+
defer pg.Unpatch()
45+
46+
data := []byte("hello world")
47+
48+
output, err := AESEncrypt(data, key)
49+
require.EqualError(t, err, "failed to generate aes iv: monkey error")
50+
require.Nil(t, output)
51+
})
52+
}
53+
54+
func TestAESDecrypt(t *testing.T) {
55+
key := make([]byte, 32)
56+
key[0] = 1
57+
key[1] = 2
58+
59+
t.Run("common", func(t *testing.T) {
60+
data := []byte("hello world")
61+
62+
output, err := AESEncrypt(data, key)
63+
require.NoError(t, err)
64+
65+
output, err = AESDecrypt(output, key)
66+
require.NoError(t, err)
67+
require.Equal(t, data, output)
68+
})
69+
70+
t.Run("empty cipher data", func(t *testing.T) {
71+
output, err := AESDecrypt(nil, key)
72+
require.Equal(t, ErrEmptyCipherData, err)
73+
require.Nil(t, output)
74+
})
75+
76+
t.Run("invalid key", func(t *testing.T) {
77+
output, err := AESDecrypt(make([]byte, 32), nil)
78+
require.EqualError(t, err, "crypto/aes: invalid key size 0")
79+
require.Nil(t, output)
80+
})
81+
82+
t.Run("invalid cipher data", func(t *testing.T) {
83+
plainData, err := AESDecrypt(make([]byte, 7), key)
84+
require.Equal(t, ErrInvalidCipherData, err)
85+
require.Nil(t, plainData)
86+
87+
plainData, err = AESDecrypt(make([]byte, 63), key)
88+
require.Equal(t, ErrInvalidCipherData, err)
89+
require.Nil(t, plainData)
90+
})
91+
92+
t.Run("invalid padding size", func(t *testing.T) {
93+
plainData, err := AESDecrypt(make([]byte, 32), key)
94+
require.Equal(t, ErrInvalidPaddingSize, err)
95+
require.Nil(t, plainData)
96+
})
97+
}

0 commit comments

Comments
 (0)