class Test_Tk_default_config(B3TestCase): def setUp(self): super(Test_Tk_default_config, self).setUp() self.console.gameName = 'f00' self.conf = CfgConfigParser() self.conf.load(b3.getAbsolutePath('@b3/conf/plugin_tk.ini')) self.p = TkPlugin(self.console, self.conf) self.p.onLoadConfig() def test_settings(self): self.assertEqual(400, self.p._maxPoints) self.assertEqual(40, self.p._maxLevel) self.assertEqual({ 0: (2.0, 1.0, 2), 1: (2.0, 1.0, 2), 2: (1.0, 0.5, 1), 20: (1.0, 0.5, 0), 40: (0.75, 0.5, 0) }, self.p._levels) self.assertEqual(7, self.p._round_grace) self.assertEqual("sfire", self.p._issue_warning) self.assertTrue(self.p._grudge_enable) self.assertTrue(self.p._private_messages) self.assertEqual(100, self.p._damage_threshold) self.assertEqual(2, self.p._warn_level) self.assertEqual(0, self.p._tkpointsHalflife) self.assertEqual('1h', self.p._tk_warn_duration) def test_messages(self): self.assertEqual("^7team damage over limit", self.p.config.get('messages', 'ban')) self.assertEqual("^7$vname^7 has forgiven $aname [^3$points^7]", self.p.config.get('messages', 'forgive')) self.assertEqual("^7$vname^7 has a ^1grudge ^7against $aname [^3$points^7]", self.p.config.get('messages', 'grudged')) self.assertEqual("^7$vname^7 has forgiven $attackers", self.p.config.get('messages', 'forgive_many')) self.assertEqual("^1ALERT^7: $name^7 auto-kick if not forgiven. Type ^3!forgive $cid ^7to forgive. [^3damage: $points^7]", self.p.config.get('messages', 'forgive_warning')) self.assertEqual("^7no one to forgive", self.p.config.get('messages', 'no_forgive')) self.assertEqual("^7Forgive who? %s", self.p.config.get('messages', 'players')) self.assertEqual("^7$name^7 has ^3$points^7 TK points", self.p.config.get('messages', 'forgive_info')) self.assertEqual("^7$name^7 cleared of ^3$points^7 TK points", self.p.config.get('messages', 'forgive_clear')) self.assertEqual("^3Do not attack teammates, ^1Attacked: ^7$vname ^7[^3$points^7]", self.p.config.get('messages', 'tk_warning_reason')) def test__default_messages(self): conf_items = self.p.config.items('messages') for conf_message_id, conf_message in conf_items: if conf_message_id not in self.p._default_messages: self.fail("%s should be added to the _default_messages dict" % conf_message_id) if conf_message != self.p._default_messages[conf_message_id]: self.fail("default message in the _default_messages dict for %s does not match the message from the config file" % conf_message_id) for default_message_id in self.p._default_messages: if default_message_id not in zip(*conf_items)[0]: self.fail("%s exists in the _default_messages dict, but not in the config file" % default_message_id)
class Test_Tk_default_config(B3TestCase): def setUp(self): super(Test_Tk_default_config, self).setUp() b3.console.gameName = "f00" self.conf = XmlConfigParser() self.conf.load(default_plugin_file) self.p = TkPlugin(b3.console, self.conf) self.p.onLoadConfig() def test(self): self.assertEqual("sfire", self.p._issue_warning) self.assertEqual(7, self.p._round_grace) self.assertEqual(40, self.p._maxLevel) self.assertEqual(400, self.p._maxPoints) self.assertEqual( {0: (2.0, 1.0, 2), 1: (2.0, 1.0, 2), 2: (1.0, 0.5, 1), 20: (1.0, 0.5, 0), 40: (0.75, 0.5, 0)}, self.p._levels, ) self.assertTrue(self.p._private_messages)
class Test_Tk_default_config(B3TestCase): def setUp(self): super(Test_Tk_default_config, self).setUp() b3.console.gameName = 'f00' self.conf = XmlConfigParser() self.conf.load(default_plugin_file) self.p = TkPlugin(b3.console, self.conf) self.p.onLoadConfig() def test(self): self.assertEqual("sfire", self.p._issue_warning) self.assertEqual(7, self.p._round_grace) self.assertEqual(40, self.p._maxLevel) self.assertEqual(400, self.p._maxPoints) self.assertEqual( { 0: (2.0, 1.0, 2), 1: (2.0, 1.0, 2), 2: (1.0, 0.5, 1), 20: (1.0, 0.5, 0), 40: (0.75, 0.5, 0) }, self.p._levels) self.assertTrue(self.p._private_messages)
class Tk_functional_test(B3TestCase): def setUp(self): B3TestCase.setUp(self) self.console.gameName = 'f00' self.adminPlugin = AdminPlugin(self.console, '@b3/conf/plugin_admin.ini') when(self.console).getPlugin("admin").thenReturn(self.adminPlugin) self.adminPlugin.onLoadConfig() self.adminPlugin.onStartup() self.conf = CfgConfigParser() self.conf.loadFromString(dedent(r""" [settings] max_points: 400 levels: 0,1,2,20,40 round_grace: 7 issue_warning: sfire grudge_enable: True private_messages: True damage_threshold: 100 warn_level: 2 halflife: 0 warn_duration: 1h [messages] ban: ^7team damage over limit forgive: ^7$vname^7 has forgiven $aname [^3$points^7] grudged: ^7$vname^7 has a ^1grudge ^7against $aname [^3$points^7] forgive_many: ^7$vname^7 has forgiven $attackers forgive_warning: ^1ALERT^7: $name^7 auto-kick if not forgiven. Type ^3!forgive $cid ^7to forgive. [^3damage: $points^7] no_forgive: ^7no one to forgive no_punish: ^7no one to punish players: ^7Forgive who? %s forgive_info: ^7$name^7 has ^3$points^7 TK points grudge_info: ^7$name^7 is ^1grudged ^3$points^7 TK points forgive_clear: ^7$name^7 cleared of ^3$points^7 TK points tk_warning_reason: ^3Do not attack teammates, ^1Attacked: ^7$vname ^7[^3$points^7] tk_request_action: ^7type ^3!fp ^7 to forgive ^3%s [level_0] kill_multiplier: 2 damage_multiplier: 1 ban_length: 2 [level_1] kill_multiplier: 2 damage_multiplier: 1 ban_length: 2 [level_2] kill_multiplier: 1 damage_multiplier: 0.5 ban_length: 1 [level_20] kill_multiplier: 1 damage_multiplier: 0.5 ban_length: 0 [level_40] kill_multiplier: 0.75 damage_multiplier: 0.5 ban_length: 0 """)) 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)
class Test_onLoadConfig(Test_Tk_plugin): def test_onLoadConfig_minimal(self): # GIVEN self.conf.loadFromString(r"") # WHEN self.p = TkPlugin(self.console, self.conf) self.p.onLoadConfig() # THEN self.assertEqual(400, self.p._maxPoints) self.assertDictEqual({ 0: (2.0, 1.0, 2), 1: (2.0, 1.0, 2), 2: (1.0, 0.5, 1), 20: (1.0, 0.5, 0), 40: (0.75, 0.5, 0) }, self.p._levels) self.assertEqual(40, self.p._maxLevel) self.assertEqual(7, self.p._round_grace) self.assertEqual("sfire", self.p._issue_warning) self.assertTrue(self.p._grudge_enable) self.assertTrue(self.p._private_messages) self.assertEqual(100, self.p._damage_threshold) self.assertEqual(2, self.p._warn_level) self.assertEqual(0, self.p._tkpointsHalflife) self.assertEqual('1h', self.p._tk_warn_duration) def test_onLoadConfig(self): # GIVEN self.conf.loadFromString(dedent(r""" [settings] max_points: 350 levels: 0,1,2 round_grace: 3 issue_warning: foo grudge_enable: no private_messages: off damage_threshold: 99 warn_level: 10 halflife: 3 warn_duration: 3h [level_0] kill_multiplier: 2 damage_multiplier: 1 ban_length: 3 [level_1] kill_multiplier: 2 damage_multiplier: 1 ban_length: 4 [level_2] kill_multiplier: 1 damage_multiplier: 0.5 ban_length: 5 """)) self.p = TkPlugin(self.console, self.conf) # WHEN self.p.onLoadConfig() # THEN self.assertEqual(350, self.p._maxPoints) self.assertDictEqual({ 0: (2.0, 1.0, 3), 1: (2.0, 1.0, 4), 2: (1.0, 0.5, 5), }, self.p._levels) self.assertEqual(2, self.p._maxLevel) self.assertEqual(3, self.p._round_grace) self.assertEqual("foo", self.p._issue_warning) self.assertFalse(self.p._grudge_enable) self.assertFalse(self.p._private_messages) self.assertEqual(99, self.p._damage_threshold) self.assertEqual(10, self.p._warn_level) self.assertEqual(3, self.p._tkpointsHalflife) self.assertEqual('3h', self.p._tk_warn_duration)
class Test_onLoadConfig(Test_Tk_plugin): def test_onLoadConfig_minimal(self): # GIVEN self.conf.loadFromString(r"") # WHEN self.p = TkPlugin(self.console, self.conf) self.p.onLoadConfig() # THEN self.assertEqual(400, self.p._maxPoints) self.assertDictEqual( { 0: (2.0, 1.0, 2), 1: (2.0, 1.0, 2), 2: (1.0, 0.5, 1), 20: (1.0, 0.5, 0), 40: (0.75, 0.5, 0) }, self.p._levels) self.assertEqual(40, self.p._maxLevel) self.assertEqual(7, self.p._round_grace) self.assertEqual("sfire", self.p._issue_warning) self.assertTrue(self.p._grudge_enable) self.assertTrue(self.p._private_messages) self.assertEqual(100, self.p._damage_threshold) self.assertEqual(2, self.p._warn_level) self.assertEqual(0, self.p._tkpointsHalflife) self.assertEqual('1h', self.p._tk_warn_duration) def test_onLoadConfig(self): # GIVEN self.conf.loadFromString( dedent(r""" [settings] max_points: 350 levels: 0,1,2 round_grace: 3 issue_warning: foo grudge_enable: no private_messages: off damage_threshold: 99 warn_level: 10 halflife: 3 warn_duration: 3h [level_0] kill_multiplier: 2 damage_multiplier: 1 ban_length: 3 [level_1] kill_multiplier: 2 damage_multiplier: 1 ban_length: 4 [level_2] kill_multiplier: 1 damage_multiplier: 0.5 ban_length: 5 """)) self.p = TkPlugin(self.console, self.conf) # WHEN self.p.onLoadConfig() # THEN self.assertEqual(350, self.p._maxPoints) self.assertDictEqual( { 0: (2.0, 1.0, 3), 1: (2.0, 1.0, 4), 2: (1.0, 0.5, 5), }, self.p._levels) self.assertEqual(2, self.p._maxLevel) self.assertEqual(3, self.p._round_grace) self.assertEqual("foo", self.p._issue_warning) self.assertFalse(self.p._grudge_enable) self.assertFalse(self.p._private_messages) self.assertEqual(99, self.p._damage_threshold) self.assertEqual(10, self.p._warn_level) self.assertEqual(3, self.p._tkpointsHalflife) self.assertEqual('3h', self.p._tk_warn_duration)
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)
class Test_Tk_plugin(B3TestCase): def setUp(self): super(Test_Tk_plugin, self).setUp() b3.console.gameName = 'f00' self.conf = XmlConfigParser() self.p = TkPlugin(b3.console, self.conf) def test_onLoadConfig_minimal(self, timer_patcher): self.conf.setXml(r""" <configuration plugin="tk"> <settings name="settings"> <set name="max_points">400</set> <set name="levels">0</set> <set name="round_grace">7</set> <set name="issue_warning">sfire</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> </configuration> """) self.p = TkPlugin(b3.console, self.conf) self.p.onLoadConfig() self.assertEqual(400, self.p._maxPoints) self.assertEqual(0, self.p._maxLevel) self.assertEqual(7, self.p._round_grace) self.assertEqual('sfire', self.p._issue_warning) self.assertTrue(self.p._private_messages) def test_onLoadConfig(self, timer_patcher): self.conf.setXml(r""" <configuration plugin="tk"> <settings name="settings"> <set name="max_points">350</set> <set name="levels">0,1,2</set> <set name="round_grace">3</set> <set name="issue_warning">foo</set> <set name="private_messages">off</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> </configuration> """) self.p = TkPlugin(b3.console, self.conf) self.p.onLoadConfig() self.assertEqual(350, self.p._maxPoints) self.assertEqual(2, self.p._maxLevel) self.assertEqual(3, self.p._round_grace) self.assertEqual('foo', self.p._issue_warning) self.assertFalse(self.p._private_messages)
class Tk_functional_test(B3TestCase): def setUp(self): B3TestCase.setUp(self) self.console.gameName = 'f00' self.adminPlugin = AdminPlugin(self.console, '@b3/conf/plugin_admin.ini') when(self.console).getPlugin("admin").thenReturn(self.adminPlugin) self.adminPlugin.onLoadConfig() self.adminPlugin.onStartup() self.conf = CfgConfigParser() self.conf.loadFromString( dedent(r""" [settings] max_points: 400 levels: 0,1,2,20,40 round_grace: 7 issue_warning: sfire grudge_enable: True private_messages: True damage_threshold: 100 warn_level: 2 halflife: 0 warn_duration: 1h [messages] ban: ^7team damage over limit forgive: ^7$vname^7 has forgiven $aname [^3$points^7] grudged: ^7$vname^7 has a ^1grudge ^7against $aname [^3$points^7] forgive_many: ^7$vname^7 has forgiven $attackers forgive_warning: ^1ALERT^7: $name^7 auto-kick if not forgiven. Type ^3!forgive $cid ^7to forgive. [^3damage: $points^7] no_forgive: ^7no one to forgive no_punish: ^7no one to punish players: ^7Forgive who? %s forgive_info: ^7$name^7 has ^3$points^7 TK points grudge_info: ^7$name^7 is ^1grudged ^3$points^7 TK points forgive_clear: ^7$name^7 cleared of ^3$points^7 TK points tk_warning_reason: ^3Do not attack teammates, ^1Attacked: ^7$vname ^7[^3$points^7] tk_request_action: ^7type ^3!fp ^7 to forgive ^3%s [level_0] kill_multiplier: 2 damage_multiplier: 1 ban_length: 2 [level_1] kill_multiplier: 2 damage_multiplier: 1 ban_length: 2 [level_2] kill_multiplier: 1 damage_multiplier: 0.5 ban_length: 1 [level_20] kill_multiplier: 1 damage_multiplier: 0.5 ban_length: 0 [level_40] kill_multiplier: 0.75 damage_multiplier: 0.5 ban_length: 0 """)) 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)
class Test_Tk_plugin(B3TestCase): def setUp(self): super(Test_Tk_plugin, self).setUp() b3.console.gameName = "f00" self.conf = XmlConfigParser() self.p = TkPlugin(b3.console, self.conf) def test_onLoadConfig_minimal(self, timer_patcher): self.conf.setXml( r""" <configuration plugin="tk"> <settings name="settings"> <set name="max_points">400</set> <set name="levels">0</set> <set name="round_grace">7</set> <set name="issue_warning">sfire</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> </configuration> """ ) self.p = TkPlugin(b3.console, self.conf) self.p.onLoadConfig() self.assertEqual(400, self.p._maxPoints) self.assertEqual(0, self.p._maxLevel) self.assertEqual(7, self.p._round_grace) self.assertEqual("sfire", self.p._issue_warning) self.assertTrue(self.p._private_messages) def test_onLoadConfig(self, timer_patcher): self.conf.setXml( r""" <configuration plugin="tk"> <settings name="settings"> <set name="max_points">350</set> <set name="levels">0,1,2</set> <set name="round_grace">3</set> <set name="issue_warning">foo</set> <set name="private_messages">off</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> </configuration> """ ) self.p = TkPlugin(b3.console, self.conf) self.p.onLoadConfig() self.assertEqual(350, self.p._maxPoints) self.assertEqual(2, self.p._maxLevel) self.assertEqual(3, self.p._round_grace) self.assertEqual("foo", self.p._issue_warning) self.assertFalse(self.p._private_messages)