class TestDatabase: def setup(self): self.db = Database("testpasswd") def test_add_user(self): self.db.insert_user("test_user", "test123", "test", "ADMIN") user = self.db.get_user("test_user") assert user["username"] == "test_user" def test_messages(self): messages = self.db.get_messages("1") assert len(messages) == 0 self.db.insert_message("test_user", "1", "TestMessage", "TYPE_TEXT", 0.0) messages = self.db.get_messages("1") assert len(messages) == 1 def test_files(self): # file counts are grouped per channel, so to just check the length we need `len()` file_count = len(self.db.get_file_count()) assert file_count == 0 self.db.insert_file("test_file", "test_user", "test_type", 100, "full_path_test_file") file_count = len(self.db.get_file_count()) assert file_count == 1 file_info = self.db.get_file("test_file") assert file_info["file"] == "test_file" assert file_info["type"] == "test_type" assert file_info["size"] == 100 assert file_info["full_name"] == "full_path_test_file" def test_emojis(self): emojis = self.db.get_emojis() assert len(emojis) == 0 self.db.insert_emoji("test_user", "test_emoji", "test_emoji_file_name", 0) emojis = self.db.get_emojis() assert len(emojis) == 1 emoji = self.db.get_emoji("test_emoji") assert emoji["file"] == "test_emoji_file_name"
class DatabaseTestCase(unittest.TestCase): def setUp(self): self.client = MongoClient() self.db = Database(self.client) self.msg_factory = MessageFactory("salt") self.user_id = "username" def test_message_save(self): message = self.msg_factory.create(self.user_id, "message") id = message['id'] result = self.db.save_message(message) self.assertEqual(id, result) def test_get_message(self): message = self.msg_factory.create(self.user_id, "message") id = message['id'] self.db.save_message(message) result = self.db.get_messages(self.user_id, [id]) assert result[0].items() <= message.items() def test_get_messages(self): m1 = self.msg_factory.create(self.user_id, "message 1") m2 = self.msg_factory.create(self.user_id, "message 2") self.db.save_message(m1) self.db.save_message(m2) result = self.db.get_messages( self.user_id, [m1.get('id'), m2.get('id')]) self.assertEqual(2, len(result)) def test_filter_out_database_id(self): message = self.msg_factory.create(self.user_id, "message") id = message['id'] self.db.save_message(message) result = self.db.get_messages(self.user_id, [id]) self.assertEqual('', result[0].get('_id', '')) def test_delete_message(self): message = self.msg_factory.create(self.user_id, "message") id = message['id'] self.db.save_message(message) result = self.db.delete_messages(self.user_id, [id]) self.assertEqual(result, 1) def test_delete_messages(self): m1 = self.msg_factory.create(self.user_id, "message 1") m2 = self.msg_factory.create(self.user_id, "message 2") self.db.save_message(m1) self.db.save_message(m2) result = self.db.delete_messages( self.user_id, [m1.get('id'), m2.get('id')]) self.assertEqual(2, result) def test_find_unread_message(self): for x in range(0, 2): self.db.save_message( self.msg_factory.create(self.user_id, "message")) self.db.get_unread_messages(self.user_id) unread_messages = 4 for x in range(0, unread_messages): self.db.save_message( self.msg_factory.create(self.user_id, "message")) res = self.db.get_unread_messages(self.user_id) self.assertEqual(len(res), unread_messages) def test_find_unread_filter_out_id(self): self.db.save_message(self.msg_factory.create(self.user_id, "message")) message = self.db.get_unread_messages(self.user_id) self.assertEqual('', message[0].get('_id', '')) def test_get_all_messages(self): for x in range(0, 2): self.db.save_message( self.msg_factory.create(self.user_id, "message")) messages = self.db.get_all(self.user_id) self.assertEqual(len(messages), 2) def test_get_all_messages_for_bogus_id(self): messages = self.db.get_all("bogus_id") self.assertEqual(len(messages), 0) def test_get_messages_between_start_and_stop(self): today = datetime.today().replace(microsecond=0) generate_message_in_time_and_save(self, today - timedelta(days=3)) generate_message_in_time_and_save(self, today - timedelta(days=2)) generate_message_in_time_and_save(self, today - timedelta(days=1)) messages = self.db.get_messages_between( self.user_id, today - timedelta(days=2, hours=23, minutes=59, seconds=59), today - timedelta(days=1)) self.assertEqual(len(messages), 1) self.assertEqual(messages[0].get('received_datetime'), today - timedelta(days=2)) def test_get_messages_between_min_and_max(self): today = datetime.today().replace(microsecond=0) generate_message_in_time_and_save(self, today - timedelta(days=3)) generate_message_in_time_and_save(self, today - timedelta(days=2)) generate_message_in_time_and_save(self, today - timedelta(days=1)) messages = self.db.get_messages_between(self.user_id, datetime.min, datetime.max) self.assertEqual(len(messages), 3) self.assertEqual(messages[1].get('received_datetime'), today - timedelta(days=2)) def tearDown(self): self.client.message_db.messages.delete_many({})