예제 #1
0
class ViewProfileTestCaseMixin(object):
    def get_active_user_doron(self):
        user = ActiveUserFactory(first_name_en="Doron", last_name_en="Matalon", slug="doron-matalon", gender=User.GENDER_FEMALE)
        user.speedy_match_profile.gender_to_match = [User.GENDER_MALE]
        user.save_user_and_profile()
        return user

    def get_active_user_jennifer(self):
        user = ActiveUserFactory(first_name_en="Jennifer", last_name_en="Connelly", slug="jennifer-connelly", gender=User.GENDER_FEMALE)
        user.save_user_and_profile()
        return user

    def set_up(self):
        super().set_up()
        # The default for ActiveUserFactory() on Speedy Match is to match everybody with 5 stars.
        self.user = ActiveUserFactory()
        self.other_user = ActiveUserFactory()
        # Doron wants to meet only male and Jennifer is a female, therefore they don't match on Speedy Match.
        self.doron = self.get_active_user_doron()
        self.jennifer = self.get_active_user_jennifer()

    def test_user_and_other_user_have_access(self):
        self.assertTrue(expr=self.user.has_perm(perm='accounts.view_profile', obj=self.other_user))
        self.assertTrue(expr=self.other_user.has_perm(perm='accounts.view_profile', obj=self.user))

    def test_user_and_other_user_have_no_access_if_blocked(self):
        Block.objects.block(blocker=self.other_user, blocked=self.user)
        self.assertFalse(expr=self.user.has_perm(perm='accounts.view_profile', obj=self.other_user))
        self.assertFalse(expr=self.other_user.has_perm(perm='accounts.view_profile', obj=self.user))

    def test_doron_and_jennifer_have_access(self):
        raise NotImplementedError()

    def test_doron_and_jennifer_have_no_access(self):
        raise NotImplementedError()
예제 #2
0
class ViewChatsTestCase(SiteTestCase):
    def set_up(self):
        super().set_up()
        self.user1 = ActiveUserFactory()
        self.user2 = ActiveUserFactory()

    def test_can_see_his_chats(self):
        self.assertTrue(expr=self.user1.has_perm(perm='im.view_chats', obj=self.user1))

    def test_cannot_see_other_user_chats(self):
        self.assertFalse(expr=self.user1.has_perm(perm='im.view_chats', obj=self.user2))
예제 #3
0
class ViewRequestsTestCase(SiteTestCase):
    def set_up(self):
        super().set_up()
        self.user = ActiveUserFactory()
        self.other_user = ActiveUserFactory()

    def test_user_cannot_view_incoming_requests_for_other_user(self):
        self.assertFalse(expr=self.user.has_perm(perm='friends.view_requests',
                                                 obj=self.other_user))

    def test_user_can_view_incoming_requests(self):
        self.assertTrue(expr=self.user.has_perm(perm='friends.view_requests',
                                                obj=self.user))
예제 #4
0
class ReadChatTestCase(SiteTestCase):
    def set_up(self):
        super().set_up()
        self.user1 = ActiveUserFactory()
        self.user2 = ActiveUserFactory()
        self.user3 = ActiveUserFactory()
        self.chat_1_2 = ChatFactory(ent1=self.user1, ent2=self.user2)
        self.chat_1_3 = ChatFactory(ent1=self.user1, ent2=self.user3)

    def test_can_read_his_chat(self):
        self.assertTrue(expr=self.user2.has_perm(perm='im.read_chat', obj=self.chat_1_2))

    def test_cannot_read_a_chat_user_is_not_participate_in(self):
        self.assertFalse(expr=self.user2.has_perm(perm='im.read_chat', obj=self.chat_1_3))
