From b83c988a1390efc6f7d881fa9cc06eddb825f827 Mon Sep 17 00:00:00 2001
From: Christian Poessinger <christian@poessinger.com>
Date: Sun, 6 Dec 2020 13:35:17 +0100
Subject: test: vyos.template: test additional templating functions

---
 src/tests/test_template.py | 49 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 49 insertions(+)

(limited to 'src')

diff --git a/src/tests/test_template.py b/src/tests/test_template.py
index 6dc2f075e..544755692 100644
--- a/src/tests/test_template.py
+++ b/src/tests/test_template.py
@@ -44,3 +44,52 @@ class TestVyOSTemplate(TestCase):
         self.assertFalse(vyos.template.is_ipv6('192.0.2.0/24'))
         self.assertFalse(vyos.template.is_ipv6('192.0.2.1/32'))
         self.assertFalse(vyos.template.is_ipv6('VyOS'))
+
+    def test_address_from_cidr(self):
+        self.assertEqual(vyos.template.address_from_cidr('192.0.2.0/24'),  '192.0.2.0')
+        self.assertEqual(vyos.template.address_from_cidr('2001:db8::/48'), '2001:db8::')
+
+        with self.assertRaises(ValueError):
+            # ValueError: 192.0.2.1/24 has host bits set
+            self.assertEqual(vyos.template.address_from_cidr('192.0.2.1/24'),  '192.0.2.1')
+
+        with self.assertRaises(ValueError):
+            # ValueError: 2001:db8::1/48 has host bits set
+            self.assertEqual(vyos.template.address_from_cidr('2001:db8::1/48'), '2001:db8::1')
+
+    def test_netmask_from_cidr(self):
+        self.assertEqual(vyos.template.netmask_from_cidr('192.0.2.0/24'),  '255.255.255.0')
+        self.assertEqual(vyos.template.netmask_from_cidr('192.0.2.128/25'),  '255.255.255.128')
+        self.assertEqual(vyos.template.netmask_from_cidr('2001:db8::/48'), 'ffff:ffff:ffff::')
+
+        with self.assertRaises(ValueError):
+            # ValueError: 192.0.2.1/24 has host bits set
+            self.assertEqual(vyos.template.netmask_from_cidr('192.0.2.1/24'),  '255.255.255.0')
+
+        with self.assertRaises(ValueError):
+            # ValueError: 2001:db8:1:/64 has host bits set
+            self.assertEqual(vyos.template.netmask_from_cidr('2001:db8:1:/64'), 'ffff:ffff:ffff:ffff::')
+
+    def test_first_host_address(self):
+        self.assertEqual(vyos.template.first_host_address('10.0.0.0/24'),  '10.0.0.1')
+        self.assertEqual(vyos.template.first_host_address('10.0.0.128/25'),  '10.0.0.129')
+        self.assertEqual(vyos.template.first_host_address('2001:db8::/64'),  '2001:db8::')
+
+    def test_last_host_address(self):
+        self.assertEqual(vyos.template.last_host_address('10.0.0.0/24'),  '10.0.0.254')
+        self.assertEqual(vyos.template.last_host_address('10.0.0.128/25'),  '10.0.0.254')
+        self.assertEqual(vyos.template.last_host_address('2001:db8::/64'),  '2001:db8::ffff:ffff:ffff:ffff')
+
+    def test_increment_ip(self):
+        self.assertEqual(vyos.template.inc_ip('10.0.0.0/24', '2'),  '10.0.0.2')
+        self.assertEqual(vyos.template.inc_ip('10.0.0.0', '2'),  '10.0.0.2')
+        self.assertEqual(vyos.template.inc_ip('10.0.0.0', '10'),  '10.0.0.10')
+        self.assertEqual(vyos.template.inc_ip('2001:db8::/64', '2'),  '2001:db8::2')
+        self.assertEqual(vyos.template.inc_ip('2001:db8::', '10'),  '2001:db8::a')
+
+    def test_decrement_ip(self):
+        self.assertEqual(vyos.template.dec_ip('10.0.0.100/24', '1'),  '10.0.0.99')
+        self.assertEqual(vyos.template.dec_ip('10.0.0.90', '10'),  '10.0.0.80')
+        self.assertEqual(vyos.template.dec_ip('2001:db8::b/64', '10'),  '2001:db8::1')
+        self.assertEqual(vyos.template.dec_ip('2001:db8::f', '5'),  '2001:db8::a')
+
-- 
cgit v1.2.3