From 466adabbb083cea657657353aecf10cb339a7412 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Fri, 13 Jul 2018 13:50:01 +0200 Subject: [PATCH] Added unit tests for IP range validation --- tests/test_api/test_cerberus.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/tests/test_api/test_cerberus.py b/tests/test_api/test_cerberus.py index 89c9210f..0bff6a5b 100644 --- a/tests/test_api/test_cerberus.py +++ b/tests/test_api/test_cerberus.py @@ -168,3 +168,32 @@ class NodeValidationTest(ValidationTest): 'parent': node_id, } self.assertValid(comment, nodes_schema) + + +class IPRangeValidatorTest(ValidationTest): + schema = {'iprange': {'type': 'iprange', 'required': True}} + + def assertValid(self, document, schema=None): + return super().assertValid(document, schema or self.schema) + + def assertInvalid(self, document, schema=None): + return super().assertInvalid(document, schema or self.schema) + + def test_ipv6(self): + self.assertValid({'iprange': '2a03:b0c0:0:1010::8fe:6ef1'}) + self.assertValid({'iprange': '0:0:0:0:0:ffff:102:304'}) + self.assertValid({'iprange': '2a03:b0c0:0:1010::8fe:6ef1/120'}) + self.assertValid({'iprange': 'ff06::/8'}) + self.assertValid({'iprange': '::/8'}) + self.assertValid({'iprange': '::/1'}) + self.assertValid({'iprange': '::1/128'}) + self.assertValid({'iprange': '::'}) + self.assertInvalid({'iprange': '::/0'}) + self.assertInvalid({'iprange': 'barbled'}) + + def test_ipv4(self): + self.assertValid({'iprange': '1.2.3.4'}) + self.assertValid({'iprange': '1.2.3.4/24'}) + self.assertValid({'iprange': '127.0.0.0/8'}) + self.assertInvalid({'iprange': '127.0.0.0/0'}) + self.assertInvalid({'iprange': 'garbled'})