diff tests/test_schema.py @ 28:db3491e1b590

Allow to customize the loading of the schema dict
author Franz Glasner <fzglas.hg@dom66.de>
date Sat, 08 Jul 2023 13:51:20 +0200
parents c3a0fe8d4587
children 68286d27f27d
line wrap: on
line diff
--- a/tests/test_schema.py	Sat Jul 08 12:26:44 2023 +0200
+++ b/tests/test_schema.py	Sat Jul 08 13:51:20 2023 +0200
@@ -140,7 +140,8 @@
         obj = object()
         schema = object()
         settings = data_schema.ValidationSettings(
-            skip_keys=[], break_on_keynames_problems=True)
+            skip_keys=[], break_on_keynames_problems=True,
+            schema_loader=data_schema.default_schema_loader)
         ctx = data_schema.Context(
             None, root_object=obj, root_schema=schema, settings=settings)
         self.assertEqual("<ROOT>", str(ctx))
@@ -152,7 +153,8 @@
         obj = object()
         schema = object()
         settings = data_schema.ValidationSettings(
-            skip_keys=[], break_on_keynames_problems=True)
+            skip_keys=[], break_on_keynames_problems=True,
+            schema_loader=data_schema.default_schema_loader)
         ctx = data_schema.Context(
             None, root_object=obj, root_schema=schema, settings=settings)
         self.assertTrue(ctx.is_root)
@@ -167,7 +169,8 @@
 
     def test_root_context_init_root_empty(self):
         settings = data_schema.ValidationSettings(
-            skip_keys=[], break_on_keynames_problems=True)
+            skip_keys=[], break_on_keynames_problems=True,
+            schema_loader=data_schema.default_schema_loader)
         self.assertRaises(
             TypeError,
             data_schema.Context, None, key="key", settings=settings)
@@ -177,7 +180,8 @@
 
     def test_root_context_init_only_one_of_key_index(self):
         settings = data_schema.ValidationSettings(
-            skip_keys=[], break_on_keynames_problems=True)
+            skip_keys=[], break_on_keynames_problems=True,
+            schema_loader=data_schema.default_schema_loader)
         root = data_schema.Context(None, settings=settings)
         self.assertRaises(
             ValueError,
@@ -185,13 +189,15 @@
 
     def test_root_context_init_exactly_one(self):
         settings = data_schema.ValidationSettings(
-            skip_keys=[], break_on_keynames_problems=True)
+            skip_keys=[], break_on_keynames_problems=True,
+            schema_loader=data_schema.default_schema_loader)
         root = data_schema.Context(None, settings=settings)
         self.assertRaises(TypeError, data_schema.Context, root)
 
     def test_nonroot_rootobj_schema(self):
         settings = data_schema.ValidationSettings(
-            skip_keys=[], break_on_keynames_problems=True)
+            skip_keys=[], break_on_keynames_problems=True,
+            schema_loader=data_schema.default_schema_loader)
         obj = object()
         schema = object()
         ctx = data_schema.Context(
@@ -207,7 +213,8 @@
 
     def test_str(self):
         settings = data_schema.ValidationSettings(
-            skip_keys=[], break_on_keynames_problems=True)
+            skip_keys=[], break_on_keynames_problems=True,
+            schema_loader=data_schema.default_schema_loader)
         root = data_schema.Context(None, settings=settings)
         ctx1 = data_schema.Context(root, key="key1")
         ctx2 = data_schema.Context(ctx1, index=2)
@@ -216,7 +223,8 @@
 
     def test_repr(self):
         settings = data_schema.ValidationSettings(
-            skip_keys=[], break_on_keynames_problems=True)
+            skip_keys=[], break_on_keynames_problems=True,
+            schema_loader=data_schema.default_schema_loader)
         root = data_schema.Context(None, settings=settings)
         ctx1 = data_schema.Context(root, key="key1")
         ctx2 = data_schema.Context(ctx1, index=2)
@@ -225,7 +233,8 @@
 
     def test_root(self):
         settings = data_schema.ValidationSettings(
-            skip_keys=[], break_on_keynames_problems=True)
+            skip_keys=[], break_on_keynames_problems=True,
+            schema_loader=data_schema.default_schema_loader)
         root = data_schema.Context(None, settings=settings)
         self.assertTrue(root.is_root)
         self.assertTrue(root is root.root)
@@ -244,9 +253,11 @@
 
     def test_extra_settings_in_between(self):
         settings = data_schema.ValidationSettings(
-            skip_keys=[], break_on_keynames_problems=True)
+            skip_keys=[], break_on_keynames_problems=True,
+            schema_loader=data_schema.default_schema_loader)
         settings2 = data_schema.ValidationSettings(
-            skip_keys=[], break_on_keynames_problems=True)
+            skip_keys=[], break_on_keynames_problems=True,
+            schema_loader=data_schema.default_schema_loader)
         root = data_schema.Context(None, settings=settings)
         self.assertTrue(root.is_root)
         self.assertTrue(root is root.root)
@@ -265,7 +276,8 @@
 
     def test_key_xor_index(self):
         settings = data_schema.ValidationSettings(
-            skip_keys=[], break_on_keynames_problems=True)
+            skip_keys=[], break_on_keynames_problems=True,
+            schema_loader=data_schema.default_schema_loader)
         root = data_schema.Context(None, settings=settings)
         self.assertRaises(
             ValueError,
@@ -276,7 +288,8 @@
 
     def test_keyindex_requires_key(self):
         settings = data_schema.ValidationSettings(
-            skip_keys=[], break_on_keynames_problems=True)
+            skip_keys=[], break_on_keynames_problems=True,
+            schema_loader=data_schema.default_schema_loader)
         self.assertRaises(
             ValueError,
             data_schema.Context,
@@ -1234,6 +1247,34 @@
             schema,
             self._ctx)
 
+    def test_raise_no_schema_loader_available(self):
+        settings = data_schema.ValidationSettings(
+            skip_keys=[], break_on_keynames_problems=True,
+            schema_loader=None)
+        schema = data_schema._Schema(
+            None, True, {"$ref": "schema:file:/tmp/xxx#/"})
+        ctx = data_schema.Context(
+            None, root_schema=schema, settings=settings)
+        self.assertRaises(
+            data_schema.SchemaError,
+            data_schema.process_schema_references,
+            schema,
+            ctx)
+
+    def test_raise_schema_loader_available_but_invalid_basedir(self):
+        settings = data_schema.ValidationSettings(
+            skip_keys=[], break_on_keynames_problems=True,
+            schema_loader=data_schema.default_schema_loader)
+        schema = data_schema._Schema(
+            None, True, {"$ref": "schema:file:/tmp/xxx#/"})
+        ctx = data_schema.Context(
+            None, root_schema=schema, settings=settings)
+        self.assertRaises(
+            TypeError,     # no basedir given
+            data_schema.process_schema_references,
+            schema,
+            ctx)
+
     def test_raise_if_scheme_ref_is_not_the_single_key(self):
         schema = data_schema._Schema(
             None, True, {"$ref": "schema:#/",