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
Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

frame_test.go 1.7KB

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