예제 #5
0
    class ReadChatRulesTestCase(SiteTestCase):
        def set_up(self):
            super().set_up()
            self.user_1 = ActiveUserFactory()
            self.user_2 = ActiveUserFactory()
            self.user_3 = ActiveUserFactory()
            self.chat_1_2 = ChatFactory(ent1=self.user_1, ent2=self.user_2)
            self.chat_1_3 = ChatFactory(ent1=self.user_1, ent2=self.user_3)

        def test_can_read_his_chat(self):
            self.assertTrue(expr=self.user_2.has_perm(perm='messages.read_chat', obj=self.chat_1_2))

        def test_cannot_read_a_chat_user_is_not_participate_in(self):
            self.assertFalse(expr=self.user_2.has_perm(perm='messages.read_chat', obj=self.chat_1_3))
예제 #6
0
class ViewLikesTestCase(SiteTestCase):
    def set_up(self):
        super().set_up()
        self.user = ActiveUserFactory()
        self.other_user = ActiveUserFactory()
        self.anon = AnonymousUser()

    def test_anonymous_cannot_view_likes(self):
        self.assertFalse(expr=self.anon.has_perm(perm='likes.view_likes', obj=self.user))

    def test_other_user_cannot_view_likes(self):
        self.assertFalse(expr=self.other_user.has_perm(perm='likes.view_likes', obj=self.user))

    def test_user_can_view_likes(self):
        self.assertTrue(expr=self.user.has_perm(perm='likes.view_likes', obj=self.user))
예제 #7
0
    class ViewLikesRulesTestCase(SiteTestCase):
        def set_up(self):
            super().set_up()
            self.user = ActiveUserFactory()
            self.other_user = ActiveUserFactory()
            self.anon = AnonymousUser()

        def test_anonymous_cannot_view_likes(self):
            self.assertFalse(expr=self.anon.has_perm(perm='likes.view_likes', obj=self.user))

        def test_other_user_cannot_view_likes(self):
            self.assertFalse(expr=self.other_user.has_perm(perm='likes.view_likes', obj=self.user))

        def test_user_can_view_likes(self):
            self.assertTrue(expr=self.user.has_perm(perm='likes.view_likes', obj=self.user))
예제 #8
0
class SendMessageTestCase(SiteTestCase):
    def set_up(self):
        super().set_up()
        self.user1 = ActiveUserFactory()
        self.user2 = ActiveUserFactory()

    def test_cannot_send_message_to_self(self):
        self.assertFalse(expr=self.user1.has_perm(perm='im.send_message', obj=self.user1))

    def test_can_send_message_to_other_user(self):
        self.assertTrue(expr=self.user1.has_perm(perm='im.send_message', obj=self.user2))

    def test_cannot_send_message_to_other_user_if_blocked(self):
        Block.objects.block(blocker=self.user2, blocked=self.user1)
        self.assertFalse(expr=self.user1.has_perm(perm='im.send_message', obj=self.user2))
        self.assertFalse(expr=self.user2.has_perm(perm='im.send_message', obj=self.user1))
예제 #9
0
    class SendMessageRulesTestCase(SiteTestCase):
        def set_up(self):
            super().set_up()
            self.user1 = ActiveUserFactory()
            self.user2 = ActiveUserFactory()

        def test_cannot_send_message_to_self(self):
            self.assertFalse(expr=self.user1.has_perm(perm='messages.send_message', obj=self.user1))

        def test_can_send_message_to_other_user(self):
            self.assertTrue(expr=self.user1.has_perm(perm='messages.send_message', obj=self.user2))

        def test_cannot_send_message_to_other_user_if_blocked(self):
            Block.objects.block(blocker=self.user2, blocked=self.user1)
            self.assertFalse(expr=self.user1.has_perm(perm='messages.send_message', obj=self.user2))
            self.assertFalse(expr=self.user2.has_perm(perm='messages.send_message', obj=self.user1))
