]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
datamodel: rpz: deny message validation + test
authorAleš <ales.mrazek@nic.cz>
Wed, 8 Dec 2021 14:35:33 +0000 (15:35 +0100)
committerAleš Mrázek <ales.mrazek@nic.cz>
Fri, 8 Apr 2022 14:17:53 +0000 (16:17 +0200)
manager/knot_resolver_manager/datamodel/rpz_schema.py
manager/tests/unit/datamodel/test_rpz_schema.py [new file with mode: 0644]

index af8a3138faacbcf67e13edc24d682518e91d0edc..2f577d70a486adcace0553fd8a902f2f4bd80181 100644 (file)
@@ -13,3 +13,7 @@ class RPZSchema(SchemaNode):
     views: Optional[List[str]] = None
     options: Optional[List[FlagsEnum]] = None
     message: Optional[str] = None
+
+    def _validate(self) -> None:
+        if self.message and not self.action == "deny":
+            raise ValueError("'message' field can only be defined for 'deny' action")
diff --git a/manager/tests/unit/datamodel/test_rpz_schema.py b/manager/tests/unit/datamodel/test_rpz_schema.py
new file mode 100644 (file)
index 0000000..7661095
--- /dev/null
@@ -0,0 +1,12 @@
+from pytest import raises
+
+from knot_resolver_manager.datamodel.rpz_schema import RPZSchema
+from knot_resolver_manager.exceptions import KresdManagerException
+
+
+def test_message():
+
+    assert RPZSchema({"action": "deny", "file": "blocklist.rpz", "message": "this is deny message"})
+
+    with raises(KresdManagerException):
+        RPZSchema({"action": "pass", "file": "whitelist.rpz", "message": "this is deny message"})