Пример #1
0
    def setUp(self) -> None:
        self.endpoint = "/api/v1/photo/"
        self.user = self.create_user()
        self.token = self.create_auth_token(self.user)
        self.auth_headers = {"HTTP_AUTHORIZATION": f"Token {self.token}"}

        self.blog_post = Post()
        self.blog_post.save()
        Photo.original.field.storage = FileSystemStorage("x", "z")
        Photo.thumbnail.field.storage = FileSystemStorage("x", "z")
        self.photo = Photo(post=self.blog_post, original="xxx")
        self.photo.save()
Пример #2
0
    def test_post(self):
        post = Post()
        post.save()

        self.validate_response(
            method="post",
            url=f"/meta/blog/posts/{post.pk}/",
            expected_status_code=405,
            expected_view=BlogPostView,
            expected_template="blog/post.html",
            expected_view_name="meta:blog:post",
            content_filters=(lambda _c: _c == b"", ),
        )
Пример #3
0
    def test_get(self):
        post = Post()
        post.save()

        user = self.create_user()
        client = Client()
        client.login(username=user.username, password=user.username)

        self.validate_response(
            client=client,
            url=f"/meta/blog/posts/{post.pk}/comment/",
            expected_status_code=405,
            expected_view=BlogPostView,
            expected_view_name="meta:blog:post",
            content_filters=(lambda _c: _c == b"", ),
        )
Пример #4
0
    def test_get_existing_anon(self):
        placeholder = urandom(4).hex()
        post = Post(title=f"t_{placeholder}", content=f"c_{placeholder}")
        post.save()

        self.validate_response(
            url=f"/meta/blog/posts/{post.pk}/",
            expected_view=BlogPostView,
            expected_template="blog/post.html",
            expected_view_name="meta:blog:post",
            content_filters=(
                lambda _c: f"t_{placeholder}".encode() in _c,
                lambda _c: f"c_{placeholder}".encode() in _c,
                lambda _c: b"<form" not in _c,
            ),
        )
Пример #5
0
    def test_anon(self):
        placeholder = urandom(4).hex()
        post = Post(title=f"t_{placeholder}", content=f"c_{placeholder}")
        post.save()

        self.assertEqual(0, post.comments.count())

        self.validate_response(
            method="post",
            url=f"/meta/blog/posts/{post.pk}/comment/",
            expected_view=SignInView,
            expected_view_name="onboarding:sign_in",
            content_filters=(
                lambda _c: f"t_{placeholder}".encode() not in _c,
                lambda _c: f"c_{placeholder}".encode() not in _c,
            ),
        )

        self.assertEqual(0, post.comments.count())
Пример #6
0
class Test(TestCase, ApiTestMixin, UserTestMixin):
    def setUp(self) -> None:
        self.endpoint = "/api/v1/photo/"
        self.user = self.create_user()
        self.token = self.create_auth_token(self.user)
        self.auth_headers = {"HTTP_AUTHORIZATION": f"Token {self.token}"}

        self.blog_post = Post()
        self.blog_post.save()
        Photo.original.field.storage = FileSystemStorage("x", "z")
        Photo.thumbnail.field.storage = FileSystemStorage("x", "z")
        self.photo = Photo(post=self.blog_post, original="xxx")
        self.photo.save()

    def test_user_anon(self):
        self.validate_response(
            self.endpoint,
            expected_status_code=status.HTTP_401_UNAUTHORIZED,
        )

    def test_user_normal(self):
        self.validate_response(
            self.endpoint,
            headers=self.auth_headers,
            expected_response_payload=[
                {
                    "original":
                    f"http://testserver/api/v1/photo/{self.photo.original.url}",
                    "post": self.blog_post.pk,
                    "thumbnail": "",
                    "uuid": str(self.photo.pk),
                },
            ],
        )

    def test_post_anon(self):
        self.validate_response(
            self.endpoint,
            method="post",
            expected_status_code=status.HTTP_401_UNAUTHORIZED,
        )
Пример #7
0
    def test_get_existing_authed(self):
        placeholder = urandom(4).hex()
        user = self.create_user(placeholder)
        client = Client()
        client.login(username=user.username, password=placeholder)

        post = Post(title=f"t_{placeholder}", content=f"c_{placeholder}")
        post.save()

        self.validate_response(
            client=client,
            url=f"/meta/blog/posts/{post.pk}/",
            expected_view=BlogPostView,
            expected_template="blog/post.html",
            expected_view_name="meta:blog:post",
            content_filters=(
                lambda _c: f"t_{placeholder}".encode() in _c,
                lambda _c: f"c_{placeholder}".encode() in _c,
                lambda _c: b"<form" in _c,
            ),
        )
Пример #8
0
    def test_comment(self):
        post = Post()
        post.save()
        self.assertEqual(0, post.comments.count())

        user = self.create_user()

        comment = Comment(post=post, author=user)
        comment.save()

        self.assertIsNone(None, comment.nr_likes)
        self.assertIsNone(None, comment.nr_dislikes)

        comment.upvote()
        self.assertEqual(1, comment.nr_likes)
        comment.upvote()
        self.assertEqual(2, comment.nr_likes)

        comment.downvote()
        self.assertEqual(1, comment.nr_dislikes)
        comment.downvote()
        self.assertEqual(2, comment.nr_dislikes)
Пример #9
0
    def test_post(self):
        placeholder = urandom(4).hex()

        user = self.create_user(placeholder)
        client = Client()
        client.login(username=user.username, password=user.username)

        post = Post(title=f"t_{placeholder}", content=f"c_{placeholder}")
        post.save()

        self.assertEqual(0, post.comments.count())

        self.validate_response(
            client=client,
            method="post",
            url=f"/meta/blog/posts/{post.pk}/comment/",
            form_data={
                "message": f"m_{placeholder}",
                "author": user.pk,
                "post": post.pk,
            },
            expected_view=BlogPostView,
            expected_view_name="meta:blog:post",
            content_filters=(
                lambda _c: b"<form" in _c,
                lambda _c: f"c_{placeholder}".encode() in _c,
                lambda _c: f"m_{placeholder}".encode() in _c,
                lambda _c: f"t_{placeholder}".encode() in _c,
            ),
        )

        self.assertEqual(1, post.comments.count())
        comment = post.comments.first()
        self.assertEqual(user, comment.author)
        self.assertEqual(post, comment.post)
        self.assertEqual(f"m_{placeholder}", comment.message)
Пример #10
0
    def test_post_model(self):
        post = Post()
        post.save()

        self.assertEqual(f"/meta/blog/posts/{post.pk}/",
                         post.get_absolute_url())
        self.assertIsNone(None, post.nr_likes)
        self.assertIsNone(None, post.nr_dislikes)

        post.upvote()
        self.assertEqual(1, post.nr_likes)
        post.upvote()
        self.assertEqual(2, post.nr_likes)

        post.downvote()
        self.assertEqual(1, post.nr_dislikes)
        post.downvote()
        self.assertEqual(2, post.nr_dislikes)