def test_kill(self, timer_patch): Tk_functional_test.p._round_grace = 0 joe = FakeClient(fakeConsole, name="Joe", exactName="Joe", guid="joeguid", groupBits=1, team=b3.TEAM_RED) mike = FakeClient(fakeConsole, name="Mike", exactName="Mike", guid="mikeguid", groupBits=1, team=b3.TEAM_RED) joe.warn = Mock() joe.connects(0) mike.connects(1) joe.kills(mike) self.assertEqual(1, joe.warn.call_count) self.assertIsNotNone(mike.getMessageHistoryLike("^7type ^3!fp ^7 to forgive"))
def test_kill(self, timer_patch): Tk_functional_test.p._round_grace = 0 joe = FakeClient(fakeConsole, name="Joe", exactName="Joe", guid="joeguid", groupBits=1, team=b3.TEAM_RED) mike = FakeClient(fakeConsole, name="Mike", exactName="Mike", guid="mikeguid", groupBits=1, team=b3.TEAM_RED) joe.warn = Mock() joe.connects(0) mike.connects(1) joe.kills(mike) self.assertEqual(1, joe.warn.call_count) self.assertIsNotNone( mike.getMessageHistoryLike("^7type ^3!fp ^7 to forgive"))
class Tk_functional_test(B3TestCase): def setUp(self): B3TestCase.setUp(self) self.console.gameName = 'f00' self.adminPlugin = AdminPlugin(self.console, ADMIN_CONFIG_FILE) when(self.console).getPlugin("admin").thenReturn(self.adminPlugin) self.adminPlugin.onLoadConfig() self.adminPlugin.onStartup() self.conf = XmlConfigParser() self.conf.setXml(r""" <configuration plugin="tk"> <settings name="settings"> <set name="max_points">400</set> <set name="levels">0,1,2,20,40</set> <set name="round_grace">7</set> <set name="issue_warning">sfire</set> <set name="grudge_enable">True</set> <set name="private_messages">True</set> </settings> <settings name="messages"> <set name="ban">^7team damage over limit</set> <set name="forgive">^7$vname^7 has forgiven $aname [^3$points^7]</set> <set name="grudged">^7$vname^7 has a ^1grudge ^7against $aname [^3$points^7]</set> <set name="forgive_many">^7$vname^7 has forgiven $attackers</set> <set name="forgive_warning">^1ALERT^7: $name^7 auto-kick if not forgiven. Type ^3!forgive $cid ^7to forgive. [^3damage: $points^7]</set> <set name="no_forgive">^7no one to forgive</set> <set name="no_punish">^7no one to punish</set> <set name="players">^7Forgive who? %s</set> <set name="forgive_info">^7$name^7 has ^3$points^7 TK points</set> <set name="grudge_info">^7$name^7 is ^1grudged ^3$points^7 TK points</set> <set name="forgive_clear">^7$name^7 cleared of ^3$points^7 TK points</set> </settings> <settings name="level_0"> <set name="kill_multiplier">2</set> <set name="damage_multiplier">1</set> <set name="ban_length">2</set> </settings> <settings name="level_1"> <set name="kill_multiplier">2</set> <set name="damage_multiplier">1</set> <set name="ban_length">2</set> </settings> <settings name="level_2"> <set name="kill_multiplier">1</set> <set name="damage_multiplier">0.5</set> <set name="ban_length">1</set> </settings> <settings name="level_20"> <set name="kill_multiplier">1</set> <set name="damage_multiplier">0.5</set> <set name="ban_length">0</set> </settings> <settings name="level_40"> <set name="kill_multiplier">0.75</set> <set name="damage_multiplier">0.5</set> <set name="ban_length">0</set> </settings> </configuration> """) self.p = TkPlugin(self.console, self.conf) self.p.onLoadConfig() self.p.onStartup() self.joe = FakeClient(self.console, name="Joe", guid="joeguid", groupBits=1, team=b3.TEAM_RED) self.mike = FakeClient(self.console, name="Mike", guid="mikeguid", groupBits=1, team=b3.TEAM_RED) self.bill = FakeClient(self.console, name="Bill", guid="billguid", groupBits=1, team=b3.TEAM_RED) self.superadmin = FakeClient(self.console, name="superadmin", guid="superadminguid", groupBits=128, team=b3.TEAM_RED) def test_dammage_different_teams(self, timer_patch): self.joe.warn = Mock() self.joe.connects(0) self.mike.connects(1) self.mike.team = b3.TEAM_BLUE self.joe.damages(self.mike) self.assertEqual(0, self.joe.warn.call_count) def test_kill_different_teams(self, timer_patch): self.joe.warn = Mock() self.joe.connects(0) self.mike.connects(1) self.mike.team = b3.TEAM_BLUE self.joe.kills(self.mike) self.assertEqual(0, self.joe.warn.call_count) def test_kill_within_10s(self, timer_patch): self.p._round_grace = 10 self.joe.warn = Mock() self.joe.connects(0) self.mike.connects(1) self.joe.kills(self.mike) self.assertEqual(1, self.joe.warn.call_count) def test_dammage(self, timer_patch): self.p._round_grace = 0 self.joe.warn = Mock() self.joe.connects(0) self.mike.connects(1) self.joe.damages(self.mike) self.joe.damages(self.mike) self.joe.damages(self.mike) self.joe.damages(self.mike) self.joe.damages(self.mike) self.assertEqual(0, self.joe.warn.call_count) def test_kill(self, timer_patch): self.p._round_grace = 0 self.joe.warn = Mock() self.joe.connects(0) self.mike.connects(1) self.joe.kills(self.mike) self.assertEqual(1, self.joe.warn.call_count) self.assertIsNotNone( self.mike.getMessageHistoryLike("^7type ^3!fp ^7 to forgive")) def test_multikill(self, timer_patch): self.p._round_grace = 0 with patch.object(self.console, "say") as patched_say: self.joe.warn = Mock() self.joe.tempban = Mock() self.joe.connects(0) self.mike.connects(1) self.mike.clearMessageHistory() self.joe.kills(self.mike) self.assertEqual(1, self.joe.warn.call_count) self.assertEquals( 1, len( self.mike.getAllMessageHistoryLike( "^7type ^3!fp ^7 to forgive"))) self.joe.kills(self.mike) self.assertEqual( 1, len([ call_args[0][0] for call_args in patched_say.call_args_list if "auto-kick if not forgiven" in call_args[0][0] ])) self.joe.kills(self.mike) self.assertEqual(1, self.joe.tempban.call_count) def test_forgiveinfo(self, timer_patch): self.superadmin.connects(99) self.p._round_grace = 0 self.joe.warn = Mock() self.joe.connects(0) self.mike.connects(1) self.bill.connects(2) self.joe.kills(self.mike) self.superadmin.clearMessageHistory() self.superadmin.says("!forgiveinfo joe") self.assertEqual(['Joe has 200 TK points, Attacked: Mike (200)'], self.superadmin.message_history) self.joe.damages(self.bill, points=6) self.superadmin.clearMessageHistory() self.superadmin.says("!forgiveinfo joe") self.assertEqual( ['Joe has 206 TK points, Attacked: Mike (200), Bill (6)'], self.superadmin.message_history) self.mike.damages(self.joe, points=27) self.superadmin.clearMessageHistory() self.superadmin.says("!forgiveinfo joe") self.assertEqual([ 'Joe has 206 TK points, Attacked: Mike (200), Bill (6), Attacked By: Mike [27]' ], self.superadmin.message_history) def test_forgive(self, timer_patch): self.superadmin.connects(99) self.p._round_grace = 0 self.joe.warn = Mock() self.joe.connects(0) self.mike.connects(1) self.joe.kills(self.mike) self.superadmin.clearMessageHistory() self.superadmin.says("!forgiveinfo joe") self.assertEqual(['Joe has 200 TK points, Attacked: Mike (200)'], self.superadmin.message_history) self.mike.says("!forgive") self.superadmin.clearMessageHistory() self.superadmin.says("!forgiveinfo joe") self.assertEqual(["Joe has 0 TK points"], self.superadmin.message_history) def test_forgiveclear(self, timer_patch): self.superadmin.connects(99) self.p._round_grace = 0 self.joe.warn = Mock() self.joe.connects(0) self.mike.connects(1) self.joe.kills(self.mike) self.superadmin.clearMessageHistory() self.superadmin.says("!forgiveinfo joe") self.assertEqual(['Joe has 200 TK points, Attacked: Mike (200)'], self.superadmin.message_history) self.superadmin.says("!forgiveclear joe") self.superadmin.clearMessageHistory() self.superadmin.says("!forgiveinfo joe") self.assertEqual(["Joe has 0 TK points"], self.superadmin.message_history) def test_forgivelist(self, timer_patcher): self.p._round_grace = 0 self.joe.connects(0) self.mike.connects(1) self.bill.connects(2) self.joe.clearMessageHistory() self.joe.says("!forgivelist") self.assertEqual(["no one to forgive"], self.joe.message_history) self.mike.damages(self.joe, points=14) self.joe.clearMessageHistory() self.joe.says("!forgivelist") self.assertEqual(['Forgive who? [1] Mike [14]'], self.joe.message_history) self.bill.damages(self.joe, points=84) self.joe.clearMessageHistory() self.joe.says("!forgivelist") self.assertEqual(['Forgive who? [1] Mike [14], [2] Bill [84]'], self.joe.message_history) def test_forgiveall(self, timer_patcher): self.p._round_grace = 0 self.joe.connects(0) self.mike.connects(1) self.bill.connects(2) self.mike.damages(self.joe, points=14) self.bill.damages(self.joe, points=84) self.joe.clearMessageHistory() self.joe.says("!forgivelist") self.assertEqual(['Forgive who? [1] Mike [14], [2] Bill [84]'], self.joe.message_history) self.joe.says("!forgiveall") self.joe.clearMessageHistory() self.joe.says("!forgivelist") self.assertNotIn("Mike", self.joe.message_history[0]) self.assertNotIn("Bill", self.joe.message_history[0]) def test_forgiveprev(self, timer_patcher): self.p._round_grace = 0 self.joe.connects(0) self.mike.connects(1) self.bill.connects(2) self.mike.damages(self.joe, points=14) self.bill.damages(self.joe, points=84) self.joe.clearMessageHistory() self.joe.says("!forgivelist") self.assertEqual(['Forgive who? [1] Mike [14], [2] Bill [84]'], self.joe.message_history) self.joe.says("!forgiveprev") self.joe.clearMessageHistory() self.joe.says("!forgivelist") self.assertEqual(['Forgive who? [1] Mike [14]'], self.joe.message_history)
class Tk_functional_test(B3TestCase): def setUp(self): B3TestCase.setUp(self) self.console.gameName = 'f00' self.adminPlugin = AdminPlugin(self.console, ADMIN_CONFIG_FILE) when(self.console).getPlugin("admin").thenReturn(self.adminPlugin) self.adminPlugin.onLoadConfig() self.adminPlugin.onStartup() self.conf = XmlConfigParser() self.conf.setXml(r""" <configuration plugin="tk"> <settings name="settings"> <set name="max_points">400</set> <set name="levels">0,1,2,20,40</set> <set name="round_grace">7</set> <set name="issue_warning">sfire</set> <set name="grudge_enable">True</set> <set name="private_messages">True</set> </settings> <settings name="messages"> <set name="ban">^7team damage over limit</set> <set name="forgive">^7$vname^7 has forgiven $aname [^3$points^7]</set> <set name="grudged">^7$vname^7 has a ^1grudge ^7against $aname [^3$points^7]</set> <set name="forgive_many">^7$vname^7 has forgiven $attackers</set> <set name="forgive_warning">^1ALERT^7: $name^7 auto-kick if not forgiven. Type ^3!forgive $cid ^7to forgive. [^3damage: $points^7]</set> <set name="no_forgive">^7no one to forgive</set> <set name="no_punish">^7no one to punish</set> <set name="players">^7Forgive who? %s</set> <set name="forgive_info">^7$name^7 has ^3$points^7 TK points</set> <set name="grudge_info">^7$name^7 is ^1grudged ^3$points^7 TK points</set> <set name="forgive_clear">^7$name^7 cleared of ^3$points^7 TK points</set> </settings> <settings name="level_0"> <set name="kill_multiplier">2</set> <set name="damage_multiplier">1</set> <set name="ban_length">2</set> </settings> <settings name="level_1"> <set name="kill_multiplier">2</set> <set name="damage_multiplier">1</set> <set name="ban_length">2</set> </settings> <settings name="level_2"> <set name="kill_multiplier">1</set> <set name="damage_multiplier">0.5</set> <set name="ban_length">1</set> </settings> <settings name="level_20"> <set name="kill_multiplier">1</set> <set name="damage_multiplier">0.5</set> <set name="ban_length">0</set> </settings> <settings name="level_40"> <set name="kill_multiplier">0.75</set> <set name="damage_multiplier">0.5</set> <set name="ban_length">0</set> </settings> </configuration> """) self.p = TkPlugin(self.console, self.conf) self.p.onLoadConfig() self.p.onStartup() self.joe = FakeClient(self.console, name="Joe", guid="joeguid", groupBits=1, team=b3.TEAM_RED) self.mike = FakeClient(self.console, name="Mike", guid="mikeguid", groupBits=1, team=b3.TEAM_RED) self.bill = FakeClient(self.console, name="Bill", guid="billguid", groupBits=1, team=b3.TEAM_RED) self.superadmin = FakeClient(self.console, name="superadmin",guid="superadminguid", groupBits=128, team=b3.TEAM_RED) def test_dammage_different_teams(self, timer_patch): self.joe.warn = Mock() self.joe.connects(0) self.mike.connects(1) self.mike.team = b3.TEAM_BLUE self.joe.damages(self.mike) self.assertEqual(0, self.joe.warn.call_count) def test_kill_different_teams(self, timer_patch): self.joe.warn = Mock() self.joe.connects(0) self.mike.connects(1) self.mike.team = b3.TEAM_BLUE self.joe.kills(self.mike) self.assertEqual(0, self.joe.warn.call_count) def test_kill_within_10s(self, timer_patch): self.p._round_grace = 10 self.joe.warn = Mock() self.joe.connects(0) self.mike.connects(1) self.joe.kills(self.mike) self.assertEqual(1, self.joe.warn.call_count) def test_dammage(self, timer_patch): self.p._round_grace = 0 self.joe.warn = Mock() self.joe.connects(0) self.mike.connects(1) self.joe.damages(self.mike) self.joe.damages(self.mike) self.joe.damages(self.mike) self.joe.damages(self.mike) self.joe.damages(self.mike) self.assertEqual(0, self.joe.warn.call_count) def test_kill(self, timer_patch): self.p._round_grace = 0 self.joe.warn = Mock() self.joe.connects(0) self.mike.connects(1) self.joe.kills(self.mike) self.assertEqual(1, self.joe.warn.call_count) self.assertIsNotNone(self.mike.getMessageHistoryLike("^7type ^3!fp ^7 to forgive")) def test_multikill(self, timer_patch): self.p._round_grace = 0 with patch.object(self.console, "say") as patched_say: self.joe.warn = Mock() self.joe.tempban = Mock() self.joe.connects(0) self.mike.connects(1) self.mike.clearMessageHistory() self.joe.kills(self.mike) self.assertEqual(1, self.joe.warn.call_count) self.assertEquals(1, len(self.mike.getAllMessageHistoryLike("^7type ^3!fp ^7 to forgive"))) self.joe.kills(self.mike) self.assertEqual(1, len([call_args[0][0] for call_args in patched_say.call_args_list if "auto-kick if not forgiven" in call_args[0][0]])) self.joe.kills(self.mike) self.assertEqual(1, self.joe.tempban.call_count) def test_forgiveinfo(self, timer_patch): self.superadmin.connects(99) self.p._round_grace = 0 self.joe.warn = Mock() self.joe.connects(0) self.mike.connects(1) self.bill.connects(2) self.joe.kills(self.mike) self.superadmin.clearMessageHistory() self.superadmin.says("!forgiveinfo joe") self.assertEqual(['Joe has 200 TK points, Attacked: Mike (200)'], self.superadmin.message_history) self.joe.damages(self.bill, points=6) self.superadmin.clearMessageHistory() self.superadmin.says("!forgiveinfo joe") self.assertEqual(['Joe has 206 TK points, Attacked: Mike (200), Bill (6)'], self.superadmin.message_history) self.mike.damages(self.joe, points=27) self.superadmin.clearMessageHistory() self.superadmin.says("!forgiveinfo joe") self.assertEqual(['Joe has 206 TK points, Attacked: Mike (200), Bill (6), Attacked By: Mike [27]'], self.superadmin.message_history) def test_forgive(self, timer_patch): self.superadmin.connects(99) self.p._round_grace = 0 self.joe.warn = Mock() self.joe.connects(0) self.mike.connects(1) self.joe.kills(self.mike) self.superadmin.clearMessageHistory() self.superadmin.says("!forgiveinfo joe") self.assertEqual(['Joe has 200 TK points, Attacked: Mike (200)'], self.superadmin.message_history) self.mike.says("!forgive") self.superadmin.clearMessageHistory() self.superadmin.says("!forgiveinfo joe") self.assertEqual(["Joe has 0 TK points"], self.superadmin.message_history) def test_forgiveclear(self, timer_patch): self.superadmin.connects(99) self.p._round_grace = 0 self.joe.warn = Mock() self.joe.connects(0) self.mike.connects(1) self.joe.kills(self.mike) self.superadmin.clearMessageHistory() self.superadmin.says("!forgiveinfo joe") self.assertEqual(['Joe has 200 TK points, Attacked: Mike (200)'], self.superadmin.message_history) self.superadmin.says("!forgiveclear joe") self.superadmin.clearMessageHistory() self.superadmin.says("!forgiveinfo joe") self.assertEqual(["Joe has 0 TK points"], self.superadmin.message_history) def test_forgivelist(self, timer_patcher): self.p._round_grace = 0 self.joe.connects(0) self.mike.connects(1) self.bill.connects(2) self.joe.clearMessageHistory() self.joe.says("!forgivelist") self.assertEqual(["no one to forgive"], self.joe.message_history) self.mike.damages(self.joe, points=14) self.joe.clearMessageHistory() self.joe.says("!forgivelist") self.assertEqual(['Forgive who? [1] Mike [14]'], self.joe.message_history) self.bill.damages(self.joe, points=84) self.joe.clearMessageHistory() self.joe.says("!forgivelist") self.assertEqual(['Forgive who? [1] Mike [14], [2] Bill [84]'], self.joe.message_history) def test_forgiveall(self, timer_patcher): self.p._round_grace = 0 self.joe.connects(0) self.mike.connects(1) self.bill.connects(2) self.mike.damages(self.joe, points=14) self.bill.damages(self.joe, points=84) self.joe.clearMessageHistory() self.joe.says("!forgivelist") self.assertEqual(['Forgive who? [1] Mike [14], [2] Bill [84]'], self.joe.message_history) self.joe.says("!forgiveall") self.joe.clearMessageHistory() self.joe.says("!forgivelist") self.assertNotIn("Mike", self.joe.message_history[0]) self.assertNotIn("Bill", self.joe.message_history[0]) def test_forgiveprev(self, timer_patcher): self.p._round_grace = 0 self.joe.connects(0) self.mike.connects(1) self.bill.connects(2) self.mike.damages(self.joe, points=14) self.bill.damages(self.joe, points=84) self.joe.clearMessageHistory() self.joe.says("!forgivelist") self.assertEqual(['Forgive who? [1] Mike [14], [2] Bill [84]'], self.joe.message_history) self.joe.says("!forgiveprev") self.joe.clearMessageHistory() self.joe.says("!forgivelist") self.assertEqual(['Forgive who? [1] Mike [14]'], self.joe.message_history)