Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
    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')
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
 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)
Ejemplo n.º 5
0
 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)
Ejemplo n.º 6
0
 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")
Ejemplo n.º 7
0
 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")
Ejemplo n.º 8
0
    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)
Ejemplo n.º 9
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)
Ejemplo n.º 10
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)
Ejemplo n.º 11
0
    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)))