Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit a6ce888

Browse files
committedApr 18, 2023
Base-line tests for future refactor.
1 parent a995f27 commit a6ce888

File tree

2 files changed

+187
-7
lines changed

2 files changed

+187
-7
lines changed
 
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
{
2+
"global": {
3+
"peers": {
4+
"10.1.0.0": {
5+
"address_family": {
6+
"ipv4": {
7+
"accepted_prefixes": 1000,
8+
"received_prefixes": 1000,
9+
"sent_prefixes": 1000
10+
},
11+
"ipv6": {
12+
"accepted_prefixes": 1000,
13+
"received_prefixes": 1000,
14+
"sent_prefixes": 1000
15+
}
16+
},
17+
"description": "",
18+
"is_enabled": true,
19+
"is_up": true,
20+
"local_as": 4268360780,
21+
"remote_as": 67890,
22+
"remote_id": "0.0.0.0",
23+
"uptime": 1783
24+
},
25+
"10.2.0.0": {
26+
"address_family": {
27+
"ipv4": {
28+
"accepted_prefixes": 1000,
29+
"received_prefixes": 1000,
30+
"sent_prefixes": 1000
31+
},
32+
"ipv6": {
33+
"accepted_prefixes": 1000,
34+
"received_prefixes": 1000,
35+
"sent_prefixes": 1000
36+
}
37+
},
38+
"description": "",
39+
"is_enabled": true,
40+
"is_up": false,
41+
"local_as": 4268360780,
42+
"remote_as": 67890,
43+
"remote_id": "0.0.0.0",
44+
"uptime": 1782
45+
},
46+
"10.64.207.255": {
47+
"address_family": {
48+
"ipv4": {
49+
"accepted_prefixes": 1000,
50+
"received_prefixes": 1000,
51+
"sent_prefixes": 1000
52+
},
53+
"ipv6": {
54+
"accepted_prefixes": 1000,
55+
"received_prefixes": 1000,
56+
"sent_prefixes": 1000
57+
}
58+
},
59+
"description": "",
60+
"is_enabled": false,
61+
"is_up": true,
62+
"local_as": 4268360780,
63+
"remote_as": 12345,
64+
"remote_id": "0.0.0.0",
65+
"uptime": 1782
66+
},
67+
"7.7.7.7": {
68+
"address_family": {
69+
"ipv4": {
70+
"accepted_prefixes": 1000,
71+
"received_prefixes": 1000,
72+
"sent_prefixes": 1000
73+
},
74+
"ipv6": {
75+
"accepted_prefixes": 1000,
76+
"received_prefixes": 1000,
77+
"sent_prefixes": 1000
78+
}
79+
},
80+
"description": "",
81+
"is_enabled": true,
82+
"is_up": true,
83+
"local_as": 4268360780,
84+
"remote_as": 67890,
85+
"remote_id": "0.0.0.0",
86+
"uptime": 0
87+
}
88+
},
89+
"router_id": "1.1.0.1"
90+
},
91+
"vpn": {
92+
"peers": {
93+
"10.1.0.0": {
94+
"address_family": {
95+
"ipv4": {
96+
"accepted_prefixes": 1000,
97+
"received_prefixes": 1000,
98+
"sent_prefixes": 1000
99+
},
100+
"ipv6": {
101+
"accepted_prefixes": 1000,
102+
"received_prefixes": 1000,
103+
"sent_prefixes": 1000
104+
}
105+
},
106+
"description": "",
107+
"is_enabled": true,
108+
"is_up": true,
109+
"local_as": 4268360780,
110+
"remote_as": 67890,
111+
"remote_id": "0.0.0.0",
112+
"uptime": 1783
113+
},
114+
"10.2.0.0": {
115+
"address_family": {
116+
"ipv4": {
117+
"accepted_prefixes": 1000,
118+
"received_prefixes": 1000,
119+
"sent_prefixes": 1000
120+
},
121+
"ipv6": {
122+
"accepted_prefixes": 1000,
123+
"received_prefixes": 1000,
124+
"sent_prefixes": 1000
125+
}
126+
},
127+
"description": "",
128+
"is_enabled": true,
129+
"is_up": false,
130+
"local_as": 4268360780,
131+
"remote_as": 67890,
132+
"remote_id": "0.0.0.0",
133+
"uptime": 1782
134+
}
135+
},
136+
"router_id": "10.1.0.1"
137+
}
138+
}

‎tests/test_get_value.py

+49-7
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,58 @@
1-
"""Test GitHub issues."""
1+
"""Test extract_data_from_json."""
22
import pytest
33
from jdiff import extract_data_from_json
4+
from .utility import load_json_file
45

56

6-
my_data = [{"global": {"peers": {"10.1.0.0": "peer1", "10.2.0.0": "peer2"}}}]
7+
test_cases_extract_data_none = [
8+
"global[*]",
9+
'global.peers."1.1.1.1"',
10+
]
711

812

9-
@pytest.mark.parametrize("data", my_data)
10-
def test_jmspath_return_none(data):
11-
"""Handle exception when JMSPath retunr None."""
12-
my_jmspath = "global[*]"
13+
@pytest.mark.parametrize("jmspath", test_cases_extract_data_none)
14+
def test_jmspath_return_none(jmspath):
15+
"""Handle exception when JMSPath returns None."""
16+
data = {"global": {"peers": {"10.1.0.0": "peer1", "10.2.0.0": "peer2"}}}
1317
with pytest.raises(TypeError) as error:
14-
extract_data_from_json(data=data, path=my_jmspath)() # pylint: disable=E0110
18+
extract_data_from_json(data=data, path=jmspath)
1519

1620
assert "JMSPath returned 'None'. Please, verify your JMSPath regex." in error.value.__str__()
21+
22+
23+
test_cases_extract_data_no_ref_key = [
24+
("global.peers.*.*.ipv6.[accepted_prefixes]", [[1000], [1000], [1000], [1000]]),
25+
("vpn.peers.*.*.ipv6.[accepted_prefixes]", [[1000], [1000]]),
26+
(
27+
"*.peers.*.*.*.[accepted_prefixes]",
28+
[[1000], [1000], [1000], [1000], [1000], [1000], [1000], [1000], [1000], [1000], [1000], [1000]],
29+
),
30+
]
31+
32+
33+
test_cases_extract_data__with_ref_key = [
34+
(
35+
"global.peers.$*$.*.ipv6.[accepted_prefixes]",
36+
[
37+
{"10.1.0.0": {"accepted_prefixes": 1000}},
38+
{"10.2.0.0": {"accepted_prefixes": 1000}},
39+
{"10.64.207.255": {"accepted_prefixes": 1000}},
40+
{"7.7.7.7": {"accepted_prefixes": 1000}},
41+
],
42+
),
43+
(
44+
"vpn.peers.$*$.*.ipv6.[accepted_prefixes]",
45+
[{"10.1.0.0": {"accepted_prefixes": 1000}}, {"10.2.0.0": {"accepted_prefixes": 1000}}],
46+
),
47+
]
48+
49+
50+
@pytest.mark.parametrize(
51+
"jmspath, expected_value", test_cases_extract_data_no_ref_key + test_cases_extract_data__with_ref_key
52+
)
53+
def test_extract_data_from_json(jmspath, expected_value):
54+
"""Test JMSPath return value."""
55+
data = load_json_file("napalm_get_bgp_neighbors", "multi_vrf.json")
56+
value = extract_data_from_json(data=data, path=jmspath)
57+
58+
assert value == expected_value

0 commit comments

Comments
 (0)
Please sign in to comment.