1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
from dataclasses import dataclass
import pytest
from apischema import ValidationError, deserialize, validator
@dataclass
class PasswordForm:
password: str
confirmation: str
@validator
def password_match(self):
if self.password != self.confirmation:
raise ValidationError("password doesn't match its confirmation")
@dataclass
class CompleteForm(PasswordForm):
username: str
with pytest.raises(ValidationError) as err:
deserialize(
CompleteForm,
{"username": "wyfo", "password": "p455w0rd", "confirmation": "..."},
)
assert err.value.errors == [
{"loc": [], "err": "password doesn't match its confirmation"}
]
|