Просмотр исходного кода

Refactor server handshake test

tags/v2.0.0-rc1
9seconds 5 лет назад
Родитель
Сommit
933855a233
1 измененных файлов: 41 добавлений и 32 удалений
  1. 41
    32
      mtglib/internal/obfuscated2/server_handshake_test.go

+ 41
- 32
mtglib/internal/obfuscated2/server_handshake_test.go Просмотреть файл

15
 
15
 
16
 type ServerHandshakeTestSuite struct {
16
 type ServerHandshakeTestSuite struct {
17
 	suite.Suite
17
 	suite.Suite
18
+
19
+	connMock  *testlib.NetConnMock
20
+	proxyConn *obfuscated2.Conn
21
+	encryptor cipher.Stream
22
+	decryptor cipher.Stream
18
 }
23
 }
19
 
24
 
20
-func (suite *ServerHandshakeTestSuite) TestOk() {
25
+func (suite *ServerHandshakeTestSuite) SetupTest() {
21
 	buf := &bytes.Buffer{}
26
 	buf := &bytes.Buffer{}
22
-	connMock := &testlib.NetConnMock{}
27
+	suite.connMock = &testlib.NetConnMock{}
23
 
28
 
24
 	encryptor, decryptor, err := obfuscated2.ServerHandshake(buf)
29
 	encryptor, decryptor, err := obfuscated2.ServerHandshake(buf)
25
-	suite.NotNil(encryptor)
26
-	suite.NotNil(decryptor)
27
 	suite.NoError(err)
30
 	suite.NoError(err)
28
 
31
 
29
-	proxyConn := &obfuscated2.Conn{
30
-		Conn:      connMock,
32
+	suite.proxyConn = &obfuscated2.Conn{
33
+		Conn:      suite.connMock,
31
 		Encryptor: encryptor,
34
 		Encryptor: encryptor,
32
 		Decryptor: decryptor,
35
 		Decryptor: decryptor,
33
 	}
36
 	}
35
 	serverEncrypted := buf.Bytes()
38
 	serverEncrypted := buf.Bytes()
36
 
39
 
37
 	decBlock, _ := aes.NewCipher(serverEncrypted[8 : 8+32])
40
 	decBlock, _ := aes.NewCipher(serverEncrypted[8 : 8+32])
38
-	serverDecryptor := cipher.NewCTR(decBlock, serverEncrypted[8+32:8+32+16])
41
+	suite.decryptor = cipher.NewCTR(decBlock, serverEncrypted[8+32:8+32+16])
42
+
39
 	serverDecrypted := make([]byte, len(serverEncrypted))
43
 	serverDecrypted := make([]byte, len(serverEncrypted))
40
-	serverDecryptor.XORKeyStream(serverDecrypted, serverEncrypted)
44
+	suite.decryptor.XORKeyStream(serverDecrypted, serverEncrypted)
41
 
45
 
42
 	suite.Equal("3d3d3Q",
46
 	suite.Equal("3d3d3Q",
43
 		base64.RawStdEncoding.EncodeToString(serverDecrypted[8+32+16:8+32+16+4]))
47
 		base64.RawStdEncoding.EncodeToString(serverDecrypted[8+32+16:8+32+16+4]))
49
 	}
53
 	}
50
 
54
 
51
 	encBlock, _ := aes.NewCipher(serverEncryptedReverted[8 : 8+32])
55
 	encBlock, _ := aes.NewCipher(serverEncryptedReverted[8 : 8+32])
52
-	serverEncryptor := cipher.NewCTR(encBlock, serverEncryptedReverted[8+32:8+32+16])
56
+	suite.encryptor = cipher.NewCTR(encBlock, serverEncryptedReverted[8+32:8+32+16])
57
+}
58
+
59
+func (suite *ServerHandshakeTestSuite) TearDownTest() {
60
+	suite.connMock.AssertExpectations(suite.T())
61
+}
53
 
62
 
54
-	messageFromTelegram := []byte{1, 2, 3, 4, 5}
55
-	// messageToTelegram := []byte{10, 11, 13, 14}
56
-	bufferToRead := make([]byte, 5)
63
+func (suite *ServerHandshakeTestSuite) TestSendToTelegram() {
64
+	messageToTelegram := []byte{10, 11, 12, 13, 14, 'a'}
57
 
65
 
58
-	connMock.
59
-		On("Read", mock.Anything).
60
-		Return(5, nil).
66
+	suite.connMock.
67
+		On("Write", mock.Anything).
68
+		Return(len(messageToTelegram), nil).
61
 		Once().
69
 		Once().
62
 		Run(func(args mock.Arguments) {
70
 		Run(func(args mock.Arguments) {
63
-			messageToRead := make([]byte, len(messageFromTelegram))
64
-			serverEncryptor.XORKeyStream(messageToRead, messageFromTelegram)
65
-			copy(args.Get(0).([]byte), messageToRead)
71
+			message := make([]byte, len(messageToTelegram))
72
+			suite.decryptor.XORKeyStream(message, args.Get(0).([]byte))
73
+			suite.Equal(messageToTelegram, message)
66
 		})
74
 		})
67
 
75
 
68
-	n, err := proxyConn.Read(bufferToRead)
69
-	suite.EqualValues(5, n)
76
+	n, err := suite.proxyConn.Write(messageToTelegram)
77
+	suite.EqualValues(len(messageToTelegram), n)
70
 	suite.NoError(err)
78
 	suite.NoError(err)
71
-	suite.Equal(messageFromTelegram, bufferToRead)
79
+}
72
 
80
 
73
-	messageToTelegram := []byte{10, 11, 12, 13, 14}
81
+func (suite *ServerHandshakeTestSuite) TestRecieveFromTelegram() {
82
+	messageFromTelegram := []byte{10, 11, 12, 13, 14, 'a'}
83
+	buffer := make([]byte, len(messageFromTelegram))
74
 
84
 
75
-	connMock.
76
-		On("Write", mock.Anything).
77
-		Return(5, nil).
85
+	suite.connMock.
86
+		On("Read", mock.Anything).
87
+		Return(len(messageFromTelegram), nil).
78
 		Once().
88
 		Once().
79
 		Run(func(args mock.Arguments) {
89
 		Run(func(args mock.Arguments) {
80
-			message := make([]byte, len(messageToTelegram))
81
-			serverDecryptor.XORKeyStream(message, args.Get(0).([]byte))
82
-			suite.Equal(messageToTelegram, message)
90
+			message := make([]byte, len(messageFromTelegram))
91
+			suite.encryptor.XORKeyStream(message, messageFromTelegram)
92
+			copy(args.Get(0).([]byte), message)
83
 		})
93
 		})
84
 
94
 
85
-	n, err = proxyConn.Write(messageToTelegram)
86
-	suite.EqualValues(5, n)
95
+	n, err := suite.proxyConn.Read(buffer)
96
+	suite.EqualValues(len(messageFromTelegram), n)
87
 	suite.NoError(err)
97
 	suite.NoError(err)
88
-
89
-	connMock.AssertExpectations(suite.T())
98
+	suite.Equal(messageFromTelegram, buffer)
90
 }
99
 }
91
 
100
 
92
 func TestServerHandshake(t *testing.T) {
101
 func TestServerHandshake(t *testing.T) {

Загрузка…
Отмена
Сохранить