diff options
Diffstat (limited to 'src/tests')
-rw-r--r-- | src/tests/test_configverify.py (renamed from src/tests/test_template.py) | 23 | ||||
-rw-r--r-- | src/tests/test_dict_search.py (renamed from src/tests/test_vyos_dict_search.py) | 30 | ||||
-rw-r--r-- | src/tests/test_jinja_filters.py | 69 | ||||
-rw-r--r-- | src/tests/test_validate.py | 64 |
4 files changed, 163 insertions, 23 deletions
diff --git a/src/tests/test_template.py b/src/tests/test_configverify.py index 0b9f2c3b8..ad7e053db 100644 --- a/src/tests/test_template.py +++ b/src/tests/test_configverify.py @@ -15,17 +15,24 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. from unittest import TestCase +from vyos.configverify import verify_diffie_hellman_length +from vyos.util import cmd -from vyos.template import vyos_address_from_cidr -from vyos.template import vyos_netmask_from_cidr +dh_file = '/tmp/dh.pem' - -class TestTeamplteHelpers(TestCase): +class TestDictSearch(TestCase): def setUp(self): pass - def test_helpers_from_cidr(self): - network = '192.0.2.0/26' - self.assertEqual(vyos_address_from_cidr(network), '192.0.2.0') - self.assertEqual(vyos_netmask_from_cidr(network), '255.255.255.192') + def test_dh_key_none(self): + self.assertFalse(verify_diffie_hellman_length('/tmp/non_existing_file', '1024')) + + def test_dh_key_256(self): + key_len = '256' + cmd(f'openssl dhparam -out {dh_file} {key_len}') + self.assertTrue(verify_diffie_hellman_length(dh_file, key_len)) + def test_dh_key_512(self): + key_len = '512' + cmd(f'openssl dhparam -out {dh_file} {key_len}') + self.assertTrue(verify_diffie_hellman_length(dh_file, key_len)) diff --git a/src/tests/test_vyos_dict_search.py b/src/tests/test_dict_search.py index cba6562da..6a0fc74ad 100644 --- a/src/tests/test_vyos_dict_search.py +++ b/src/tests/test_dict_search.py @@ -15,7 +15,7 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. from unittest import TestCase -from vyos.util import vyos_dict_search +from vyos.util import dict_search data = { 'string': 'fooo', @@ -29,29 +29,29 @@ class TestDictSearch(TestCase): pass def test_non_existing_keys(self): - """ TestDictSearch: Return False when querying for non-existent key """ - self.assertFalse(vyos_dict_search('non_existing', data)) + # TestDictSearch: Return False when querying for non-existent key + self.assertFalse(dict_search('non_existing', data)) def test_string(self): - """ TestDictSearch: Return value when querying string """ - self.assertEqual(vyos_dict_search('string', data), data['string']) + # TestDictSearch: Return value when querying string + self.assertEqual(dict_search('string', data), data['string']) def test_list(self): - """ TestDictSearch: Return list items when querying list """ - self.assertEqual(vyos_dict_search('list', data), data['list']) + # TestDictSearch: Return list items when querying list + self.assertEqual(dict_search('list', data), data['list']) def test_dict_key_value(self): - """ TestDictSearch: Return dictionary keys value when value is present """ - self.assertEqual(vyos_dict_search('dict.key_2', data), data['dict']['key_2']) + # TestDictSearch: Return dictionary keys value when value is present + self.assertEqual(dict_search('dict.key_2', data), data['dict']['key_2']) def test_nested_dict_key_value(self): - """ TestDictSearch: Return string value of last key when querying for a nested string """ - self.assertEqual(vyos_dict_search('nested.string', data), data['nested']['string']) + # TestDictSearch: Return string value of last key when querying for a nested string + self.assertEqual(dict_search('nested.string', data), data['nested']['string']) def test_nested_dict_key_empty(self): - """ TestDictSearch: Return False when querying for a nested string whose last key is empty """ - self.assertFalse(vyos_dict_search('nested.empty', data)) + # TestDictSearch: Return False when querying for a nested string whose last key is empty + self.assertFalse(dict_search('nested.empty', data)) def test_nested_list(self): - """ TestDictSearch: Return list items when querying nested list """ - self.assertEqual(vyos_dict_search('nested.list', data), data['nested']['list']) + # TestDictSearch: Return list items when querying nested list + self.assertEqual(dict_search('nested.list', data), data['nested']['list']) diff --git a/src/tests/test_jinja_filters.py b/src/tests/test_jinja_filters.py new file mode 100644 index 000000000..acd7a5952 --- /dev/null +++ b/src/tests/test_jinja_filters.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python3 +# +# Copyright (C) 2020 VyOS maintainers and contributors +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 or later as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +from unittest import TestCase + +from ipaddress import ip_network +from vyos.template import vyos_address_from_cidr +from vyos.template import vyos_netmask_from_cidr +from vyos.template import vyos_ipv4 +from vyos.template import vyos_ipv6 +from vyos.template import vyos_first_host_address +from vyos.template import vyos_last_host_address +from vyos.template import vyos_inc_ip + +class TestTeamplteHelpers(TestCase): + def setUp(self): + pass + + def test_helpers_from_cidr(self): + network_v4 = '192.0.2.0/26' + self.assertEqual(vyos_address_from_cidr(network_v4), str(ip_network(network_v4).network_address)) + self.assertEqual(vyos_netmask_from_cidr(network_v4), str(ip_network(network_v4).netmask)) + + def test_helpers_ipv4(self): + self.assertTrue(vyos_ipv4('192.0.2.1')) + self.assertTrue(vyos_ipv4('192.0.2.0/24')) + self.assertTrue(vyos_ipv4('192.0.2.1/32')) + self.assertTrue(vyos_ipv4('10.255.1.2')) + self.assertTrue(vyos_ipv4('10.255.1.0/24')) + self.assertTrue(vyos_ipv4('10.255.1.2/32')) + self.assertFalse(vyos_ipv4('2001:db8::')) + self.assertFalse(vyos_ipv4('2001:db8::1')) + self.assertFalse(vyos_ipv4('2001:db8::/64')) + + def test_helpers_ipv6(self): + self.assertFalse(vyos_ipv6('192.0.2.1')) + self.assertFalse(vyos_ipv6('192.0.2.0/24')) + self.assertFalse(vyos_ipv6('192.0.2.1/32')) + self.assertFalse(vyos_ipv6('10.255.1.2')) + self.assertFalse(vyos_ipv6('10.255.1.0/24')) + self.assertFalse(vyos_ipv6('10.255.1.2/32')) + self.assertTrue(vyos_ipv6('2001:db8::')) + self.assertTrue(vyos_ipv6('2001:db8::1')) + self.assertTrue(vyos_ipv6('2001:db8::1/64')) + self.assertTrue(vyos_ipv6('2001:db8::/32')) + self.assertTrue(vyos_ipv6('2001:db8::/64')) + + def test_helpers_first_host_address(self): + self.assertEqual(vyos_first_host_address('10.0.0.0/24'), '10.0.0.1') + self.assertEqual(vyos_first_host_address('10.0.0.128/25'), '10.0.0.129') + self.assertEqual(vyos_first_host_address('10.0.0.200/29'), '10.0.0.201') + + self.assertEqual(vyos_first_host_address('2001:db8::/64'), '2001:db8::') + self.assertEqual(vyos_first_host_address('2001:db8::/112'), '2001:db8::') + self.assertEqual(vyos_first_host_address('2001:db8::10/112'), '2001:db8::10') + self.assertEqual(vyos_first_host_address('2001:db8::100/112'), '2001:db8::100') diff --git a/src/tests/test_validate.py b/src/tests/test_validate.py new file mode 100644 index 000000000..e9fe185ed --- /dev/null +++ b/src/tests/test_validate.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python3 +# +# Copyright (C) 2020 VyOS maintainers and contributors +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 or later as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +import vyos.validate +from unittest import TestCase + +class TestVyOSValidate(TestCase): + def setUp(self): + pass + + def test_is_ip(self): + self.assertTrue(vyos.validate.is_ip('192.0.2.1')) + self.assertTrue(vyos.validate.is_ip('2001:db8::1')) + self.assertFalse(vyos.validate.is_ip('VyOS')) + + def test_is_ipv4(self): + self.assertTrue(vyos.validate.is_ipv4('192.0.2.1')) + self.assertTrue(vyos.validate.is_ipv4('192.0.2.0/24')) + self.assertTrue(vyos.validate.is_ipv4('192.0.2.1/32')) + + self.assertFalse(vyos.validate.is_ipv4('2001:db8::1')) + self.assertFalse(vyos.validate.is_ipv4('2001:db8::/64')) + self.assertFalse(vyos.validate.is_ipv4('VyOS')) + + def test_is_ipv6(self): + self.assertFalse(vyos.validate.is_ipv6('192.0.2.1')) + self.assertFalse(vyos.validate.is_ipv6('192.0.2.0/24')) + self.assertFalse(vyos.validate.is_ipv6('192.0.2.1/32')) + self.assertTrue(vyos.validate.is_ipv6('2001:db8::1')) + self.assertTrue(vyos.validate.is_ipv6('2001:db8::/64')) + self.assertTrue(vyos.validate.is_ipv6('2001:db8::1/64')) + self.assertFalse(vyos.validate.is_ipv6('VyOS')) + + def test_is_ipv6_link_local(self): + self.assertFalse(vyos.validate.is_ipv6_link_local('169.254.0.1')) + self.assertTrue(vyos.validate.is_ipv6_link_local('fe80::')) + self.assertTrue(vyos.validate.is_ipv6_link_local('fe80::affe:1')) + self.assertFalse(vyos.validate.is_ipv6_link_local('2001:db8::')) + self.assertFalse(vyos.validate.is_ipv6_link_local('VyOS')) + + def test_is_ipv6_link_local(self): + self.assertTrue(vyos.validate.is_loopback_addr('127.0.0.1')) + self.assertTrue(vyos.validate.is_loopback_addr('127.0.1.1')) + self.assertTrue(vyos.validate.is_loopback_addr('127.1.1.1')) + self.assertTrue(vyos.validate.is_loopback_addr('::1')) + + self.assertFalse(vyos.validate.is_loopback_addr('::2')) + self.assertFalse(vyos.validate.is_loopback_addr('192.0.2.1')) + + + |