2 files changed, 24 insertions, 69 deletions
diff --git a/tests/config/test_oidc2.py b/tests/config/test_oidc2.py
index 021eba9511..102b35f9cc 100644
--- a/tests/config/test_oidc2.py
+++ b/tests/config/test_oidc2.py
@@ -1,14 +1,14 @@
from copy import deepcopy
-from typing import Any, Mapping, Dict
+from typing import Any, Dict
import yaml
from pydantic import ValidationError
from synapse.config.oidc2 import OIDCProviderModel
-from tests.unittest import TestCase
+from tests.unittest import TestCase
-SAMPLE_CONFIG: Mapping[str, Any] = yaml.safe_load(
+SAMPLE_CONFIG = yaml.safe_load(
"""
idp_id: apple
idp_name: Apple
@@ -44,20 +44,21 @@ class PydanticOIDCTestCase(TestCase):
def test_idp_id(self) -> None:
"""Demonstrate that Pydantic validates idp_id correctly."""
- # OIDCProviderModel.parse_obj(self.config)
- #
- # # Enforce that idp_id is required.
- # with self.assertRaises(ValidationError):
- # del self.config["idp_id"]
- # OIDCProviderModel.parse_obj(self.config)
- #
- # # Enforce that idp_id is a string.
- # with self.assertRaises(ValidationError):
- # self.config["idp_id"] = 123
- # OIDCProviderModel.parse_obj(self.config)
- # with self.assertRaises(ValidationError):
- # self.config["idp_id"] = None
- # OIDCProviderModel.parse_obj(self.config)
+ OIDCProviderModel.parse_obj(self.config)
+
+ # Enforce that idp_id is required.
+ with self.assertRaises(ValidationError):
+ del self.config["idp_id"]
+ OIDCProviderModel.parse_obj(self.config)
+
+ # Enforce that idp_id is a string.
+ with self.assertRaises(ValidationError) as e:
+ self.config["idp_id"] = 123
+ OIDCProviderModel.parse_obj(self.config)
+ print(e.exception)
+ with self.assertRaises(ValidationError):
+ self.config["idp_id"] = None
+ OIDCProviderModel.parse_obj(self.config)
# Enforce a length between 1 and 250.
with self.assertRaises(ValidationError):
@@ -71,3 +72,9 @@ class PydanticOIDCTestCase(TestCase):
with self.assertRaises(ValidationError):
self.config["idp_id"] = "$"
OIDCProviderModel.parse_obj(self.config)
+
+ # What happens with a really long string of prohibited characters?
+ with self.assertRaises(ValidationError) as e:
+ self.config["idp_id"] = "$" * 500
+ OIDCProviderModel.parse_obj(self.config)
+ print(e.exception)
diff --git a/tests/config/test_validators.py b/tests/config/test_validators.py
deleted file mode 100644
index 7b57a13d5e..0000000000
--- a/tests/config/test_validators.py
+++ /dev/null
@@ -1,52 +0,0 @@
-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="☃")
-
|