from twnet_parser.packet import * def test_parse_7_real_map_change(): packet = parse7(b'\x00\x01\x01\x58\xeb\x9a\xf4' \ b'\x40\x38\x01' \ b'\x05BlmapChill\x00' \ b'\xde\xcf\xaa\xee\x0b' \ b'\x8b\xbe\x8a\x01' \ b'\x08' \ b'\xa8\x15' \ b'\x81\x7d\xbf\x48\xc5\xf1\x94\x37\xc4\x58\x2c\x6f\x98\xc9\xc2\x04\xc1\xf1\x69\x76\x32\xf0\x44\x58\x74\x54\x55\x89\x84\x00\xfb\x28') assert packet.version == '0.7' assert packet.header.token == b'\x58\xeb\x9a\xf4' assert packet.header.num_chunks == 1 assert packet.header.ack == 1 assert packet.header.flags.control == False assert packet.header.flags.compression == False # TODO: uncomment assert len(packet.messages) == 1 assert packet.messages[0].message_name == 'map_change' # Teeworlds 0.7 Protocol packet # Flags: none (..00 00..) # ..0. .... = Connection-oriented # ...0 .... = Not compressed # .... 0... = No resend requested # .... .0.. = Not a control message # Acknowledged sequence number: 1 (.... ..00 0000 0001) # Number of chunks: 1 # Token: 58eb9af4 # Payload (59 bytes) # Teeworlds 0.7 Protocol chunk: sys.map_change # Header (vital: 1) # Flags: vital (01.. ....) # Size: 56 bytes (..00 0000 ..11 1000) # Sequence number: 1 (00.. .... 0000 0001) # Message: sys.map_change # Name: "BlmapChill" # Crc: -1592087519 # Size: 1134475 # Num response chunks per request: 8 # Chunk size: 1384 # Sha256: 817dbf48c5f19437c4582c6f98c9c204c1f1697632f04458745455898400fb28 # def test_parse_7_real_multi_chunk_compressed(): # # 0.7 motd, srv settings, ready # packet = parse7(b'\x10\x02\x03\x58\xeb\x9a\xf4\x4a\x42\x88\x4a\x6e\x16\xba\x31\x46\xa2\x84\x9e\xbf\xe2\x06') # # ^ ^ ^ ^ ^ ^ ^ # # |ack=2 | \_____________/ \_________________________________________________________/ # # | | | | # # | chunks=3 token huffman compressed # # | 3 chunks: # # compression=true game.sv_motd, game.sv_server_settings, sys.con_ready # assert packet.version == '0.7' # # assert packet.header.token == b'\x58\xeb\x9a\xf4' # # assert packet.header.num_chunks == 3 # assert packet.header.ack == 2 # # assert packet.header.flags.compression == True # assert packet.header.flags.control == False # # # TODO: uncomment # # assert len(packet.messages) == 3 # # assert packet.messages[0].message_name == 'sv_motd' # # assert packet.messages[1].message_name == 'sv_server_settings' # # assert packet.messages[2].message_name == 'con_ready'