예제 #10
0
    class UnlikeRulesTestCase(SiteTestCase):
        def set_up(self):
            super().set_up()
            self.user = ActiveUserFactory()
            self.other_user = ActiveUserFactory()
            self.anon = AnonymousUser()

        def test_anonymous_cannot_unlike(self):
            self.assertFalse(expr=self.anon.has_perm(perm='likes.unlike', obj=self.other_user))

        def test_user_cannot_unlike_self(self):
            self.assertFalse(expr=self.user.has_perm(perm='likes.unlike', obj=self.user))

        def test_user_cannot_unlike_if_doesnt_like(self):
            self.assertFalse(expr=self.user.has_perm(perm='likes.unlike', obj=self.other_user))

        def test_user_can_unlike_if_likes(self):
            UserLike.objects.create(from_user=self.user, to_user=self.other_user)
            self.assertTrue(expr=self.user.has_perm(perm='likes.unlike', obj=self.other_user))
예제 #11
0
class UnlikeTestCase(SiteTestCase):
    def set_up(self):
        super().set_up()
        self.user = ActiveUserFactory()
        self.other_user = ActiveUserFactory()
        self.anon = AnonymousUser()

    def test_anonymous_cannot_unlike(self):
        self.assertFalse(expr=self.anon.has_perm(perm='likes.unlike', obj=self.other_user))

    def test_user_cannot_unlike_self(self):
        self.assertFalse(expr=self.user.has_perm(perm='likes.unlike', obj=self.user))

    def test_user_cannot_unlike_if_doesnt_like(self):
        self.assertFalse(expr=self.user.has_perm(perm='likes.unlike', obj=self.other_user))

    def test_user_can_unlike_if_likes(self):
        UserLike.objects.create(from_user=self.user, to_user=self.other_user)
        self.assertTrue(expr=self.user.has_perm(perm='likes.unlike', obj=self.other_user))
예제 #12
0
    class RemoveRulesTestCase(SiteTestCase):
        def set_up(self):
            super().set_up()
            self.user = ActiveUserFactory()
            self.other_user = ActiveUserFactory()
            Friend.objects.add_friend(from_user=self.user, to_user=self.other_user).accept()

        def test_user_can_remove_other_user(self):
            self.assertTrue(expr=self.user.has_perm(perm='friends.remove', obj=self.other_user))

        def test_other_user_can_remove_user(self):
            self.assertTrue(expr=self.other_user.has_perm(perm='friends.remove', obj=self.user))

        def test_user_cannot_remove_himself(self):
            self.assertFalse(expr=self.user.has_perm(perm='friends.remove', obj=self.user))

        def test_user_cannot_remove_other_user_if_not_friends(self):
            Friend.objects.remove_friend(from_user=self.user, to_user=self.other_user)
            self.assertFalse(expr=self.user.has_perm(perm='friends.remove', obj=self.other_user))
예제 #13
0
    class RequestRulesTestCase(SiteTestCase):
        def set_up(self):
            super().set_up()
            self.user = ActiveUserFactory()
            self.other_user = ActiveUserFactory()

        def test_user_can_send_request_to_other_user(self):
            self.assertTrue(expr=self.user.has_perm(perm='friends.request', obj=self.other_user))

        def test_user_cannot_send_request_to_other_user_if_blocked(self):
            Block.objects.block(blocker=self.other_user, blocked=self.user)
            self.assertFalse(expr=self.user.has_perm(perm='friends.request', obj=self.other_user))
            self.assertFalse(expr=self.other_user.has_perm(perm='friends.request', obj=self.user))

        def test_user_cannot_send_request_to_himself(self):
            self.assertFalse(expr=self.user.has_perm(perm='friends.request', obj=self.user))

        def test_user_cannot_send_second_request(self):
            Friend.objects.add_friend(from_user=self.user, to_user=self.other_user)
            self.assertFalse(expr=self.user.has_perm(perm='friends.request', obj=self.other_user))
