Тест представления Sign Up не проходит [Django REST]

Я пытаюсь протестировать представление регистрации в Django, используя REST Framework, но получаю ошибку assertio AssertionError: 201 != 400 при определении self.assertEqual(status.HTTP_201_CREATED, response.status_code). Я не совсем понимаю, откуда берется эта ошибка, поэтому прошу помощи.

Вот что у меня есть:

accounts/models.py

from django.contrib.auth.models import AbstractUser
from django.db import models
from django.utils.translation import ugettext_lazy as _


class CustomUser(AbstractUser):
    username = models.CharField(max_length=20, unique=True)
    email = models.EmailField(_('email address'), unique=True)

    def __str__(self):
        return self.email

accounts/serializers.py

from django.contrib.auth import get_user_model
from django.core.validators import EmailValidator
from rest_framework import serializers
from rest_framework_simplejwt.serializers import TokenObtainPairSerializer
import re


def company_email_validation(email):
    pattern = r'(@gmail|@hotmail|@googlemail|@yahoo|@gmx|@ymail|@outlook|@bluewin|@protonmail|@online|@web|@online|@aol|@live)'
    return bool(re.search(pattern, email))


class UserSerializer(serializers.ModelSerializer):
    password1 = serializers.CharField(write_only=True)
    password2 = serializers.CharField(write_only=True)

    def validate(self, data):
        email_validator = EmailValidator()
        email_validator(data['email'])

        if (company_email_validation(data['email'])):
            raise serializers.ValidationError('You must use a company email')
        
        if data['password1'] != data['password2']:
            raise serializers.ValidationError('Passwords must match.')
        return data

    def create(self, validated_data):
        data = {
            key: value for key, value in validated_data.items()
            if key not in ('password1', 'password2')
        }
        data['password'] = validated_data['password1']
        data['email'] = validated_data['email']
        return self.Meta.model.objects.create_user(**data)

    class Meta:
        model = get_user_model()
        fields = (
            'id', 'username', 'email', 'password1', 'password2',
        )
        read_only_fields = ('id',)

accounts/views.py

from django.contrib.auth import get_user_model
from rest_framework import generics
from rest_framework_simplejwt.views import TokenObtainPairView

from .serializers import UserSerializer, LogInSerializer



class SignUpView(generics.CreateAPIView):
    queryset = get_user_model().objects.all()
    serializer_class = UserSerializer

accounts/urls.py

from django.contrib import admin
from django.urls import path
from rest_framework_simplejwt.views import TokenRefreshView

from accounts.views import SignUpView, LogInView


urlpatterns = [
    path('api/sign_up/', SignUpView.as_view(), name='sign_up'),
    path('api/log_in/', LogInView.as_view(), name='log_in'),
    path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
]

tests/test_sign_up.py

import base64
import json
from django.contrib.auth import get_user_model
from rest_framework import status
from rest_framework.reverse import reverse
from rest_framework.test import APITestCase




PASSWORD = 'pAssw0rd!'


def create_user(username='exampleusername', password=PASSWORD):
    return get_user_model().objects.create_user(
        username=username,
        password=password
    )


class AuthenticationTest(APITestCase):
    def test_user_can_sign_up(self):
        response = self.client.post(reverse('sign_up'), data={
            'username': 'exampleusername',
            'password1': PASSWORD,
            'password2': PASSWORD,
        })
        user = get_user_model().objects.last()
        self.assertEqual(status.HTTP_201_CREATED, response.status_code)
        self.assertEqual(response.data['id'], user.id)
        self.assertEqual(response.data['username'], user.username)
Вернуться на верх