from rest_framework.test import APITestCase 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 location.models import Country from account.models import Role, User, UserRole from comment.models import Comment from translation.models import Language class CommentModeratorPermissionTests(APITestCase): def setUp(self): self.lang = Language.objects.create( title='Russia', locale='ru-RU' ) self.lang.save() self.country_ru = Country.objects.create( name='{"ru-RU":"Russia"}', code='23', low_price=15, high_price=150000, ) self.country_ru.languages.add(self.lang) self.country_ru.save() 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, language=self.lang ) self.comment.save() self.url = reverse('back:comment:comment-crud', kwargs={"id": self.comment.id}) def test_get(self): response = self.client.get(self.url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) 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_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)