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
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

obfuscator_fuzz_test.go 1.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package obfuscation_test
  2. import (
  3. "bytes"
  4. "testing"
  5. "github.com/9seconds/mtg/v2/internal/testlib"
  6. "github.com/9seconds/mtg/v2/mtglib"
  7. "github.com/9seconds/mtg/v2/mtglib/obfuscation"
  8. "github.com/stretchr/testify/assert"
  9. "github.com/stretchr/testify/mock"
  10. )
  11. func FuzzClientServerHandshakes(f *testing.F) {
  12. f.Add(int16(1), make([]byte, mtglib.SecretKeyLength))
  13. f.Fuzz(func(t *testing.T, dc int16, data []byte) {
  14. if dc <= 0 {
  15. dc = 1
  16. }
  17. client := obfuscation.Obfuscator{
  18. Secret: data,
  19. }
  20. server := client
  21. clientToServerBuf := &bytes.Buffer{}
  22. writeConnMock := &testlib.EssentialsConnMock{}
  23. writeConnMock.
  24. On("Write", mock.AnythingOfType("[]uint8")).
  25. Once().
  26. Return(64, nil).
  27. Run(func(args mock.Arguments) {
  28. arg := args.Get(0).([]byte)
  29. n, err := clientToServerBuf.Write(arg)
  30. assert.Equal(t, 64, n)
  31. assert.NoError(t, err)
  32. })
  33. readConnMock := &testlib.EssentialsConnMock{}
  34. readConnMock.
  35. On("Read", mock.AnythingOfType("[]uint8")).
  36. Once().
  37. Return(64, nil).
  38. Run(func(args mock.Arguments) {
  39. arg := args.Get(0).([]byte)
  40. n, err := clientToServerBuf.Read(arg)
  41. assert.Equal(t, 64, n)
  42. assert.NoError(t, err)
  43. })
  44. _, err := client.SendHandshake(writeConnMock, int(dc))
  45. assert.NoError(t, err)
  46. readDc, _, err := server.ReadHandshake(readConnMock)
  47. assert.NoError(t, err)
  48. assert.EqualValues(t, dc, readDc)
  49. writeConnMock.AssertExpectations(t)
  50. readConnMock.AssertExpectations(t)
  51. })
  52. }