def setUp(self): ChatloggerTestCase.setUp(self) with logging_disabled(): self.console.startup() self.conf = CfgConfigParser() self.p = ChatloggerPlugin(self.console, self.conf) when(self.console.config).get('b3', 'time_zone').thenReturn('GMT') self.p.setup_fileLogger = Mock()
def setUp(self): ChatloggerTestCase.setUp(self) with logging_disabled(): self.console.startup() self.conf = CfgConfigParser() self.p = ChatloggerPlugin(self.console, self.conf) when(self.console.config).get('b3', 'time_zone').thenReturn('GMT') self.conf.loadFromString( dedent(""" [general] save_to_database: no save_to_file: yes [file] logfile: @conf/chat.log rotation_rate: D [purge] max_age: 0 hour: 0 min: 0 """)) self.temp_conf_folder = mkdtemp(suffix="b3_conf") when(b3).getConfPath(decode=ANY, conf=None).thenReturn(self.temp_conf_folder) with logging_disabled(): self.p.onLoadConfig() self.p.onStartup() self.chat_log_file = os.path.join(self.temp_conf_folder, 'chat.log') with logging_disabled(): self.joe = FakeClient(self.console, name="Joe", guid="joe_guid", team=TEAM_RED) self.simon = FakeClient(self.console, name="Simon", guid="simon_guid", team=TEAM_BLUE) self.joe.connects(1) self.simon.connects(3)
def setUp(self): ChatloggerTestCase.setUp(self) with logging_disabled(): self.console.startup() self.conf = CfgConfigParser() self.p = ChatloggerPlugin(self.console, self.conf) when(self.console.config).get('b3', 'time_zone').thenReturn('GMT') self.conf.loadFromString(dedent(""" [general] save_to_database: no save_to_file: yes [file] logfile: @conf/chat.log rotation_rate: D [purge] max_age: 0 hour: 0 min: 0 """)) self.temp_conf_folder = mkdtemp(suffix="b3_conf") when(b3).getConfPath(decode=ANY, conf=None).thenReturn(self.temp_conf_folder) with logging_disabled(): self.p.onLoadConfig() self.p.onStartup() self.chat_log_file = os.path.join(self.temp_conf_folder, 'chat.log') with logging_disabled(): self.joe = FakeClient(self.console, name="Joe", guid="joe_guid", team=TEAM_RED) self.simon = FakeClient(self.console, name="Simon", guid="simon_guid", team=TEAM_BLUE) self.joe.connects(1) self.simon.connects(3)
class Test_config(ChatloggerTestCase): def setUp(self): ChatloggerTestCase.setUp(self) with logging_disabled(): self.console.startup() self.conf = CfgConfigParser() self.p = ChatloggerPlugin(self.console, self.conf) when(self.console.config).get('b3', 'time_zone').thenReturn('GMT') self.p.setup_fileLogger = Mock() def init(self, config_content=None): """ load plugin config and initialise the plugin """ if config_content: self.conf.loadFromString(config_content) else: if os.path.isfile( b3.getAbsolutePath('@b3/conf/plugin_chatlogger.ini')): self.conf.load( b3.getAbsolutePath('@b3/conf/plugin_chatlogger.ini')) else: raise unittest.SkipTest( "default config file '%s' does not exists" % b3.getAbsolutePath('@b3/conf/plugin_chatlogger.ini')) self.p.onLoadConfig() self.p.onStartup() def test_default_config(self): # GIVEN when(b3).getB3Path(decode=ANY).thenReturn("c:\\b3_folder") when(b3).getConfPath(decode=ANY).thenReturn("c:\\b3_conf_folder") # WHEN self.init() # THEN self.assertTrue(self.p._save2db) self.assertTrue(self.p._save2file) expected_log_file = 'c:\\b3_conf_folder\\chat.log' if sys.platform == 'win32' else 'c:\\b3_conf_folder/chat.log' self.assertEqual(expected_log_file, self.p._file_name) self.assertEqual("D", self.p._file_rotation_rate) self.assertEqual(0, self.p._max_age_in_days) self.assertEqual(0, self.p._max_age_cmd_in_days) self.assertEqual(0, self.p._hours) self.assertEqual(0, self.p._minutes) def test_empty_config(self): self.init(""" """) self.assertTrue(self.p._save2db) self.assertFalse(self.p._save2file) self.assertIsNone(self.p._file_name) self.assertIsNone(self.p._file_rotation_rate) self.assertEqual(0, self.p._max_age_in_days) self.assertEqual(0, self.p._max_age_cmd_in_days) self.assertEqual(0, self.p._hours) self.assertEqual(0, self.p._minutes) self.assertEqual("chatlog", self.p._db_table) self.assertEqual("cmdlog", self.p._db_table_cmdlog) def test_conf1(self): self.init( dedent(""" [purge] max_age:7d hour:4 min:0 """)) self.assertTrue(self.p._save2db) self.assertFalse(self.p._save2file) self.assertIsNone(self.p._file_name) self.assertIsNone(self.p._file_rotation_rate) self.assertEqual(7, self.p._max_age_in_days) self.assertEqual(0, self.p._max_age_cmd_in_days) self.assertEqual(4, self.p._hours) self.assertEqual(0, self.p._minutes)
class Test_chatlogfile(ChatloggerTestCase): def setUp(self): ChatloggerTestCase.setUp(self) with logging_disabled(): self.console.startup() self.conf = CfgConfigParser() self.p = ChatloggerPlugin(self.console, self.conf) when(self.console.config).get('b3', 'time_zone').thenReturn('GMT') self.conf.loadFromString(dedent(""" [general] save_to_database: no save_to_file: yes [file] logfile: @conf/chat.log rotation_rate: D [purge] max_age: 0 hour: 0 min: 0 """)) self.temp_conf_folder = mkdtemp(suffix="b3_conf") when(b3).getConfPath(decode=ANY, conf=None).thenReturn(self.temp_conf_folder) with logging_disabled(): self.p.onLoadConfig() self.p.onStartup() self.chat_log_file = os.path.join(self.temp_conf_folder, 'chat.log') with logging_disabled(): self.joe = FakeClient(self.console, name="Joe", guid="joe_guid", team=TEAM_RED) self.simon = FakeClient(self.console, name="Simon", guid="simon_guid", team=TEAM_BLUE) self.joe.connects(1) self.simon.connects(3) def get_all_chatlog_lines_from_logfile(self): lines = [] with codecs.open(self.chat_log_file, "r", encoding="utf-8") as f: for l in f.readlines(): lines.append(l.strip()) return lines def count_chatlog_lines(self): return len(self.get_all_chatlog_lines_from_logfile()) def assert_log_line(self, line, expected): """ remove time stamp at the beginning of the line and compare the remainder """ clean_line = re.sub(r"^\d+-\d+-\d+ \d\d:\d\d:\d\d\t", "", line) self.assertEqual(clean_line, expected) def test_global_chat(self): # WHEN self.joe.says("hello") # THEN self.assertEqual(1, self.count_chatlog_lines()) self.assert_log_line(self.get_all_chatlog_lines_from_logfile()[0], "@1 [Joe] to ALL:\thello") def test_team_chat(self): # WHEN self.joe.says2team("hello") # THEN self.assertEqual(1, self.count_chatlog_lines()) self.assert_log_line(self.get_all_chatlog_lines_from_logfile()[0], "@1 [Joe] to TEAM:\thello") def test_squad_chat(self): # WHEN self.joe.says2squad("hi") # THEN self.assertEqual(1, self.count_chatlog_lines()) self.assert_log_line(self.get_all_chatlog_lines_from_logfile()[0], "@1 [Joe] to SQUAD:\thi") def test_private_chat(self): # WHEN self.joe.sendsPM("hi", self.simon) # THEN self.assertEqual(1, self.count_chatlog_lines()) self.assert_log_line(self.get_all_chatlog_lines_from_logfile()[0], "@1 [Joe] to PM:\thi") def test_unicode(self): # WHEN self.joe.name = u"★joe★" self.simon.name = u"❮❮simon❯❯" self.joe.sendsPM(u"hi ✪", self.simon) # THEN self.assertEqual(1, self.count_chatlog_lines()) self.assert_log_line(self.get_all_chatlog_lines_from_logfile()[0], u"@1 [★joe★] to PM:\thi ✪")
class Test_config(ChatloggerTestCase): def setUp(self): ChatloggerTestCase.setUp(self) with logging_disabled(): self.console.startup() self.conf = CfgConfigParser() self.p = ChatloggerPlugin(self.console, self.conf) when(self.console.config).get('b3', 'time_zone').thenReturn('GMT') self.p.setup_fileLogger = Mock() def init(self, config_content=None): """ load plugin config and initialise the plugin """ if config_content: self.conf.loadFromString(config_content) else: if os.path.isfile(b3.getAbsolutePath('@b3/conf/plugin_chatlogger.ini')): self.conf.load(b3.getAbsolutePath('@b3/conf/plugin_chatlogger.ini')) else: raise unittest.SkipTest("default config file '%s' does not exists" % b3.getAbsolutePath('@b3/conf/plugin_chatlogger.ini')) self.p.onLoadConfig() self.p.onStartup() def test_default_config(self): # GIVEN when(b3).getB3Path(decode=ANY).thenReturn("c:\\b3_folder") when(b3).getConfPath(decode=ANY).thenReturn("c:\\b3_conf_folder") # WHEN self.init() # THEN self.assertTrue(self.p._save2db) self.assertTrue(self.p._save2file) expected_log_file = 'c:\\b3_conf_folder\\chat.log' if sys.platform == 'win32' else 'c:\\b3_conf_folder/chat.log' self.assertEqual(expected_log_file, self.p._file_name) self.assertEqual("D", self.p._file_rotation_rate) self.assertEqual(0, self.p._max_age_in_days) self.assertEqual(0, self.p._max_age_cmd_in_days) self.assertEqual(0, self.p._hours) self.assertEqual(0, self.p._minutes) def test_empty_config(self): self.init(""" """) self.assertTrue(self.p._save2db) self.assertFalse(self.p._save2file) self.assertIsNone(self.p._file_name) self.assertIsNone(self.p._file_rotation_rate) self.assertEqual(0, self.p._max_age_in_days) self.assertEqual(0, self.p._max_age_cmd_in_days) self.assertEqual(0, self.p._hours) self.assertEqual(0, self.p._minutes) self.assertEqual("chatlog", self.p._db_table) self.assertEqual("cmdlog", self.p._db_table_cmdlog) def test_conf1(self): self.init(dedent(""" [purge] max_age:7d hour:4 min:0 """)) self.assertTrue(self.p._save2db) self.assertFalse(self.p._save2file) self.assertIsNone(self.p._file_name) self.assertIsNone(self.p._file_rotation_rate) self.assertEqual(7, self.p._max_age_in_days) self.assertEqual(0, self.p._max_age_cmd_in_days) self.assertEqual(4, self.p._hours) self.assertEqual(0, self.p._minutes)