gault-millau/apps/comment/tests.py
Виктор Гладких 851ba7f9dd Test edit
2019-10-25 10:14:50 +03:00

144 lines
5.3 KiB
Python

from utils.tests.tests_permissions import BasePermissionTests
from rest_framework import status
from authorization.tests.tests_authorization import get_tokens_for_user
from django.urls import reverse
from django.contrib.contenttypes.models import ContentType
from http.cookies import SimpleCookie
from account.models import Role, User, UserRole
from account.serializers.common import UserSerializer
from comment.models import Comment
import json
class CommentModeratorPermissionTests(BasePermissionTests):
def setUp(self):
super().setUp()
self.role = Role.objects.create(
role=2,
country=self.country_ru
)
self.role.save()
self.moderator = User.objects.create_user(username='moderator',
email='moderator@mail.com',
password='passwordmoderator')
self.userRole = UserRole.objects.create(
user=self.moderator,
role=self.role
)
self.userRole.save()
self.content_type = ContentType.objects.get(app_label='location', model='country')
self.user_test = get_tokens_for_user()
self.comment = Comment.objects.create(text='Test comment', mark=1,
user=self.user_test["user"],
object_id=self.country_ru.pk,
content_type_id=self.content_type.id,
country=self.country_ru
)
self.comment.save()
self.url = reverse('back:comment:comment-crud', kwargs={"id": self.comment.id})
def test_post(self):
self.url = reverse('back:comment:comment-list-create')
comment = {
"text": "Test comment POST",
"user_id": self.user_test["user"].id,
"object_id": self.country_ru.pk,
"content_type_id": self.content_type.id,
"country_id": self.country_ru.id
}
#
# response = self.client.post(self.url, format='json', data=comment)
# self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
json_user = json.dumps(self.moderator)
user = UserSerializer(data=self.moderator)
user.is_valid()
u_data = user.data
self.assertFalse(user.is_valid())
# comment = {
# "text": "Test comment POST moder",
# "user": user,
# "object_id": self.country_ru.pk,
# "content_type_id": self.content_type.id,
# "country_id": self.country_ru.id
# }
# #
# tokens = User.create_jwt_tokens(self.moderator)
# self.client.cookies = SimpleCookie(
# {'access_token': tokens.get('access_token'),
# 'refresh_token': tokens.get('access_token')})
#
# response = self.client.post(self.url, format='json', data=comment)
# self.assertEqual(response.status_code, status.HTTP_201_CREATED)
# self.assertTrue(True)
def test_put_moderator(self):
tokens = User.create_jwt_tokens(self.moderator)
self.client.cookies = SimpleCookie(
{'access_token': tokens.get('access_token'),
'refresh_token': tokens.get('access_token')})
data = {
"id": self.comment.id,
"text": "test text moderator",
"mark": 1,
"user": self.moderator.id
}
response = self.client.put(self.url, data=data, format='json')
self.assertEqual(response.status_code, status.HTTP_200_OK)
def test_get(self):
response = self.client.get(self.url, format='json')
self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
def test_put_other_user(self):
other_user = User.objects.create_user(username='test',
email='test@mail.com',
password='passwordtest')
tokens = User.create_jwt_tokens(other_user)
self.client.cookies = SimpleCookie(
{'access_token': tokens.get('access_token'),
'refresh_token': tokens.get('access_token')})
data = {
"id": self.comment.id,
"text": "test text moderator",
"mark": 1,
"user": other_user.id
}
response = self.client.put(self.url, data=data, format='json')
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
def test_put_super_user(self):
super_user = User.objects.create_user(username='super',
email='super@mail.com',
password='passwordtestsuper',
is_superuser=True)
tokens = User.create_jwt_tokens(super_user)
self.client.cookies = SimpleCookie(
{'access_token': tokens.get('access_token'),
'refresh_token': tokens.get('access_token')})
data = {
"id": self.comment.id,
"text": "test text moderator",
"mark": 1,
"user": super_user.id
}
response = self.client.put(self.url, data=data, format='json')
self.assertEqual(response.status_code, status.HTTP_200_OK)