1+ import datetime
2+ import json
3+
14import pytest
25
36from pulp_glue .common .openapi import OpenAPI , _Response
47
58pytestmark = pytest .mark .glue
69
7- TEST_SCHEMA = b'{"openapi": "3.0.3", "paths": {}}'
10+ TEST_SCHEMA = json .dumps (
11+ {
12+ "openapi" : "3.0.3" ,
13+ "paths" : {"test/" : {"get" : {"operationId" : "test_id" }}},
14+ "components" : {"schemas" : {}},
15+ }
16+ ).encode ()
817
918
1019@pytest .fixture
1120def openapi (monkeypatch : pytest .MonkeyPatch ) -> OpenAPI :
12- monkeypatch .setattr (OpenAPI , "_download_api" , lambda x : TEST_SCHEMA )
13- return OpenAPI ("base_url" , "doc_path" )
21+ monkeypatch .setattr (OpenAPI , "load_api" , lambda self , refresh_cache : TEST_SCHEMA )
22+ openapi = OpenAPI ("base_url" , "doc_path" )
23+ openapi ._parse_api (TEST_SCHEMA )
24+ return openapi
1425
1526
1627def test_parse_response_returns_dict_for_no_content (openapi : OpenAPI ) -> None :
@@ -25,3 +36,46 @@ def test_parse_response_decodes_json(openapi: OpenAPI) -> None:
2536 {"responses" : {"200" : {"content" : {"application/json" : {}}}}}, response
2637 )
2738 assert result == {"a" : 1 , "b" : "Hallo!" }
39+
40+
41+ def test_extract_params_with_no_match (openapi : OpenAPI ) -> None :
42+ parameters = {"a" : 1 , "b" : "C" }
43+ query_params = openapi ._extract_params ("query" , {}, {}, parameters )
44+ assert query_params == {}
45+ assert parameters == {"a" : 1 , "b" : "C" }
46+
47+
48+ def test_extract_params_raises_for_missing_required_parameter (openapi : OpenAPI ) -> None :
49+ parameters = {"a" : 1 , "b" : "C" }
50+ with pytest .raises (RuntimeError , match = r"Required parameters \[c\] missing" ):
51+ openapi ._extract_params (
52+ "query" ,
53+ {"parameters" : [{"name" : "c" , "in" : "query" , "required" : True }]},
54+ {},
55+ parameters ,
56+ )
57+ assert parameters == {"a" : 1 , "b" : "C" }
58+
59+
60+ def test_extract_params_removes_matches (openapi : OpenAPI ) -> None :
61+ parameters = {"a" : 1 , "c" : "C" }
62+ query_params = openapi ._extract_params (
63+ "query" , {"parameters" : [{"name" : "c" , "in" : "query" , "required" : True }]}, {}, parameters
64+ )
65+ assert query_params == {"c" : "C" }
66+ assert parameters == {"a" : 1 }
67+
68+
69+ def test_extract_params_encodes_date (openapi : OpenAPI ) -> None :
70+ parameters = {"a" : datetime .date (2000 , 1 , 1 )}
71+ query_params = openapi ._extract_params (
72+ "query" ,
73+ {
74+ "parameters" : [
75+ {"name" : "a" , "in" : "query" , "schema" : {"type" : "string" , "format" : "date" }}
76+ ]
77+ },
78+ {},
79+ parameters ,
80+ )
81+ assert query_params == {"a" : "2000-01-01" }
0 commit comments