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()
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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()
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))
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))