Skip to content

Commit 1739da9

Browse files
author
Joel Collins
committed
Coverage for server spec paths
1 parent 72bb4b0 commit 1739da9

File tree

1 file changed

+73
-0
lines changed

1 file changed

+73
-0
lines changed

tests/test_server_spec_paths.py

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
import pytest
2+
3+
from labthings.server.spec import paths
4+
5+
6+
def make_rule(app, path, **kwargs):
7+
@app.route(path, **kwargs)
8+
def view():
9+
pass
10+
11+
return app.url_map._rules_by_endpoint["view"][0]
12+
13+
14+
def make_param(in_location="path", **kwargs):
15+
ret = {"in": in_location, "required": True}
16+
ret.update(kwargs)
17+
return ret
18+
19+
20+
def test_rule_to_path(app):
21+
rule = make_rule(app, "/path/<id>/")
22+
assert paths.rule_to_path(rule) == "/path/{id}/"
23+
24+
25+
def test_rule_to_param(app):
26+
rule = make_rule(app, "/path/<id>/")
27+
assert paths.rule_to_params(rule) == [
28+
{"in": "path", "name": "id", "required": True, "schema": {"type": "string"}}
29+
]
30+
31+
32+
def test_rule_to_param_typed(app):
33+
rule = make_rule(app, "/path/<int:id>/")
34+
assert paths.rule_to_params(rule) == [
35+
{
36+
"in": "path",
37+
"name": "id",
38+
"required": True,
39+
"schema": {"type": "integer"},
40+
"format": "int32",
41+
}
42+
]
43+
44+
45+
def test_rule_to_param_typed_default(app):
46+
rule = make_rule(app, "/path/<int:id>/", defaults={"id": 1})
47+
assert paths.rule_to_params(rule) == [
48+
{
49+
"in": "path",
50+
"name": "id",
51+
"required": True,
52+
"default": 1,
53+
"schema": {"type": "integer"},
54+
"format": "int32",
55+
}
56+
]
57+
58+
59+
def test_rule_to_param_overrides(app):
60+
rule = make_rule(app, "/path/<id>/")
61+
overrides = {"override_key": {"in": "header", "name": "header_param"}}
62+
assert paths.rule_to_params(rule, overrides=overrides) == [
63+
{"in": "path", "name": "id", "required": True, "schema": {"type": "string"}},
64+
*overrides.values(),
65+
]
66+
67+
68+
def test_rule_to_param_overrides_invalid(app):
69+
rule = make_rule(app, "/path/<id>/")
70+
overrides = {"override_key": {"in": "invalid", "name": "header_param"}}
71+
assert paths.rule_to_params(rule, overrides=overrides) == [
72+
{"in": "path", "name": "id", "required": True, "schema": {"type": "string"}},
73+
]

0 commit comments

Comments
 (0)