Sfoglia il codice sorgente

Refactor server handshake test

tags/v2.0.0-rc1
9seconds 5 anni fa
parent
commit
933855a233
1 ha cambiato i file con 41 aggiunte e 32 eliminazioni
  1. 41
    32
      mtglib/internal/obfuscated2/server_handshake_test.go

+ 41
- 32
mtglib/internal/obfuscated2/server_handshake_test.go Vedi File

@@ -15,19 +15,22 @@ import (
15 15
 
16 16
 type ServerHandshakeTestSuite struct {
17 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 26
 	buf := &bytes.Buffer{}
22
-	connMock := &testlib.NetConnMock{}
27
+	suite.connMock = &testlib.NetConnMock{}
23 28
 
24 29
 	encryptor, decryptor, err := obfuscated2.ServerHandshake(buf)
25
-	suite.NotNil(encryptor)
26
-	suite.NotNil(decryptor)
27 30
 	suite.NoError(err)
28 31
 
29
-	proxyConn := &obfuscated2.Conn{
30
-		Conn:      connMock,
32
+	suite.proxyConn = &obfuscated2.Conn{
33
+		Conn:      suite.connMock,
31 34
 		Encryptor: encryptor,
32 35
 		Decryptor: decryptor,
33 36
 	}
@@ -35,9 +38,10 @@ func (suite *ServerHandshakeTestSuite) TestOk() {
35 38
 	serverEncrypted := buf.Bytes()
36 39
 
37 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 43
 	serverDecrypted := make([]byte, len(serverEncrypted))
40
-	serverDecryptor.XORKeyStream(serverDecrypted, serverEncrypted)
44
+	suite.decryptor.XORKeyStream(serverDecrypted, serverEncrypted)
41 45
 
42 46
 	suite.Equal("3d3d3Q",
43 47
 		base64.RawStdEncoding.EncodeToString(serverDecrypted[8+32+16:8+32+16+4]))
@@ -49,44 +53,49 @@ func (suite *ServerHandshakeTestSuite) TestOk() {
49 53
 	}
50 54
 
51 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 69
 		Once().
62 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 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 88
 		Once().
79 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 97
 	suite.NoError(err)
88
-
89
-	connMock.AssertExpectations(suite.T())
98
+	suite.Equal(messageFromTelegram, buffer)
90 99
 }
91 100
 
92 101
 func TestServerHandshake(t *testing.T) {

Loading…
Annulla
Salva