From 348b53fe9c16068f86b0afe37bd31e959de81ae6 Mon Sep 17 00:00:00 2001 From: David Robertson Date: Wed, 18 May 2022 23:12:29 +0100 Subject: WIP trying out validators --- tests/config/test_validators.py | 52 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 tests/config/test_validators.py (limited to 'tests/config/test_validators.py') 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="☃") + -- cgit 1.5.1