Beispiel #1
0
    def test_cant_retrieve_reported_and_approved_hashtag(self):
        """
        should not be able to retrieve a reported and approved hashtag and return 403
        """
        user = make_user()
        headers = make_authentication_headers_for_user(user)

        hashtag = make_hashtag()
        hashtag_name = hashtag.name

        reporter = make_user()
        report_category = make_moderation_category()
        reporter.report_hashtag_with_name(hashtag_name=hashtag_name,
                                          category_id=report_category.pk)

        global_moderator = make_global_moderator()

        moderated_object = ModeratedObject.get_or_create_moderated_object_for_hashtag(
            hashtag=hashtag, category_id=report_category.pk)
        global_moderator.approve_moderated_object(
            moderated_object=moderated_object)

        url = self._get_url(hashtag_name=hashtag_name)

        response = self.client.get(url, **headers)

        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
Beispiel #2
0
    def test_can_retrieve_foreign_user_reported_hashtag(self):
        """
        should be able to retrieve a foreign user reported hashtag and return 200
        """
        user = make_user()
        headers = make_authentication_headers_for_user(user)

        hashtag = make_hashtag()
        hashtag_name = hashtag.name

        reporter = make_user()
        report_category = make_moderation_category()
        reporter.report_hashtag_with_name(hashtag_name=hashtag_name,
                                          category_id=report_category.pk)

        url = self._get_url(hashtag_name=hashtag_name)

        response = self.client.get(url, **headers)

        self.assertEqual(response.status_code, status.HTTP_200_OK)

        parsed_response = json.loads(response.content)

        self.assertIn('name', parsed_response)
        response_name = parsed_response['name']
        self.assertEqual(response_name, hashtag_name)
Beispiel #3
0
    def test_does_not_retrieve_encircled_post_with_hashtag(self):
        """
        should not retrieve an encircled post with a givne hashtag and return 200
        """
        user = make_user()
        headers = make_authentication_headers_for_user(user)

        post_creator = make_user()
        circle = make_circle(creator=post_creator)

        hashtag = make_hashtag()

        fake_post_text = make_fake_post_text(
        ) + ' and a little hashtag #%s' % hashtag.name
        post_creator.create_encircled_post(circles_ids=[circle.pk],
                                           text=fake_post_text)

        url = self._get_url(hashtag_name=hashtag.name)

        response = self.client.get(url, **headers)

        self.assertEqual(response.status_code, status.HTTP_200_OK)

        parsed_response = json.loads(response.content)

        self.assertEqual(len(parsed_response), 0)
Beispiel #4
0
    def test_does_not_retrieve_post_from_blocking_person_with_hashtag(self):
        """
        should not retrieve a post from a blocking person with a given hashtag and return 200
        """
        user = make_user()
        headers = make_authentication_headers_for_user(user)

        post_creator = make_user()

        hashtag = make_hashtag()

        fake_post_text = make_fake_post_text(
        ) + ' and a little hashtag #%s' % hashtag.name
        post_creator.create_public_post(text=fake_post_text)

        post_creator.block_user_with_username(username=user.username)

        url = self._get_url(hashtag_name=hashtag.name)

        response = self.client.get(url, **headers)

        self.assertEqual(response.status_code, status.HTTP_200_OK)

        parsed_response = json.loads(response.content)

        self.assertEqual(len(parsed_response), 0)
Beispiel #5
0
    def test_retrieves_world_circle_post_with_hashtag(self):
        """
        should retrieve world circle post with a given hashtag and return 200
        """
        user = make_user()
        headers = make_authentication_headers_for_user(user)

        post_creator = make_user()

        hashtag = make_hashtag()

        fake_post_text = make_fake_post_text(
        ) + ' and a little hashtag #%s' % hashtag.name
        post_creator.create_public_post(text=fake_post_text)

        url = self._get_url(hashtag_name=hashtag.name)

        response = self.client.get(url, **headers)

        self.assertEqual(response.status_code, status.HTTP_200_OK)

        parsed_response = json.loads(response.content)

        self.assertEqual(len(parsed_response), 1)

        retrieved_posts = parsed_response[0]
        self.assertEqual(retrieved_posts['text'], fake_post_text)
Beispiel #6
0
    def test_does_not_retrieve_private_community_not_part_of_post_with_hashtag(
            self):
        """
        should not retrieve a private community not part of post with a givne hashtag and return 200
        """
        user = make_user()
        headers = make_authentication_headers_for_user(user)

        community_creator = make_user()
        community = make_community(creator=community_creator,
                                   type=Community.COMMUNITY_TYPE_PRIVATE)

        post_creator = make_user()
        community_creator.invite_user_with_username_to_community_with_name(
            community_name=community.name, username=post_creator.username)
        post_creator.join_community_with_name(community_name=community.name)

        hashtag = make_hashtag()

        fake_post_text = make_fake_post_text(
        ) + ' and a little hashtag #%s' % hashtag.name
        post_creator.create_community_post(community_name=community.name,
                                           text=fake_post_text)

        url = self._get_url(hashtag_name=hashtag.name)

        response = self.client.get(url, **headers)

        self.assertEqual(response.status_code, status.HTTP_200_OK)

        parsed_response = json.loads(response.content)

        self.assertEqual(len(parsed_response), 0)
