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_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"", ), )
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"", ), )
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, ), )
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())
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, )
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, ), )
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)
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)
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)