Skip to content

Commit 4d1804d

Browse files
committed
resovler / add pointer tests
1 parent daad51d commit 4d1804d

File tree

1 file changed

+97
-0
lines changed

1 file changed

+97
-0
lines changed
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
import pytest
2+
3+
4+
def get_data_set():
5+
# https://tools.ietf.org/html/rfc6901
6+
return {
7+
"valid_pointers": [
8+
"/myElement",
9+
"/definitions/myElement",
10+
"",
11+
"/foo",
12+
"/foo/0",
13+
"/",
14+
"/a~1b",
15+
"/c%d",
16+
"/e^f",
17+
"/g|h",
18+
"/i\\j" '/k"l',
19+
"/ ",
20+
"/m~0n",
21+
"/m~01",
22+
],
23+
"invalid_pointers": ["../foo", "foobar", None],
24+
"tokens_by_pointer": {
25+
"/myElement": ["", "myElement"],
26+
"/definitions/myElement": ["", "definitions", "myElement"],
27+
"": [""],
28+
"/foo": ["", "foo"],
29+
"/foo/0": ["", "foo", "0"],
30+
"/": ["", ""],
31+
"/a~1b": ["", "a/b"],
32+
"/c%d": ["", "c%d"],
33+
"/e^f": ["", "e^f"],
34+
"/g|h": ["", "g|h"],
35+
"/i\\j": ["", "i\\j"],
36+
'/k"l': ["", 'k"l'],
37+
"/ ": ["", " "],
38+
"/m~0n": ["", "m~n"],
39+
"/m~01": ["", "m~1"],
40+
},
41+
}
42+
43+
44+
def test___init__():
45+
from openapi_python_client.resolver.pointer import Pointer
46+
47+
data_set = get_data_set()
48+
49+
for pointer_str in data_set["valid_pointers"]:
50+
p = Pointer(pointer_str)
51+
assert p.value != None
52+
assert p.value == pointer_str
53+
54+
for pointer_str in data_set["invalid_pointers"]:
55+
with pytest.raises(ValueError):
56+
p = Pointer(pointer_str)
57+
58+
59+
def test_token():
60+
from openapi_python_client.resolver.pointer import Pointer
61+
62+
data_set = get_data_set()
63+
64+
for pointer_str in data_set["tokens_by_pointer"].keys():
65+
p = Pointer(pointer_str)
66+
expected_tokens = data_set["tokens_by_pointer"][pointer_str]
67+
68+
for idx, token in enumerate(p.tokens()):
69+
assert expected_tokens[idx] == token
70+
71+
72+
def test_parent():
73+
from openapi_python_client.resolver.pointer import Pointer
74+
75+
data_set = get_data_set()
76+
77+
for pointer_str in data_set["tokens_by_pointer"].keys():
78+
p = Pointer(pointer_str)
79+
expected_tokens = data_set["tokens_by_pointer"][pointer_str]
80+
81+
while p.parent is not None:
82+
p = p.parent
83+
expected_tokens.pop()
84+
assert p.tokens()[-1] == expected_tokens[-1]
85+
assert len(p.tokens()) == len(expected_tokens)
86+
87+
assert len(expected_tokens) == 1
88+
assert expected_tokens[-1] == ""
89+
90+
91+
def test__unescape_and__escape():
92+
from openapi_python_client.resolver.pointer import Pointer
93+
94+
escaped_unescaped_values = [("/m~0n", "/m~n"), ("/m~01", "/m~1"), ("/a~1b", "/a/b"), ("/foobar", "/foobar")]
95+
96+
for escaped, unescaped in escaped_unescaped_values:
97+
assert Pointer(escaped).unescapated_value == unescaped

0 commit comments

Comments
 (0)