Beispiel #7
0
    def test_can_retrieve_hashtag_with_posts_count(self):
        """
        should be able to retrieve a hashtag with its posts count and return 200
        """
        user = make_user()
        headers = make_authentication_headers_for_user(user)

        hashtag = make_hashtag()
        hashtag_name = hashtag.name

        amount_of_posts = 3

        for i in range(0, amount_of_posts):
            user = make_user()
            post_text = '#%s' % hashtag_name
            user.create_public_post(text=post_text)

        url = self._get_url(hashtag_name=hashtag_name)

        response = self.client.get(url, **headers)

        self.assertEqual(response.status_code, status.HTTP_200_OK)

        parsed_response = json.loads(response.content)

        self.assertIn('posts_count', parsed_response)
        posts_count = parsed_response['posts_count']
        self.assertEqual(posts_count, amount_of_posts)
Beispiel #8
0
    def test_cant_search_for_reported_and_approved_hashtag(self):
        """
        should not be able to search for a reported and approved hashtag and return 200
        """
        user = make_user()
        headers = make_authentication_headers_for_user(user)

        reporter = make_user()

        hashtag_name = make_hashtag_name()
        hashtag = make_hashtag(name=hashtag_name)

        report_category = make_moderation_category()
        reporter.report_hashtag_with_name(hashtag_name=hashtag_name,
                                          category_id=report_category.pk)

        global_moderator = make_global_moderator()

        moderated_object = ModeratedObject.get_or_create_moderated_object_for_hashtag(
            hashtag=hashtag, category_id=report_category.pk)
        global_moderator.approve_moderated_object(
            moderated_object=moderated_object)

        url = self._get_url()
        response = self.client.get(url, {'query': hashtag.name}, **headers)

        self.assertEqual(response.status_code, status.HTTP_200_OK)
        parsed_response = json.loads(response.content)
        self.assertEqual(len(parsed_response), 0)
Beispiel #9
0
    def test_can_search_hashtags_by_name(self):
        """
        should be able to search for hashtags by their name and return 200
        """
        user = make_user()
        headers = make_authentication_headers_for_user(user)

        amount_of_hashtags_to_search_for = 5

        for i in range(0, amount_of_hashtags_to_search_for):
            hashtag_name = make_hashtag_name()
            hashtag = make_hashtag(name=hashtag_name)
            amount_of_characters_to_query = random.randint(
                1, len(hashtag_name))
            query = hashtag_name[0:amount_of_characters_to_query]
            final_query = ''
            for character in query:
                final_query = final_query + (
                    character.upper() if fake.boolean() else character.lower())

            url = self._get_url()
            response = self.client.get(url, {'query': final_query}, **headers)
            self.assertEqual(response.status_code, status.HTTP_200_OK)
            parsed_response = json.loads(response.content)
            self.assertEqual(len(parsed_response), 1)
            retrieved_hashtag = parsed_response[0]
            self.assertEqual(retrieved_hashtag['name'], hashtag_name.lower())
            hashtag.delete()
Beispiel #10
0
    def test_cant_retrieve_reported_hashtag(self):
        """
        should not be able to retrieve a reported hashtag and return 403
        """
        user = make_user()
        headers = make_authentication_headers_for_user(user)

        hashtag = make_hashtag()
        hashtag_name = hashtag.name

        report_category = make_moderation_category()
        user.report_hashtag_with_name(hashtag_name=hashtag_name,
                                      category_id=report_category.pk)

        url = self._get_url(hashtag_name=hashtag_name)

        response = self.client.get(url, **headers)

        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
Beispiel #11
0
    def test_can_retrieve_hashtag(self):
        """
        should be able to retrieve a hashtag and return 200
        """
        user = make_user()
        headers = make_authentication_headers_for_user(user)

        hashtag = make_hashtag()
        hashtag_name = hashtag.name

        url = self._get_url(hashtag_name=hashtag_name)

        response = self.client.get(url, **headers)

        self.assertEqual(response.status_code, status.HTTP_200_OK)

        parsed_response = json.loads(response.content)

        self.assertIn('name', parsed_response)
        response_name = parsed_response['name']
        self.assertEqual(response_name, hashtag_name)
Beispiel #12
0
    def test_can_search_for_foreign_user_reported_hashtag(self):
        """
        should be able to search for a foreign usre reported hashtag and return 200
        """
        user = make_user()
        headers = make_authentication_headers_for_user(user)

        reporter = make_user()

        hashtag_name = make_hashtag_name()
        hashtag = make_hashtag(name=hashtag_name)

        report_category = make_moderation_category()
        reporter.report_hashtag_with_name(hashtag_name=hashtag_name,
                                          category_id=report_category.pk)

        url = self._get_url()
        response = self.client.get(url, {'query': hashtag.name}, **headers)

        self.assertEqual(response.status_code, status.HTTP_200_OK)
        parsed_response = json.loads(response.content)
        self.assertEqual(len(parsed_response), 1)