Ошибка валидации 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