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.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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(770), 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 TestFrameDoubleInvert(t *testing.T) {
  37. frame := makeFrame()
  38. assert.Equal(t, frame, frame.Invert().Invert())
  39. }
  40. func TestFrameInvert(t *testing.T) {
  41. frame := makeFrame()
  42. reversed := frame.Invert()
  43. assert.Exactly(t, frame[:8], reversed[:8])
  44. assert.Exactly(t, frame[56:], reversed[56:])
  45. toCompare := make([]byte, 48)
  46. for i := 0; i < 48; i++ {
  47. toCompare[i] = frame[55-i]
  48. }
  49. assert.Equal(t, []byte(reversed[8:56]), toCompare)
  50. }
  51. func TestFrameGenerateValid(t *testing.T) {
  52. assert.True(t, generateFrame().Valid())
  53. }
  54. func makeFrame() Frame {
  55. f := make(Frame, FrameLen)
  56. for i := 8; i < (8 + 32); i++ {
  57. f[i] = byte(1)
  58. }
  59. for i := (8 + 32); i < (8 + 32 + 16); i++ {
  60. f[i] = byte(2)
  61. }
  62. for i := (8 + 32 + 16); i < (8 + 32 + 16 + 4); i++ {
  63. f[i] = tgMagicByte
  64. }
  65. for i := (8 + 32 + 16 + 4); i < (8 + 32 + 16 + 4 + 2); i++ {
  66. f[i] = byte(3)
  67. }
  68. return f
  69. }