summary refs log tree commit diff
path: root/tests/config/test_validators.py
diff options
context:
space:
mode:
authorDavid Robertson <davidr@element.io>2022-05-18 23:12:29 +0100
committerDavid Robertson <davidr@element.io>2022-05-19 10:29:27 +0100
commit348b53fe9c16068f86b0afe37bd31e959de81ae6 (patch)
tree8b5f4dd3e6ec96c010d24c70d04114f6be6b31a0 /tests/config/test_validators.py
parentRequire and lock `pydantic` (diff)
downloadsynapse-348b53fe9c16068f86b0afe37bd31e959de81ae6.tar.xz
WIP trying out validators
Diffstat (limited to 'tests/config/test_validators.py')
-rw-r--r--tests/config/test_validators.py52
1 files changed, 52 insertions, 0 deletions
diff --git a/tests/config/test_validators.py b/tests/config/test_validators.py
new file mode 100644

index 0000000000..7b57a13d5e --- /dev/null +++ b/tests/config/test_validators.py
@@ -0,0 +1,52 @@ +from unittest import TestCase + +from pydantic import BaseModel, ValidationError, validator, StrictStr + +from synapse.config.validators import string_length_between, string_contains_characters + + +class TestValidators(TestCase): + def test_string_length_between(self) -> None: + class TestModel(BaseModel): + x: StrictStr + _x_length = validator("x")(string_length_between(5, 10)) + + with self.assertRaises(ValidationError): + TestModel(x="") + with self.assertRaises(ValidationError): + TestModel(x="a" * 4) + + # Should not raise: + TestModel(x="a" * 5) + TestModel(x="a" * 10) + + with self.assertRaises(ValidationError): + TestModel(x="a" * 11) + with self.assertRaises(ValidationError): + TestModel(x="a" * 1000) + + def test_string_contains_characters(self) -> None: + class TestModel(BaseModel): + x: StrictStr + _x_characters = validator("x")(string_contains_characters("A-Z0-9")) + + # Should not raise + TestModel(x="") + TestModel(x="A") + TestModel(x="B") + TestModel(x="Z") + TestModel(x="123456789") + + with self.assertRaises(ValidationError): + TestModel(x="---") + with self.assertRaises(ValidationError): + TestModel(x="$") + with self.assertRaises(ValidationError): + TestModel(x="A$") + with self.assertRaises(ValidationError): + TestModel(x="a") + with self.assertRaises(ValidationError): + TestModel(x="\u0000") + with self.assertRaises(ValidationError): + TestModel(x="☃") +