예제 #14
0
class LikeTestCase(SiteTestCase):
    def set_up(self):
        super().set_up()
        self.user = ActiveUserFactory()
        self.other_user = ActiveUserFactory()
        self.anon = AnonymousUser()

    def test_anonymous_cannot_like(self):
        self.assertFalse(expr=self.anon.has_perm(perm='likes.like', obj=self.other_user))

    def test_user_cannot_like_self(self):
        self.assertFalse(expr=self.user.has_perm(perm='likes.like', obj=self.user))

    def test_user_can_like(self):
        self.assertTrue(expr=self.user.has_perm(perm='likes.like', obj=self.other_user))

    def test_user_cannot_like_if_blocked(self):
        Block.objects.block(blocker=self.other_user, blocked=self.user)
        self.assertFalse(expr=self.user.has_perm(perm='likes.like', obj=self.other_user))

    def test_user_cannot_like_twice(self):
        UserLike.objects.create(from_user=self.user, to_user=self.other_user)
        self.assertFalse(expr=self.user.has_perm(perm='likes.like', obj=self.other_user))
예제 #15
0
    class ViewFriendListRulesTestCaseMixin(object):
        def set_up(self):
            super().set_up()
            self.user = ActiveUserFactory()
            self.other_user = ActiveUserFactory()

        def test_user_can_view_his_own_friend_list(self):
            self.assertTrue(expr=self.user.has_perm(perm='friends.view_friend_list', obj=self.user))

        def test_user_can_view_another_user_friend_list(self):
            raise NotImplementedError()

        def test_user_cannot_view_another_user_friend_list(self):
            raise NotImplementedError()
예제 #16
0
    class LikeRulesTestCase(SiteTestCase):
        def set_up(self):
            super().set_up()
            self.user = ActiveUserFactory()
            self.other_user = ActiveUserFactory()
            self.anon = AnonymousUser()

        def test_anonymous_cannot_like(self):
            self.assertFalse(expr=self.anon.has_perm(perm='likes.like', obj=self.other_user))

        def test_user_cannot_like_self(self):
            self.assertFalse(expr=self.user.has_perm(perm='likes.like', obj=self.user))

        def test_user_can_like(self):
            self.assertTrue(expr=self.user.has_perm(perm='likes.like', obj=self.other_user))

        def test_user_cannot_like_if_blocked(self):
            Block.objects.block(blocker=self.other_user, blocked=self.user)
            self.assertFalse(expr=self.user.has_perm(perm='likes.like', obj=self.other_user))

        def test_user_cannot_like_twice(self):
            UserLike.objects.create(from_user=self.user, to_user=self.other_user)
            self.assertFalse(expr=self.user.has_perm(perm='likes.like', obj=self.other_user))
