109 lines
3.9 KiB
Python
109 lines
3.9 KiB
Python
from http.cookies import SimpleCookie
|
|
|
|
from django.contrib.contenttypes.models import ContentType
|
|
from django.urls import reverse
|
|
from rest_framework import status
|
|
|
|
from account.models import Role, User, UserRole
|
|
from authorization.tests.tests_authorization import get_tokens_for_user
|
|
from comment.models import Comment
|
|
from utils.tests.tests_permissions import BasePermissionTests
|
|
|
|
|
|
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()
|
|
|
|
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=content_type.id,
|
|
country=self.country_ru
|
|
)
|
|
self.comment.save()
|
|
self.url = reverse('back:comment:comment-crud', kwargs={"id": self.comment.id})
|
|
|
|
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)
|
|
|
|
|