From: Aleš Date: Wed, 8 Dec 2021 14:35:33 +0000 (+0100) Subject: datamodel: rpz: deny message validation + test X-Git-Tag: v6.0.0a1~69^2~13 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b660448d790e31e08b2ac103e2d0f8d5a55fbfb7;p=thirdparty%2Fknot-resolver.git datamodel: rpz: deny message validation + test --- diff --git a/manager/knot_resolver_manager/datamodel/rpz_schema.py b/manager/knot_resolver_manager/datamodel/rpz_schema.py index af8a3138f..2f577d70a 100644 --- a/manager/knot_resolver_manager/datamodel/rpz_schema.py +++ b/manager/knot_resolver_manager/datamodel/rpz_schema.py @@ -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 index 000000000..76610957c --- /dev/null +++ b/manager/tests/unit/datamodel/test_rpz_schema.py @@ -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"})