149 lines
5.3 KiB
Python
149 lines
5.3 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
|
|
from main.models import SiteSettings
|
|
|
|
|
|
class CommentModeratorPermissionTests(BasePermissionTests):
|
|
def setUp(self):
|
|
super().setUp()
|
|
|
|
self.site_ru, created = SiteSettings.objects.get_or_create(
|
|
subdomain='ru'
|
|
)
|
|
|
|
self.role = Role.objects.create(
|
|
role=2,
|
|
site=self.site_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,
|
|
site=self.site_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": self.user_test["user"].id,
|
|
"object_id": self.country_ru.pk,
|
|
"content_type": self.content_type.id,
|
|
"site_id": self.site_ru.id
|
|
}
|
|
|
|
response = self.client.post(self.url, format='json', data=comment)
|
|
self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
|
|
|
|
comment = {
|
|
"text": "Test comment POST moder",
|
|
"user": self.moderator.id,
|
|
"object_id": self.country_ru.id,
|
|
"content_type": self.content_type.id,
|
|
"site_id": self.site_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)
|
|
|
|
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,
|
|
"object_id": self.country_ru.id,
|
|
"content_type": self.content_type.id,
|
|
'site_id': self.site_ru.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_200_OK)
|
|
|
|
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,
|
|
"object_id": self.country_ru.id,
|
|
"content_type": self.content_type.id,
|
|
}
|
|
response = self.client.put(self.url, data=data, format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
|