def test_MAP_LIST(self):  # 10
     # GIVEN
     self.parser._mapList = None
     # WHEN
     self.parser.handlePacket(Packet.decode(
         '\x00\n\x00\x00\x00E\x00\x00\x00ATD-Bamboo_small?game=CDW.AOCTD?numteams=2?class0=Open?class1=Open'
     ))
     self.parser.handlePacket(Packet.decode(
         '\x00\n\x00\x00\x00O\x00\x00\x00KPTB-Valley_small?game=CDW.PlantTheBanner?numteams=2?class0=Open?class1=Open'
     ))
     # THEN
     self.assertListEqual(['TD-Bamboo_small', 'PTB-Valley_small'], self.parser._mapList)
 def test_getNextMap_current_map_is_last(self):
     # GIVEN
     self.parser._mapList = None
     self.parser.handlePacket(Packet.decode(
         '\x00\n\x00\x00\x00E\x00\x00\x00ATD-Bamboo_small?game=CDW.AOCTD?numteams=2?class0=Open?class1=Open'
     ))
     self.parser.handlePacket(Packet.decode(
         '\x00\n\x00\x00\x00O\x00\x00\x00KPTB-Valley_small?game=CDW.PlantTheBanner?numteams=2?class0=Open?class1=Open'
     ))
     self.parser.handlePacket(Packet.decode('\x00\t\x00\x00\x00\x18\x00\x00\x00\x01\x00\x00\x00\x10PTB-Valley_small'))
     # WHEN
     self.assertEqual("PTB-Valley_small", self.parser.getMap())
     # THEN
     self.assertEqual('TD-Bamboo_small', self.parser.getNextMap())
 def test_MAP_LIST(self):  # 10
     # GIVEN
     self.parser._mapList = None
     # WHEN
     self.parser.handlePacket(
         Packet.decode(
             '\x00\n\x00\x00\x00E\x00\x00\x00ATD-Bamboo_small?game=CDW.AOCTD?numteams=2?class0=Open?class1=Open'
         ))
     self.parser.handlePacket(
         Packet.decode(
             '\x00\n\x00\x00\x00O\x00\x00\x00KPTB-Valley_small?game=CDW.PlantTheBanner?numteams=2?class0=Open?class1=Open'
         ))
     # THEN
     self.assertListEqual(['TD-Bamboo_small', 'PTB-Valley_small'],
                          self.parser._mapList)
 def test_MAP_CHANGED(self):  # 9
     # GIVEN
     self.parser.game.mapName = "old"
     # WHEN
     self.parser.handlePacket(Packet.decode('\x00\t\x00\x00\x00\x0f\x00\x00\x00#\x00\x00\x00\x07TD-Isle'))
     # THEN
     self.assertEqual("TD-Isle", self.parser.game.mapName)
     self.assertEqual("TD-Isle", self.parser.getMap())
 def test_SUICIDE(self):  # 16
     # GIVEN
     poorguy = FakeClient(self.parser, name="attacker_name", guid='76561198070138838')
     poorguy.connects("1")
     # WHEN
     self.parser.handlePacket(Packet.decode('\x00\x10\x00\x00\x00\x08\x01\x10\x00\x01\x06\x8c\x87\xd6'))
     # THEN
     self.assert_has_event("EVT_CLIENT_SUICIDE", client=poorguy, target=poorguy, data=(100, None, None))
 def test_TEAM_CHANGED_1(self):  # 13
     # GIVEN
     player = FakeClient(self.parser, name="Pheonix", guid="76561198070138838")
     player.connects("1")
     self.assertEqual(TEAM_UNKNOWN, player.team)
     # WHEN
     self.parser.handlePacket(Packet.decode('\x00\r\x00\x00\x00\x0c\x01\x10\x00\x01\x06\x8c\x87\xd6\x00\x00\x00\x01'))
     # THEN
     self.assertEqual(1, player.team)
 def test_NAME_CHANGED(self):  # 14
     # GIVEN
     player = FakeClient(self.parser, name="Pheonix", guid="123456789")
     player.connects("1")
     # WHEN
     self.parser.handlePacket(Packet.decode(
         '\x00\x0e\x00\x00\x00\x14\x00\x00\x00\x00\x07[\xcd\x15\x00\x00\x00\x08new name'
     ))
     # THEN
     self.assertEqual('new name', player.name)
 def test_getNextMap_current_map_is_last(self):
     # GIVEN
     self.parser._mapList = None
     self.parser.handlePacket(
         Packet.decode(
             '\x00\n\x00\x00\x00E\x00\x00\x00ATD-Bamboo_small?game=CDW.AOCTD?numteams=2?class0=Open?class1=Open'
         ))
     self.parser.handlePacket(
         Packet.decode(
             '\x00\n\x00\x00\x00O\x00\x00\x00KPTB-Valley_small?game=CDW.PlantTheBanner?numteams=2?class0=Open?class1=Open'
         ))
     self.parser.handlePacket(
         Packet.decode(
             '\x00\t\x00\x00\x00\x18\x00\x00\x00\x01\x00\x00\x00\x10PTB-Valley_small'
         ))
     # WHEN
     self.assertEqual("PTB-Valley_small", self.parser.getMap())
     # THEN
     self.assertEqual('TD-Bamboo_small', self.parser.getNextMap())
 def test_PLAYER_CHAT(self):  # 3
     # GIVEN
     player = FakeClient(self.parser, name="Pheonix", guid="76561198038608801")
     player.connects("1")
     self.clear_events()
     # WHEN
     self.parser.handlePacket(Packet.decode(
         '\x00\x03\x00\x00\x00\x17\x01\x10\x00\x01\x04\xabk\xa1\x00\x00\x00\x07 sorry \x00\x00\x00\x00'))
     # THEN
     self.assert_has_event("EVT_CLIENT_SAY", data='sorry', client=player)
 def test_MAP_CHANGED(self):  # 9
     # GIVEN
     self.parser.game.mapName = "old"
     # WHEN
     self.parser.handlePacket(
         Packet.decode(
             '\x00\t\x00\x00\x00\x0f\x00\x00\x00#\x00\x00\x00\x07TD-Isle'))
     # THEN
     self.assertEqual("TD-Isle", self.parser.game.mapName)
     self.assertEqual("TD-Isle", self.parser.getMap())
 def test_unknown_msgType(self):
     # WHEN
     with patch.object(self.parser, "warning") as warning_mock:
         self.parser.handlePacket(
             Packet.decode('\x00c\x00\x00\x00\x0f\x00\x00\x00\x00I\x96\x02\xd2\x00\x00\x00\x03f00'))
     # THEN
     self.assertListEqual([], self.evt_queue)
     self.assertListEqual([
          call("unkown RCON message type: 99. REPORT THIS TO THE B3 FORUMS. Packet.decode('\\x00c\\x00\\x00\\x00\\x0f\\x00\\x00\\x00\\x00I\\x96\\x02\\xd2\\x00\\x00\\x00\\x03f00')  # {'msgType': 99, 'dataLength': 15, 'data': '\\x00\\x00\\x00\\x00I\\x96\\x02\\xd2\\x00\\x00\\x00\\x03f00'}")
                          ], warning_mock.mock_calls)
 def test_NAME_CHANGED(self):  # 14
     # GIVEN
     player = FakeClient(self.parser, name="Pheonix", guid="123456789")
     player.connects("1")
     # WHEN
     self.parser.handlePacket(
         Packet.decode(
             '\x00\x0e\x00\x00\x00\x14\x00\x00\x00\x00\x07[\xcd\x15\x00\x00\x00\x08new name'
         ))
     # THEN
     self.assertEqual('new name', player.name)
 def test_PLAYER_CONNECT(self):  # 4
     # GIVEN
     self.assertIsNone(self.parser.clients.getByGUID("1234567890"))
     # WHEN
     self.parser.handlePacket(Packet.decode(
         '\x00\x04\x00\x00\x00\x13\x00\x00\x00\x00I\x96\x02\xd2\x00\x00\x00\x07player1'
     ))
     # THEN
     player = self.parser.clients.getByGUID("1234567890")
     self.assertIsNotNone(player)
     self.assertEqual('player1', player.name)
 def test_PLAYER_CHAT_team(self):  # 3
     # GIVEN
     player = FakeClient(self.parser, name="Pheonix", guid="76561198038608801")
     player.connects("1")
     self.clear_events()
     player.team = 0  # ugly, until chiv team ids got converted into b3 team ids
     # WHEN
     self.parser.handlePacket(Packet.decode(
         '\x00\x03\x00\x00\x00\x17\x01\x10\x00\x01\x04\xabk\xa1\x00\x00\x00\x07 sorry \x00\x00\x00\x00'))
     # THEN
     self.assert_has_event("EVT_CLIENT_TEAM_SAY", data='sorry', client=player)
 def test_PLAYER_DISCONNECT(self):  # 5
     # GIVEN
     player = FakeClient(self.parser, name="Pheonix", guid="76561198036015889")
     player.connects("1")
     self.clear_events()
     # WHEN
     self.parser.handlePacket(Packet.decode(
         '\x00\x05\x00\x00\x00\x08\x01\x10\x00\x01\x04\x83\xdb\x11'
     ))
     # THEN
     self.assert_has_event("EVT_CLIENT_DISCONNECT", data='1', client=player)
 def test_PLAYER_CONNECT(self):  # 4
     # GIVEN
     self.assertIsNone(self.parser.clients.getByGUID("1234567890"))
     # WHEN
     self.parser.handlePacket(
         Packet.decode(
             '\x00\x04\x00\x00\x00\x13\x00\x00\x00\x00I\x96\x02\xd2\x00\x00\x00\x07player1'
         ))
     # THEN
     player = self.parser.clients.getByGUID("1234567890")
     self.assertIsNotNone(player)
     self.assertEqual('player1', player.name)
 def test_KILL_teamkill(self):  # 15
     # GIVEN
     attacker = FakeClient(self.parser, name="attacker_name", guid='76561198036015889', team=TEAM_BLUE)
     attacker.connects("1")
     victim = FakeClient(self.parser, name="victim_name", guid='76561198021620061', team=TEAM_BLUE)
     victim.connects("2")
     # WHEN
     self.parser.handlePacket(Packet.decode(
         '\x00\x0f\x00\x00\x00\x1e\x01\x10\x00\x01\x04\x83\xdb\x11\x01\x10\x00\x01\x03\xa81]\x00\x00\x00\nTekko Kagi'
     ))
     # THEN
     self.assert_has_event("EVT_CLIENT_KILL_TEAM", client=attacker, target=victim, data=(100, u'Tekko Kagi', 'body'))
 def test_PLAYER_DISCONNECT(self):  # 5
     # GIVEN
     player = FakeClient(self.parser,
                         name="Pheonix",
                         guid="76561198036015889")
     player.connects("1")
     self.clear_events()
     # WHEN
     self.parser.handlePacket(
         Packet.decode(
             '\x00\x05\x00\x00\x00\x08\x01\x10\x00\x01\x04\x83\xdb\x11'))
     # THEN
     self.assert_has_event("EVT_CLIENT_DISCONNECT", data='1', client=player)
 def test_PLAYER_CHAT(self):  # 3
     # GIVEN
     player = FakeClient(self.parser,
                         name="Pheonix",
                         guid="76561198038608801")
     player.connects("1")
     self.clear_events()
     # WHEN
     self.parser.handlePacket(
         Packet.decode(
             '\x00\x03\x00\x00\x00\x17\x01\x10\x00\x01\x04\xabk\xa1\x00\x00\x00\x07 sorry \x00\x00\x00\x00'
         ))
     # THEN
     self.assert_has_event("EVT_CLIENT_SAY", data='sorry', client=player)
 def test_unknown_msgType(self):
     # WHEN
     with patch.object(self.parser, "warning") as warning_mock:
         self.parser.handlePacket(
             Packet.decode(
                 '\x00c\x00\x00\x00\x0f\x00\x00\x00\x00I\x96\x02\xd2\x00\x00\x00\x03f00'
             ))
     # THEN
     self.assertListEqual([], self.evt_queue)
     self.assertListEqual([
         call(
             "unkown RCON message type: 99. REPORT THIS TO THE B3 FORUMS. Packet.decode('\\x00c\\x00\\x00\\x00\\x0f\\x00\\x00\\x00\\x00I\\x96\\x02\\xd2\\x00\\x00\\x00\\x03f00')  # {'msgType': 99, 'dataLength': 15, 'data': '\\x00\\x00\\x00\\x00I\\x96\\x02\\xd2\\x00\\x00\\x00\\x03f00'}"
         )
     ], warning_mock.mock_calls)
 def test_TEAM_CHANGED_1(self):  # 13
     # GIVEN
     player = FakeClient(self.parser,
                         name="Pheonix",
                         guid="76561198070138838")
     player.connects("1")
     self.assertEqual(TEAM_UNKNOWN, player.team)
     # WHEN
     self.parser.handlePacket(
         Packet.decode(
             '\x00\r\x00\x00\x00\x0c\x01\x10\x00\x01\x06\x8c\x87\xd6\x00\x00\x00\x01'
         ))
     # THEN
     self.assertEqual(1, player.team)
 def test_SUICIDE(self):  # 16
     # GIVEN
     poorguy = FakeClient(self.parser,
                          name="attacker_name",
                          guid='76561198070138838')
     poorguy.connects("1")
     # WHEN
     self.parser.handlePacket(
         Packet.decode(
             '\x00\x10\x00\x00\x00\x08\x01\x10\x00\x01\x06\x8c\x87\xd6'))
     # THEN
     self.assert_has_event("EVT_CLIENT_SUICIDE",
                           client=poorguy,
                           target=poorguy,
                           data=(100, None, None))
 def test_PLAYER_CHAT_team(self):  # 3
     # GIVEN
     player = FakeClient(self.parser,
                         name="Pheonix",
                         guid="76561198038608801")
     player.connects("1")
     self.clear_events()
     player.team = 0  # ugly, until chiv team ids got converted into b3 team ids
     # WHEN
     self.parser.handlePacket(
         Packet.decode(
             '\x00\x03\x00\x00\x00\x17\x01\x10\x00\x01\x04\xabk\xa1\x00\x00\x00\x07 sorry \x00\x00\x00\x00'
         ))
     # THEN
     self.assert_has_event("EVT_CLIENT_TEAM_SAY",
                           data='sorry',
                           client=player)
 def test_KILL(self):  # 15
     # GIVEN
     attacker = FakeClient(self.parser,
                           name="attacker_name",
                           guid='76561198036015889')
     attacker.connects("1")
     victim = FakeClient(self.parser,
                         name="victim_name",
                         guid='76561198021620061')
     victim.connects("2")
     # WHEN
     self.parser.handlePacket(
         Packet.decode(
             '\x00\x0f\x00\x00\x00\x1e\x01\x10\x00\x01\x04\x83\xdb\x11\x01\x10\x00\x01\x03\xa81]\x00\x00\x00\nTekko Kagi'
         ))
     # THEN
     self.assert_has_event("EVT_CLIENT_KILL",
                           client=attacker,
                           target=victim,
                           data=(100, u'Tekko Kagi', 'body'))