Ошибка валидации RegexField не выдается; запрос API Postman

При тестировании ответа APIView с помощью Postman, он возвращает подтвержденные данные, относящиеся к строке запроса, прикрепленной к запросу. В данном случае строка запроса состоит из ?username="I___am_not_binny". При этом допускаются только строки с одним подчеркиванием между символами.

При выполнении запроса к конечной точке api он возвращает статус 200, однако предполагается, что он поднимает плохой запрос с кодом состояния 400. Тесты, запущенные через DRF с различными вариациями строк, проходят. Почему возвращается статус 200?

Протестированные струны: ["_This_is_me", "_This_is_me001_", "This_is_me_", "_____This_is_", "This_is_my_full_username", "WhoAm+"] ]

Status: 200 OK
{
    "username": "i___am_not_binny"
}

serializers.py

class RegisterSerializer(ModelSerializer):

    username = RegexField(
        re.compile("^(_?[a-zA-Z0-9]+)+"),
        required=False,
        min_length=6, max_length=20,
        validators=[
            character_validator, total_digits_validator,
            UniqueValidator(get_user_model().objects.all())
        ]
    )

validators.py

def character_validator(string):
    match = re.search(r"\W", string)
    if match:
        raise ValidationError("invalid character found", code="invalid")
    return string

def total_digits_validator(string):
    match = re.findall(r"\d", string)
    if match and len(match) > 3:
        raise ValidationError("only up to 3 digits allowed in username")
    return string
Вернуться на верх