예제 #17
0
    class SendMessageRulesTestCase(SiteTestCase):
        def set_up(self):
            super().set_up()
            self.user_1 = ActiveUserFactory()
            self.user_2 = ActiveUserFactory()

        def _create_users(self, users_count):
            for i in range(users_count):
                setattr(self, "user_{}".format(3 + i), ActiveUserFactory())

        def test_cannot_send_message_to_self(self):
            self.assertFalse(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_1))
            self.assertFalse(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_1))

        def test_can_send_message_to_other_user(self):
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_2))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_2))

        def test_cannot_send_message_to_other_user_if_blocked(self):
            Block.objects.block(blocker=self.user_2, blocked=self.user_1)
            self.assertFalse(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_2))
            self.assertFalse(expr=self.user_2.has_perm(perm='messages.send_message', obj=self.user_1))
            self.assertFalse(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_2))
            self.assertFalse(expr=self.user_2.has_perm(perm='messages.view_send_message_button', obj=self.user_1))

        def test_can_send_message_to_other_user_if_didnt_send_too_many_emails_1(self):
            self._create_users(users_count=6)
            chats = dict()
            for i in range(4):
                chats[str(i)] = ChatFactory(ent1=self.user_1, ent2=getattr(self, "user_{}".format(3 + i)))
                Message.objects.send_message(from_entity=self.user_1, chat=chats[str(i)], text='*****@*****.**')
                sleep(0.01)
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_2))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_3))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_2))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_3))

        def test_can_send_message_to_other_user_if_didnt_send_too_many_emails_2(self):
            self._create_users(users_count=6)
            chats = dict()
            for i in range(5):
                chats[str(i)] = ChatFactory(ent1=self.user_1, ent2=getattr(self, "user_{}".format(3 + i)))
                Message.objects.send_message(from_entity=self.user_1, chat=chats[str(i)], text='Hello!')
                sleep(0.01)
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_2))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_3))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_2))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_3))

        def test_cannot_send_message_to_other_user_if_sent_too_many_emails_1(self):
            self._create_users(users_count=6)
            chats = dict()
            for i in range(5):
                chats[str(i)] = ChatFactory(ent1=self.user_1, ent2=getattr(self, "user_{}".format(3 + i)))
                Message.objects.send_message(from_entity=self.user_1, chat=chats[str(i)], text='*****@*****.**')
                sleep(0.01)
            self.assertFalse(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_2))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_3))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_2))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_3))
            Message.objects.send_message(from_entity=self.user_7, chat=chats[str(4)], text='Hello!')
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_2))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_3))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_2))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_3))
            chats[str(5)] = ChatFactory(ent1=self.user_1, ent2=self.user_8)
            Message.objects.send_message(from_entity=self.user_1, chat=chats[str(5)], text='Hello!')
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_2))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_3))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_2))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_3))
            Message.objects.send_message(from_entity=self.user_1, chat=chats[str(5)], text='*****@*****.**')
            self.assertFalse(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_2))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_3))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_2))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_3))
            Message.objects.send_message(from_entity=self.user_8, chat=chats[str(5)], text='Hi.')
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_2))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_3))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_2))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_3))

        def test_cannot_send_message_to_other_user_if_sent_too_many_emails_2(self):
            self._create_users(users_count=20)
            chats = dict()
            for i in range(4):
                chats[str(i)] = ChatFactory(ent1=self.user_1, ent2=getattr(self, "user_{}".format(3 + i)))
                Message.objects.send_message(from_entity=self.user_1, chat=chats[str(i)], text='*****@*****.**')
                sleep(0.01)
                self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_2))
                self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_3))
                self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_2))
                self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_3))
            for i in range(15):
                chats[str(4 + i)] = ChatFactory(ent1=self.user_1, ent2=getattr(self, "user_{}".format(4 + 3 + i)))
                Message.objects.send_message(from_entity=self.user_1, chat=chats[str(4 + i)], text='*****@*****.**')
                sleep(0.01)
                self.assertFalse(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_2))
                self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_3))
                self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_2))
                self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_3))
            for i in range(4):
                Message.objects.send_message(from_entity=getattr(self, "user_{}".format(3 + i)), chat=chats[str(i)], text='Hello!')
                sleep(0.01)
                self.assertFalse(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_2))
                self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_3))
                self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_2))
                self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_3))
            for i in range(12):
                Message.objects.send_message(from_entity=getattr(self, "user_{}".format(4 + 3 + i)), chat=chats[str(4 + i)], text='Hello!')
                sleep(0.01)
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_2))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_3))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_2))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_3))

        def test_cannot_send_message_to_other_user_if_sent_too_many_emails_3(self):
            self._create_users(users_count=30)
            self.user_1.date_created -= relativedelta(days=30)
            self.user_1.save_user_and_profile()
            chats = dict()
            for i in range(19):
                chats[str(i)] = ChatFactory(ent1=self.user_1, ent2=getattr(self, "user_{}".format(3 + i)))
                Message.objects.send_message(from_entity=self.user_1, chat=chats[str(i)], text='*****@*****.**')
                sleep(0.01)
                self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_2))
                self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_3))
                self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_2))
                self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_3))
            for i in range(5):
                chats[str(19 + i)] = ChatFactory(ent1=self.user_1, ent2=getattr(self, "user_{}".format(19 + 3 + i)))
                Message.objects.send_message(from_entity=self.user_1, chat=chats[str(19 + i)], text='*****@*****.**')
                sleep(0.01)
                self.assertFalse(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_2))
                self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_3))
                self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_2))
                self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_3))