diff --git a/tests/packets6/game_sv_chat_test.py b/tests/packets6/game_sv_chat_test.py new file mode 100644 index 0000000..09f5d73 --- /dev/null +++ b/tests/packets6/game_sv_chat_test.py @@ -0,0 +1,54 @@ +from twnet_parser.packet import parse6, TwPacket, PacketHeader6 +from twnet_parser.messages6.game.sv_chat import MsgSvChat +from twnet_parser.messages6.system.map_data import MsgMapData + +def test_game_sv_chat(): + """ + Sent by a vanilla 0.6.5 server + copied from a real traffic capture + """ + data = b'\x08\x04' \ + b'\x02\x9c\x6b\xcb\xda\x42\x0e\x07\x06\x00\x40\x27\x6e\x61\x6d\x65' \ + b'\x6c\x65\x73\x73\x20\x74\x65\x65\x27\x20\x65\x6e\x74\x65\x72\x65' \ + b'\x64\x20\x61\x6e\x64\x20\x6a\x6f\x69\x6e\x65\x64\x20\x74\x68\x65' \ + b'\x20\x67\x61\x6d\x65\x00\x06\x0b\x0f\x9a\x51\x9b\x51\xb3\x92\xad' \ + b'\xb9\x0b\x9f\x01\x00\x03\x00\x06\x00\x00\x00\x00\x00\x14\x00\x00' \ + b'\x01\x0b\x00\xda\xc8\xf0\x91\x02\xcc\xb0\xd0\xb1\x02\xda\xe8\xd8' \ + b'\xf0\x0b\xff\xff\xfb\xf7\x0f\xff\xfd\xfb\xf7\x0f\xff\xfd\xfb\xf7' \ + b'\x0f\xff\xff\xfb\xf7\x0f\x40\xde\xe4\xd0\xb1\x03\xff\xad\x98\xa1' \ + b'\x01\xff\xfd\xfb\xf7\x0f\xff\xfd\xfb\xf7\x0f\xff\xfd\xfb\xf7\x0f' \ + b'\xff\xff\xfb\xf7\x0f\x00\x80\xfe\x07\x80\xfe\x07\x0a\x00\x01\x00' \ + b'\x00\x00\x00' + + + packet = parse6(data) + + assert packet.version == '0.6' + assert packet.header.ack == 4 + assert packet.header.num_chunks == 2 + assert packet.header.flags.token is True + assert packet.header.flags.control is False + assert packet.header.flags.connless is False + assert packet.header.flags.resend is False + assert packet.header.flags.compression is False + + assert len(packet.messages) == 2 + + msg: MsgSvChat = packet.messages[0] + + assert msg.system_message is False + assert msg.message_name == 'sv_chat' + assert msg.client_id == -1 + assert msg.message == "'nameless tee' entered and joined the game" + + # no idea if this is correct + msg2: MsgMapData = packet.messages[1] + assert msg2.system_message is True + assert msg2.message_name == "map_data" + assert msg2.chunk == 0 + assert msg2.crc == 10 + + repack = packet.pack() + # TODO: this has a diff + # assert repack == data +