def test_return_user_or_abort(self): user1, user2 = init_users(2) db.session.add_all([user1, user2]) self.assertEqual(return_user_or_abort(1), user1) self.assertEqual(return_user_or_abort(2), user2) with self.assertRaises(NotFound): return_user_or_abort(3)
def test_search_for_users_by(self): users = init_users(4) users[0].username, users[0].name = 'pasha', 'Pavlo Vasyliovych' users[1].username, users[1].name = 'dima', 'Dmitry Andreevich' users[2].username, users[2].name = 'maks', 'Maxim Ruslanovich' users[3].username, users[3].name = 'ann', 'Anna Alekseevna' db.session.add_all(users) db.session.commit() self.assertEqual(len(search_for_users_by('').all()), 4) self.assertEqual(len(search_for_users_by('a').all()), 4) result1 = search_for_users_by('a', 2).all() self.assertEqual(len(result1), 3) for r in result1: self.assertNotEqual('dima', r[1]) self.assertEqual(len(search_for_users_by('dima').all()), 1) self.assertEqual(len(search_for_users_by('dima', 1).all()), 1) self.assertEqual(len(search_for_users_by('dima', 2).all()), 0) self.assertEqual(len(search_for_users_by('ann', 4).all()), 0) result2 = search_for_users_by('dima Pavlo').all() self.assertEqual(len(result2), 2) self.assertEqual(result2[0][0], 'Dmitry Andreevich') self.assertEqual(result2[1][0], 'Pavlo Vasyliovych') result3 = search_for_users_by('ich').all() self.assertEqual(len(result3), 2) self.assertEqual(result3[0][0], 'Maxim Ruslanovich') self.assertEqual(result3[1][0], 'Dmitry Andreevich')
def test_get_message_by_id(self): users = init_users(2) m1 = Message(text='blabla', sender_id=2, receiver_id=1) m2 = Message(text='blabla2', sender_id=1, receiver_id=2) db.session.add_all(users + [m1, m2]) db.session.commit() self.assertEqual(Message.get_message_by_id(1), m1) self.assertEqual(Message.get_message_by_id(2), m2) with self.assertRaises(MessageNotFoundByIndexError): Message.get_message_by_id(3)
def test_return_message_or_abort(self): users = init_users(2) m1 = Message(text='blabla', sender_id=2, receiver_id=1) m2 = Message(text='blabla2', sender_id=1, receiver_id=2) db.session.add_all(users + [m1, m2]) db.session.commit() self.assertEqual(return_message_or_abort(1), m1) self.assertEqual(return_message_or_abort(2), m2) with self.assertRaises(NotFound): return_message_or_abort(3)
def test_return_chat_or_abort(self): users = init_users(2) User.create_chat(1, 2) db.session.add_all(users) db.session.commit() chat = return_chat_or_abort(1) self.assertEqual(chat.user1_id, 1) self.assertEqual(chat.user2_id, 2) with self.assertRaises(NotFound): return_chat_or_abort(2)
def test_abort_if_not_a_participant(self): users = init_users(3) User.create_chat(1, 2) User.create_chat(2, 3) db.session.add_all(users) with self.assertRaises(Forbidden): abort_if_not_a_participant(1, return_chat_or_abort(2)) try: abort_if_not_a_participant(2, return_chat_or_abort(2)) except Forbidden: self.fail(msg="403 error must not have been raised")
def test_abort_if_not_from_a_chat(self): users = init_users(3) m1 = Message(text='blabla', sender_id=2, receiver_id=1) m2 = Message(text='blabla2', sender_id=1, receiver_id=3) db.session.add_all(users + [m1, m2]) db.session.commit() with self.assertRaises(Forbidden): abort_if_not_from_a_chat(2, m1) try: abort_if_not_from_a_chat(2, m2) except Forbidden: self.fail(msg="403 error must not have been raised")
def test_get_user_chats_and_last_messages(self): users = init_users(5) User.create_chat(1, 2) User.create_chat(1, 3) User.create_chat(1, 4) User.create_chat(2, 3) db.session.add_all(users) m1 = Message(text='m1', sender_id=1, receiver_id=2) m2 = Message(text='m2', sender_id=2, receiver_id=1) m3 = Message(text='m3', sender_id=1, receiver_id=2) m4 = Message(text='m4', sender_id=1, receiver_id=3) m5 = Message(text='m5', sender_id=3, receiver_id=1) m6 = Message(text='m6', sender_id=1, receiver_id=4) m7 = Message(text='m7', sender_id=2, receiver_id=3) m8 = Message(text='m8', sender_id=3, receiver_id=2) db.session.add_all([m1, m2, m3, m4, m5, m6, m7, m8]) db.session.commit() chats1 = get_uc(1).all() self.assertEqual(len(chats1), 3) self.assertEqual(chats1[0][0], 'user4') self.assertEqual(chats1[1][0], 'user3') self.assertEqual(chats1[2][0], 'user2') self.assertEqual(chats1[0][2], 'm6') self.assertEqual(chats1[1][2], 'm5') self.assertEqual(chats1[2][2], 'm3') chats2 = get_uc(2).all() self.assertEqual(len(chats2), 2) self.assertEqual(chats2[0][0], 'user3') self.assertEqual(chats2[1][0], 'user1') self.assertEqual(chats2[0][2], 'm8') self.assertEqual(chats2[1][2], 'm3') chats3 = get_uc(3).all() self.assertEqual(len(chats3), 2) self.assertEqual(chats3[0][0], 'user2') self.assertEqual(chats3[1][0], 'user1') self.assertEqual(chats3[0][2], 'm8') self.assertEqual(chats3[1][2], 'm5') chats4 = get_uc(4).all() self.assertEqual(len(chats4), 1) self.assertEqual(chats4[0][0], 'user1') self.assertEqual(chats4[0][2], 'm6') chats5 = get_uc(5).all() self.assertEqual(len(chats5), 0)
def test_delete_messages(self): users = init_users(3) m1 = Message(text='blabla', sender_id=2, receiver_id=1) m2 = Message(text='blabla2', sender_id=1, receiver_id=2) m3 = Message(text='blabla3', sender_id=1, receiver_id=2) m4 = Message(text='blabla4', sender_id=1, receiver_id=3) m5 = Message(text='blabla5', sender_id=3, receiver_id=1) db.session.add_all(users + [m1, m2, m3, m4, m5]) db.session.commit() self.assertEqual(len(Message.query.all()), 5) Message.delete_messages(two_users_ids=[2, 1]) db.session.commit() self.assertEqual(len(Message.query.all()), 2) Message.delete_messages(chat_id=2) db.session.commit() self.assertEqual(len(Message.query.all()), 0)
def test_message_init(self): db.session.add_all(init_users(2)) db.session.commit() message = Message(text='blabla', datetime_writing=datetime.now(), sender_id=2, receiver_id=1) self.assertEqual(message.chat_id, 1) db.session.add(message) db.session.commit() result = db.session.execute(select(chats)) self.assertEqual(len(result.all()), 1) result.close() with self.assertRaises(AssertionError): Message(text='blabla', datetime_writing=datetime.now(), sender_id=1, receiver_id=2, chat_id=3)
def test_model_filter_by_get_params(self): users = init_users(5) user_with_an_existing_name = User(email='*****@*****.**', username='******', name='name5', password_hash='123') users.append(user_with_an_existing_name) db.session.add_all(users) db.session.commit() users_simple_query = User.query self.assertEqual(users_simple_query.all(), users) # exact matches: self.assertEqual( mod_fil(User, users_simple_query, { 'username': '******' }).all(), users[1:2]) self.assertEqual( mod_fil(User, users_simple_query, { 'name': 'name4' }).all(), users[3:4]) self.assertEqual( mod_fil(User, users_simple_query, { 'name': 'name5' }).all(), users[4:6]) self.assertEqual( len( mod_fil(User, users_simple_query, { 'name': 'name5', 'username': '******' }).all()), 0) self.assertEqual( mod_fil(User, users_simple_query, { 'user_id': '1' }).all(), users[0:1]) # '-like' stmt: self.assertEqual( len( mod_fil(User, users_simple_query, { 'username-like': 'user' }).all()), 6) self.assertEqual( len( mod_fil(User, users_simple_query, { 'name-like': 'name' }).all()), 6) self.assertEqual( mod_fil(User, users_simple_query, { 'name-like': '5' }).all(), users[4:6]) self.assertEqual( mod_fil(User, users_simple_query, { 'username-like': 'user1' }).all(), users[0:1]) # 'ordered-by' and 'ordered-by-desc' stmts: self.assertEqual( mod_fil(User, users_simple_query, { 'ordered-by': 'date_joined' }).all(), users) self.assertEqual( mod_fil(User, users_simple_query, { 'ordered-by-desc': 'date_joined' }).all(), list(reversed(users))) self.assertEqual( mod_fil(User, users_simple_query, { 'ordered-by-desc': 'username' }).all(), list(reversed(users))) # 'limit' and 'offset' stmts: self.assertEqual( mod_fil(User, users_simple_query, { 'limit': 2 }).all(), users[:2]) self.assertEqual( mod_fil(User, users_simple_query, { 'offset': 3 }).all(), users[3:]) self.assertEqual( mod_fil(User, users_simple_query, { 'offset': 4, 'limit': 1 }).all(), users[4:5]) self.assertEqual( mod_fil(User, users_simple_query, { 'offset': 1, 'limit': 2 }).all(), users[1:3]) # some queries combinations: self.assertEqual( mod_fil(User, users_simple_query, { 'ordered-by-desc': 'date_joined', 'offset': 1, 'limit': 2 }).all(), list(reversed(users))[1:3]) self.assertEqual( mod_fil(User, users_simple_query, { 'ordered-by-desc': 'username', 'offset': 4 }).all(), list(reversed(users))[4:]) self.assertEqual( mod_fil(User, users_simple_query, { 'name': 'name5', 'ordered-by-desc': 'username' }).all(), list(reversed(users[4:6]))) self.assertEqual( mod_fil(User, users_simple_query, { 'name': 'name5', 'ordered-by-desc': 'username', 'limit': 1 }).all(), list(reversed(users[4:6]))[:1]) # invalid values: self.assertEqual( mod_fil(User, users_simple_query, { 'invalid': 'value' }).all(), users) self.assertEqual( mod_fil(User, users_simple_query, { 'invalid': 'value', 'ordered-by-desc': 'date_joined' }).all(), list(reversed(users)))