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.

frame_test.go 1.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package obfuscated2
  2. import (
  3. "testing"
  4. "github.com/stretchr/testify/assert"
  5. )
  6. func TestFrameKey(t *testing.T) {
  7. toCompare := make([]byte, 32)
  8. for i := 0; i < 32; i++ {
  9. toCompare[i] = byte(1)
  10. }
  11. assert.Equal(t, toCompare, makeFrame().Key())
  12. }
  13. func TestFrameIV(t *testing.T) {
  14. toCompare := make([]byte, 16)
  15. for i := 0; i < 16; i++ {
  16. toCompare[i] = byte(2)
  17. }
  18. assert.Equal(t, toCompare, makeFrame().IV())
  19. }
  20. func TestFrameMagic(t *testing.T) {
  21. toCompare := make([]byte, 4)
  22. for i := 0; i < 4; i++ {
  23. toCompare[i] = tgMagicByte
  24. }
  25. assert.Equal(t, toCompare, makeFrame().Magic())
  26. }
  27. func TestFrameDC(t *testing.T) {
  28. assert.Equal(t, int16(771), makeFrame().DC())
  29. }
  30. func TestFrameValid(t *testing.T) {
  31. frame := makeFrame()
  32. assert.True(t, frame.Valid())
  33. frame[8+32+16+2] = byte(3)
  34. assert.False(t, frame.Valid())
  35. }
  36. func TestFrameInvert(t *testing.T) {
  37. frame := makeFrame()
  38. reversed := frame.Invert()
  39. assert.Exactly(t, frame[:8], reversed[:8])
  40. assert.Exactly(t, frame[56:], reversed[56:])
  41. toCompare := make([]byte, 48)
  42. for i := 0; i < 48; i++ {
  43. toCompare[i] = frame[55-i]
  44. }
  45. assert.Equal(t, []byte(reversed[8:56]), toCompare)
  46. }
  47. func TestFrameGenerateValid(t *testing.T) {
  48. assert.True(t, generateFrame().Valid())
  49. }
  50. func makeFrame() Frame {
  51. f := make(Frame, FrameLen)
  52. for i := 8; i < (8 + 32); i++ {
  53. f[i] = byte(1)
  54. }
  55. for i := (8 + 32); i < (8 + 32 + 16); i++ {
  56. f[i] = byte(2)
  57. }
  58. for i := (8 + 32 + 16); i < (8 + 32 + 16 + 4); i++ {
  59. f[i] = tgMagicByte
  60. }
  61. for i := (8 + 32 + 16 + 4); i < (8 + 32 + 16 + 4 + 2); i++ {
  62. f[i] = byte(3)
  63. }
  64. return f
  65. }