From ffde063f499b15e5412f11a624564d78fca1d6a2 Mon Sep 17 00:00:00 2001 From: Erik Reid <erik.reid@geant.org> Date: Wed, 6 Feb 2019 21:04:32 +0100 Subject: [PATCH] enironment-spedific AF_INET constants use environment-specific AF_INET* constants in unit test data --- test/per_router/test_juniper_data.py | 31 ++++++++---- test/test_juniper_data_global.py | 72 ++++++++++++++++------------ 2 files changed, 62 insertions(+), 41 deletions(-) diff --git a/test/per_router/test_juniper_data.py b/test/per_router/test_juniper_data.py index 7847e322..c40f025c 100644 --- a/test/per_router/test_juniper_data.py +++ b/test/per_router/test_juniper_data.py @@ -1,4 +1,5 @@ import ast +import netifaces import os import jsonschema @@ -102,19 +103,29 @@ def test_bgp_list(netconf_doc): NETIFACES_TEST_DATA_STRING = """{ - 'lo0': {2: [{'addr': '127.0.0.1', 'netmask': '255.0.0.0', 'peer': '127.0.0.1'}], - 30: [{'addr': '::1', 'netmask': 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128', 'peer': '::1', 'flags': 0}, + 'lo0': {{AF_INET}: [{'addr': '127.0.0.1', 'netmask': '255.0.0.0', 'peer': '127.0.0.1'}], + {AF_INET6}: [{'addr': '::1', 'netmask': 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128', 'peer': '::1', 'flags': 0}, {'addr': 'fe80::1%lo0', 'netmask': 'ffff:ffff:ffff:ffff::/64', 'flags': 0}]}, - 'eth0': {18: [{'addr': '78:4f:43:76:73:ba'}], - 2: [{'addr': '83.97.92.239', 'netmask': '255.255.252.0', 'broadcast': '83.97.95.255'}], - 30: [{'addr': 'fe80::250:56ff:fea1:8340', 'netmask': 'ffff:ffff:ffff:ffff::/64', 'flags': 1024}, + 'eth0': {{AF_LINK}: [{'addr': '78:4f:43:76:73:ba'}], + {AF_INET}: [{'addr': '83.97.92.239', 'netmask': '255.255.252.0', 'broadcast': '83.97.95.255'}], + {AF_INET6}: [{'addr': 'fe80::250:56ff:fea1:8340', 'netmask': 'ffff:ffff:ffff:ffff::/64', 'flags': 1024}, {'addr': '2001:798:3::104', 'netmask': 'ffff:ffff:ffff:ffff::/64', 'flags': 1088}]} }""" # noqa E501 -NETIFACES_TEST_DATA = ast.literal_eval(NETIFACES_TEST_DATA_STRING) - -def test_snmp_community_string(mocker, netconf_doc): - mocker.patch('netifaces.interfaces', lambda: NETIFACES_TEST_DATA.keys()) - mocker.patch('netifaces.ifaddresses', lambda n: NETIFACES_TEST_DATA[n]) +@pytest.fixture +def mocked_netifaces(mocker): + s = NETIFACES_TEST_DATA_STRING + for k, v in { + 'AF_INET': netifaces.AF_INET, + 'AF_INET6': netifaces.AF_INET6, + 'AF_LINK': netifaces.AF_LINK + }.items(): + s = s.replace('{%s}' % k, str(v)) + data = ast.literal_eval(s) + mocker.patch('netifaces.interfaces', lambda: data.keys()) + mocker.patch('netifaces.ifaddresses', lambda n: data[n]) + + +def test_snmp_community_string(mocked_netifaces, netconf_doc): assert juniper.snmp_community_string(netconf_doc) == '0pBiFbD' diff --git a/test/test_juniper_data_global.py b/test/test_juniper_data_global.py index 74454f00..accb5d6f 100644 --- a/test/test_juniper_data_global.py +++ b/test/test_juniper_data_global.py @@ -2,60 +2,70 @@ import ast import netifaces import ipaddress +import pytest + from inventory_provider import juniper NETIFACES_TEST_DATA_STRING = """{ - 'lo0': {2: [{'addr': '127.0.0.1', 'netmask': '255.0.0.0', 'peer': '127.0.0.1'}], - 30: [{'addr': '::1', 'netmask': 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128', 'peer': '::1', 'flags': 0}, + 'lo0': {{AF_INET}: [{'addr': '127.0.0.1', 'netmask': '255.0.0.0', 'peer': '127.0.0.1'}], + {AF_INET6}: [{'addr': '::1', 'netmask': 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128', 'peer': '::1', 'flags': 0}, {'addr': 'fe80::1%lo0', 'netmask': 'ffff:ffff:ffff:ffff::/64', 'flags': 0}]}, 'gif0': {}, 'stf0': {}, 'XHC20': {}, 'XHC4': {}, 'XHC3': {}, - 'en3': {18: [{'addr': 'b6:00:24:b9:f0:01'}]}, - 'en8': {18: [{'addr': 'b6:00:24:b9:f0:00'}]}, - 'en4': {18: [{'addr': 'b6:00:24:b9:f0:05'}]}, - 'en9': {18: [{'addr': 'b6:00:24:b9:f0:04'}]}, - 'en0': {18: [{'addr': '78:4f:43:76:73:ba'}], - 2: [{'addr': '195.169.24.149', 'netmask': '255.255.255.128', 'broadcast': '195.169.24.255'}], - 30: [{'addr': 'fe80::1c97:ec77:3f32:cdfe%en0', 'netmask': 'ffff:ffff:ffff:ffff::/64', 'flags': 1024}, + 'en3': {{AF_LINK}: [{'addr': 'b6:00:24:b9:f0:01'}]}, + 'en8': {{AF_LINK}: [{'addr': 'b6:00:24:b9:f0:00'}]}, + 'en4': {{AF_LINK}: [{'addr': 'b6:00:24:b9:f0:05'}]}, + 'en9': {{AF_LINK}: [{'addr': 'b6:00:24:b9:f0:04'}]}, + 'en0': {{AF_LINK}: [{'addr': '78:4f:43:76:73:ba'}], + {AF_INET}: [{'addr': '195.169.24.149', 'netmask': '255.255.255.128', 'broadcast': '195.169.24.255'}], + {AF_INET6}: [{'addr': 'fe80::1c97:ec77:3f3{AF_INET}:cdfe%en0', 'netmask': 'ffff:ffff:ffff:ffff::/64', 'flags': 1024}, {'addr': '2001:610:9d8:4:4d7:f763:9815:e78d', 'netmask': 'ffff:ffff:ffff:ffff::/64', 'flags': 1088}, - {'addr': '2001:610:9d8:4:492e:61b6:2c92:c387', 'netmask': 'ffff:ffff:ffff:ffff::/64', 'flags': 192}]}, - 'p2p0': {18: [{'addr': '0a:4f:43:76:73:ba'}]}, - 'awdl0': {18: [{'addr': '8e:87:e3:bb:92:1f'}], - 30: [{'addr': 'fe80::8c87:e3ff:febb:921f%awdl0', 'netmask': 'ffff:ffff:ffff:ffff::/64', 'flags': 0}]}, - 'bridge0': {18: [{'addr': 'b6:00:24:b9:f0:01'}]}, - 'utun0': {30: [{'addr': 'fe80::8328:d0ef:52b4:d379%utun0', 'netmask': 'ffff:ffff:ffff:ffff::/64', 'flags': 0}]}, - 'utun1': {30: [{'addr': 'fe80::5a75:c789:2fa0:6ee4%utun1', 'netmask': 'ffff:ffff:ffff:ffff::/64', 'flags': 0}]}, + {'addr': '2001:610:9d8:4:492e:61b6:2c9{AF_INET}:c387', 'netmask': 'ffff:ffff:ffff:ffff::/64', 'flags': 192}]}, + 'p2p0': {{AF_LINK}: [{'addr': '0a:4f:43:76:73:ba'}]}, + 'awdl0': {{AF_LINK}: [{'addr': '8e:87:e3:bb:9{AF_INET}:1f'}], + {AF_INET6}: [{'addr': 'fe80::8c87:e3ff:febb:921f%awdl0', 'netmask': 'ffff:ffff:ffff:ffff::/64', 'flags': 0}]}, + 'bridge0': {{AF_LINK}: [{'addr': 'b6:00:24:b9:f0:01'}]}, + 'utun0': {{AF_INET6}: [{'addr': 'fe80::8328:d0ef:52b4:d379%utun0', 'netmask': 'ffff:ffff:ffff:ffff::/64', 'flags': 0}]}, + 'utun1': {{AF_INET6}: [{'addr': 'fe80::5a75:c789:2fa0:6ee4%utun1', 'netmask': 'ffff:ffff:ffff:ffff::/64', 'flags': 0}]}, 'XHC0': {}, 'XHC1': {}, 'XHC2': {}, - 'en21': {18: [{'addr': '64:4b:f0:10:23:25'}], - 2: [{'addr': '195.169.24.170', 'netmask': '255.255.255.128', 'broadcast': '195.169.24.255'}], - 30: [{'addr': 'fe80::41c:798c:3fff:f8c9%en21', 'netmask': 'ffff:ffff:ffff:ffff::/64', 'flags': 1024}, - {'addr': '2001:610:9d8:4:c1e:4402:e7cf:547f', 'netmask': 'ffff:ffff:ffff:ffff::/64', 'flags': 1088}, - {'addr': '2001:610:9d8:4:911c:954d:d4e2:baef', 'netmask': 'ffff:ffff:ffff:ffff::/64', 'flags': 192}]}, - 'en5': {18: [{'addr': 'ac:de:48:00:11:22'}], - 30: [{'addr': 'fe80::aede:48ff:fe00:1122%en5', 'netmask': 'ffff:ffff:ffff:ffff::/64', 'flags': 0}]}, - 'en18': {18: [{'addr': 'ca:3c:85:86:34:2a'}], 2: [{'addr': '169.254.184.83', 'netmask': '255.255.0.0'}]}, + 'en21': {{AF_LINK}: [{'addr': '64:4b:f0:10:23:25'}], + {AF_INET}: [{'addr': '195.169.24.170', 'netmask': '255.255.255.128', 'broadcast': '195.169.24.255'}], + {AF_INET6}: [{'addr': 'fe80::41c:798c:3fff:f8c9%en21', 'netmask': 'ffff:ffff:ffff:ffff::/64', 'flags': 1024}, + {'addr': '2001:610:9d8:4:c1e:440{AF_INET}:e7cf:547f', 'netmask': 'ffff:ffff:ffff:ffff::/64', 'flags': 1088}, + {'addr': '2001:610:9d8:4:911c:954d:d4e{AF_INET}:baef', 'netmask': 'ffff:ffff:ffff:ffff::/64', 'flags': 192}]}, + 'en5': {{AF_LINK}: [{'addr': 'ac:de:48:00:11:22'}], + {AF_INET6}: [{'addr': 'fe80::aede:48ff:fe00:1122%en5', 'netmask': 'ffff:ffff:ffff:ffff::/64', 'flags': 0}]}, + 'en18': {{AF_LINK}: [{'addr': 'ca:3c:85:86:34:2a'}], {AF_INET}: [{'addr': '169.254.184.83', 'netmask': '255.255.0.0'}]}, }""" # noqa: E501 -NETIFACES_TEST_DATA = ast.literal_eval(NETIFACES_TEST_DATA_STRING) + +@pytest.fixture +def mocked_netifaces(mocker): + s = NETIFACES_TEST_DATA_STRING + for k, v in { + 'AF_INET': netifaces.AF_INET, + 'AF_INET6': netifaces.AF_INET6, + 'AF_LINK': netifaces.AF_LINK + }.items(): + s = s.replace('{%s}' % k, str(v)) + data = ast.literal_eval(s) + mocker.patch('netifaces.interfaces', lambda: data.keys()) + mocker.patch('netifaces.ifaddresses', lambda n: data[n]) -def test_local_v4_interfaces(mocker): - mocker.patch('netifaces.interfaces', lambda: NETIFACES_TEST_DATA.keys()) - mocker.patch('netifaces.ifaddresses', lambda n: NETIFACES_TEST_DATA[n]) +def test_local_v4_interfaces(mocked_netifaces): addresses = list(juniper.local_interfaces()) assert len(addresses) == 3 for a in addresses: assert isinstance(a, ipaddress.IPv4Interface) -def test_local_v6_interfaces(mocker): - mocker.patch('netifaces.interfaces', lambda: NETIFACES_TEST_DATA.keys()) - mocker.patch('netifaces.ifaddresses', lambda n: NETIFACES_TEST_DATA[n]) +def test_local_v6_interfaces(mocked_netifaces): addresses = list(juniper.local_interfaces(netifaces.AF_INET6)) assert len(addresses) == 4 for a in addresses: -- GitLab