Невозможно присвоить "<django.contrib.auth.auth.models.AnonymousUser object at 0x7f81fe558fa0>": "Post.author" должен быть экземпляром "UserData".

Я пытаюсь написать простые тесты для некоторых конечных точек, но второй тест постоянно срабатывает. Вот test.py

from rest_framework.test import APITestCase, APIRequestFactory, APIClient
from rest_framework import status
from django.urls import reverse
from .views import PostViewSet
from django.contrib.auth import get_user_model

User = get_user_model()


class PostListCreateTestCase(APITestCase):
    def setUp(self):
        self.factory = APIRequestFactory()
        self.view = PostViewSet.as_view({"get": "list", "post": "create"})
        self.url = reverse("post_list")
        self.user = User.objects.create_user(
            email="testuser@gmail.com", name="testuser"
        )
        self.user.set_password("pass")
        self.user.save()

    def test_list_posts(self):
        request = self.factory.get(self.url)
        response = self.view(request)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    def test_create_post(self):
        print(User)
        print(self.user)
        client = APIClient()
        login = client.login(email="testuser@gmail.com", password="pass")
        self.assertTrue(login)
        sample_post = {
            "title": "sample title",
            "body": "sample body",
        }
        request = self.factory.post(self.url, sample_post)
        request.user = self.user
        print(isinstance(request.user, get_user_model()))
        response = self.view(request)
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

А вот вид:

class PostViewSet(viewsets.ModelViewSet):
    serializer_class = PostSerializer
    queryset = Post.objects.all()

    def get_queryset(self):
        posts = Post.objects.all()
        return posts

    def get_object(self):
        post = get_object_or_404(self.get_queryset(), pk=self.kwargs["pk"])
        self.check_object_permissions(self.request, post)
        return post

    def create(self, request, *args, **kwargs):
        try:
            post = Post.objects.create(
                title=request.data.get("title"),
                body=request.data.get("body"),
                author=request.user,
            )
            post = PostSerializer(post)
            return Response(post.data, status=status.HTTP_201_CREATED)
        except Exception as ex:
            print(str(ex))
            return Response(str(ex), status=status.HTTP_400_BAD_REQUEST)

    def list(self, request, *args, **kwargs):
        posts = self.get_queryset()
        serializer = self.get_serializer(posts, many=True)
        return Response(
            data=dict(posts=serializer.data, total=len(serializer.data)),
            status=status.HTTP_200_OK,
        )

Вот что я получаю:

Найдено 2 теста. Создание тестовой базы данных для псевдонима 'default'... Система проверка не выявила проблем (0 промолчали). <class 'account.models.UserData'> testuser True Cannot assign "<django.contrib.auth.models.AnonymousUser объект по адресу 0x7f81fe558fa0>": "Post.author" должен быть экземпляром "UserData". F. ====================================================================== FAIL: test_create_post (posts.tests.PostListCreateTestCase) ---------------------------------------------------------------------- Traceback (последний последний вызов): Файл "/home/amr/Snakat/social_network/posts/tests.py", строка 41, in test_create_post self.assertEqual(response.status_code, status.HTTP_201_CREATED) AssertionError: 400 != 201

---------------------------------------------------------------------- Выполнил 2 теста за 0.887с

FAILED (failures=1) Destroying test database for alias 'default'...

Вернуться на верх