Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

104 строки
4.1KB

  1. import unittest
  2. import six
  3. from engineio import packet
  4. class TestPacket(unittest.TestCase):
  5. def test_encode_default_packet(self):
  6. pkt = packet.Packet()
  7. self.assertEqual(pkt.packet_type, packet.NOOP)
  8. self.assertIsNone(pkt.data)
  9. self.assertFalse(pkt.binary)
  10. self.assertEqual(pkt.encode(), b'6')
  11. def test_decode_default_packet(self):
  12. pkt = packet.Packet(encoded_packet=b'6')
  13. self.assertTrue(pkt.encode(), b'6')
  14. def test_encode_text_packet(self):
  15. data = six.text_type('text')
  16. pkt = packet.Packet(packet.MESSAGE, data=data)
  17. self.assertEqual(pkt.packet_type, packet.MESSAGE)
  18. self.assertEqual(pkt.data, data)
  19. self.assertFalse(pkt.binary)
  20. self.assertEqual(pkt.encode(), b'4text')
  21. def test_decode_text_packet(self):
  22. pkt = packet.Packet(encoded_packet=b'4text')
  23. self.assertEqual(pkt.encode(), b'4text')
  24. def test_encode_binary_packet(self):
  25. pkt = packet.Packet(packet.MESSAGE, data=b'\x01\x02\x03',
  26. binary=True)
  27. self.assertEqual(pkt.packet_type, packet.MESSAGE)
  28. self.assertEqual(pkt.data, b'\x01\x02\x03')
  29. self.assertTrue(pkt.binary)
  30. self.assertEqual(pkt.encode(), b'\x04\x01\x02\x03')
  31. def test_encode_binary_bytearray_packet(self):
  32. pkt = packet.Packet(packet.MESSAGE, data=bytearray(b'\x01\x02\x03'),
  33. binary=True)
  34. self.assertEqual(pkt.packet_type, packet.MESSAGE)
  35. self.assertEqual(pkt.data, b'\x01\x02\x03')
  36. self.assertTrue(pkt.binary)
  37. self.assertEqual(pkt.encode(), b'\x04\x01\x02\x03')
  38. def test_encode_binary_b64_packet(self):
  39. pkt = packet.Packet(packet.MESSAGE, data=b'\x01\x02\x03\x04',
  40. binary=True)
  41. self.assertEqual(pkt.packet_type, packet.MESSAGE)
  42. self.assertEqual(pkt.data, b'\x01\x02\x03\x04')
  43. self.assertTrue(pkt.binary)
  44. self.assertEqual(pkt.encode(b64=True), b'b4AQIDBA==')
  45. def test_encode_binary_packet_py3(self):
  46. pkt = packet.Packet(packet.MESSAGE, data=b'\x01\x02\x03')
  47. self.assertEqual(pkt.packet_type, packet.MESSAGE)
  48. self.assertEqual(pkt.data, b'\x01\x02\x03')
  49. self.assertTrue(pkt.binary)
  50. self.assertEqual(pkt.encode(), b'\x04\x01\x02\x03')
  51. def test_decode_binary_packet(self):
  52. pkt = packet.Packet(encoded_packet=b'\x04\x01\x02\x03')
  53. self.assertTrue(pkt.encode(), b'\x04\x01\x02\x03')
  54. def test_decode_binary_bytearray_packet(self):
  55. pkt = packet.Packet(encoded_packet=bytearray(b'\x04\x01\x02\x03'))
  56. self.assertTrue(pkt.encode(), b'\x04\x01\x02\x03')
  57. def test_decode_binary_b64_packet(self):
  58. pkt = packet.Packet(encoded_packet=b'b4AAEC')
  59. self.assertTrue(pkt.encode(), b'\x04\x01\x02\x03')
  60. def test_encode_json_packet(self):
  61. pkt = packet.Packet(packet.MESSAGE, data={'a': 123, 'b': '456'})
  62. self.assertEqual(pkt.packet_type, packet.MESSAGE)
  63. self.assertEqual(pkt.data, {'a': 123, 'b': '456'})
  64. self.assertFalse(pkt.binary)
  65. self.assertIn(pkt.encode(), [b'4{"a":123,"b":"456"}',
  66. b'4{"b":"456","a":123}'])
  67. def test_decode_json_packet(self):
  68. pkt = packet.Packet(encoded_packet=b'4{"a":123,"b":"456"}')
  69. self.assertIn(pkt.encode(), [b'4{"a":123,"b":"456"}',
  70. b'4{"b":"456","a":123}'])
  71. def test_encode_number_packet(self):
  72. pkt = packet.Packet(packet.MESSAGE, data=123)
  73. self.assertEqual(pkt.packet_type, packet.MESSAGE)
  74. self.assertEqual(pkt.data, 123)
  75. self.assertFalse(pkt.binary)
  76. self.assertEqual(pkt.encode(), b'4123')
  77. def test_decode_number_packet(self):
  78. pkt = packet.Packet(encoded_packet=b'4123')
  79. self.assertEqual(pkt.packet_type, packet.MESSAGE)
  80. # integer payloads are parsed as strings, see
  81. # https://github.com/miguelgrinberg/python-engineio/issues/75
  82. # for background on this decision
  83. self.assertEqual(pkt.data, '123')
  84. self.assertFalse(pkt.binary)
  85. self.assertEqual(pkt.encode(), b'4123')