Highly-opinionated (ex-bullshit-free) MTPROTO proxy for Telegram. If you use v1.0 or upgrade broke you proxy, please read the chapter Version 2
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

server_handshake_test.go 1.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package obfuscated2_test
  2. import (
  3. "testing"
  4. "github.com/stretchr/testify/mock"
  5. "github.com/stretchr/testify/suite"
  6. )
  7. type ServerHandshakeTestSuite struct {
  8. suite.Suite
  9. data ServerHandshakeTestData
  10. }
  11. func (suite *ServerHandshakeTestSuite) SetupTest() {
  12. suite.data = NewServerHandshakeTestData(suite.T())
  13. }
  14. func (suite *ServerHandshakeTestSuite) TearDownTest() {
  15. suite.data.connMock.AssertExpectations(suite.T())
  16. }
  17. func (suite *ServerHandshakeTestSuite) TestSendToTelegram() {
  18. messageToTelegram := []byte{10, 11, 12, 13, 14, 'a'}
  19. suite.data.connMock.
  20. On("Write", mock.Anything).
  21. Return(len(messageToTelegram), nil).
  22. Once().
  23. Run(func(args mock.Arguments) {
  24. message := make([]byte, len(messageToTelegram))
  25. suite.data.decryptor.XORKeyStream(message, args.Get(0).([]byte)) //nolint: forcetypeassert
  26. suite.Equal(messageToTelegram, message)
  27. })
  28. n, err := suite.data.proxyConn.Write(messageToTelegram)
  29. suite.EqualValues(len(messageToTelegram), n)
  30. suite.NoError(err)
  31. }
  32. func (suite *ServerHandshakeTestSuite) TestRecieveFromTelegram() {
  33. messageFromTelegram := []byte{10, 11, 12, 13, 14, 'a'}
  34. buffer := make([]byte, len(messageFromTelegram))
  35. suite.data.connMock.
  36. On("Read", mock.Anything).
  37. Return(len(messageFromTelegram), nil).
  38. Once().
  39. Run(func(args mock.Arguments) {
  40. message := make([]byte, len(messageFromTelegram))
  41. suite.data.encryptor.XORKeyStream(message, messageFromTelegram)
  42. copy(args.Get(0).([]byte), message) //nolint: forcetypeassert
  43. })
  44. n, err := suite.data.proxyConn.Read(buffer)
  45. suite.EqualValues(len(messageFromTelegram), n)
  46. suite.NoError(err)
  47. suite.Equal(messageFromTelegram, buffer)
  48. }
  49. func TestServerHandshake(t *testing.T) {
  50. t.Parallel()
  51. suite.Run(t, &ServerHandshakeTestSuite{})
  52. }