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 comment.models import Comment 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)