Skip to content

Commit d9db092

Browse files
committed
ci: Add integration tests for headers.
1 parent 3d916b8 commit d9db092

File tree

7 files changed

+301
-3
lines changed

7 files changed

+301
-3
lines changed

integration-tests/integration_tests/api/parameters/__init__.py

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,185 @@
1+
from typing import Any, Dict, Optional, Union
2+
3+
import httpx
4+
5+
from ...client import Client
6+
from ...models.post_parameters_header_response_200 import PostParametersHeaderResponse200
7+
from ...models.public_error import PublicError
8+
from ...types import Response
9+
10+
11+
def _get_kwargs(
12+
*,
13+
client: Client,
14+
boolean_header: bool,
15+
string_header: str,
16+
number_header: float,
17+
integer_header: int,
18+
) -> Dict[str, Any]:
19+
url = "{}/parameters/header".format(client.base_url)
20+
21+
headers: Dict[str, str] = client.get_headers()
22+
cookies: Dict[str, Any] = client.get_cookies()
23+
24+
headers["Boolean-Header"] = "true" if boolean_header else "false"
25+
26+
headers["String-Header"] = string_header
27+
28+
headers["Number-Header"] = str(number_header)
29+
30+
headers["Integer-Header"] = str(integer_header)
31+
32+
return {
33+
"method": "post",
34+
"url": url,
35+
"headers": headers,
36+
"cookies": cookies,
37+
"timeout": client.get_timeout(),
38+
}
39+
40+
41+
def _parse_response(*, response: httpx.Response) -> Optional[Union[PostParametersHeaderResponse200, PublicError]]:
42+
if response.status_code == 200:
43+
response_200 = PostParametersHeaderResponse200.from_dict(response.json())
44+
45+
return response_200
46+
if response.status_code == 400:
47+
response_400 = PublicError.from_dict(response.json())
48+
49+
return response_400
50+
return None
51+
52+
53+
def _build_response(*, response: httpx.Response) -> Response[Union[PostParametersHeaderResponse200, PublicError]]:
54+
return Response(
55+
status_code=response.status_code,
56+
content=response.content,
57+
headers=response.headers,
58+
parsed=_parse_response(response=response),
59+
)
60+
61+
62+
def sync_detailed(
63+
*,
64+
client: Client,
65+
boolean_header: bool,
66+
string_header: str,
67+
number_header: float,
68+
integer_header: int,
69+
) -> Response[Union[PostParametersHeaderResponse200, PublicError]]:
70+
"""
71+
Args:
72+
boolean_header (bool):
73+
string_header (str):
74+
number_header (float):
75+
integer_header (int):
76+
77+
Returns:
78+
Response[Union[PostParametersHeaderResponse200, PublicError]]
79+
"""
80+
81+
kwargs = _get_kwargs(
82+
client=client,
83+
boolean_header=boolean_header,
84+
string_header=string_header,
85+
number_header=number_header,
86+
integer_header=integer_header,
87+
)
88+
89+
response = httpx.request(
90+
verify=client.verify_ssl,
91+
**kwargs,
92+
)
93+
94+
return _build_response(response=response)
95+
96+
97+
def sync(
98+
*,
99+
client: Client,
100+
boolean_header: bool,
101+
string_header: str,
102+
number_header: float,
103+
integer_header: int,
104+
) -> Optional[Union[PostParametersHeaderResponse200, PublicError]]:
105+
"""
106+
Args:
107+
boolean_header (bool):
108+
string_header (str):
109+
number_header (float):
110+
integer_header (int):
111+
112+
Returns:
113+
Response[Union[PostParametersHeaderResponse200, PublicError]]
114+
"""
115+
116+
return sync_detailed(
117+
client=client,
118+
boolean_header=boolean_header,
119+
string_header=string_header,
120+
number_header=number_header,
121+
integer_header=integer_header,
122+
).parsed
123+
124+
125+
async def asyncio_detailed(
126+
*,
127+
client: Client,
128+
boolean_header: bool,
129+
string_header: str,
130+
number_header: float,
131+
integer_header: int,
132+
) -> Response[Union[PostParametersHeaderResponse200, PublicError]]:
133+
"""
134+
Args:
135+
boolean_header (bool):
136+
string_header (str):
137+
number_header (float):
138+
integer_header (int):
139+
140+
Returns:
141+
Response[Union[PostParametersHeaderResponse200, PublicError]]
142+
"""
143+
144+
kwargs = _get_kwargs(
145+
client=client,
146+
boolean_header=boolean_header,
147+
string_header=string_header,
148+
number_header=number_header,
149+
integer_header=integer_header,
150+
)
151+
152+
async with httpx.AsyncClient(verify=client.verify_ssl) as _client:
153+
response = await _client.request(**kwargs)
154+
155+
return _build_response(response=response)
156+
157+
158+
async def asyncio(
159+
*,
160+
client: Client,
161+
boolean_header: bool,
162+
string_header: str,
163+
number_header: float,
164+
integer_header: int,
165+
) -> Optional[Union[PostParametersHeaderResponse200, PublicError]]:
166+
"""
167+
Args:
168+
boolean_header (bool):
169+
string_header (str):
170+
number_header (float):
171+
integer_header (int):
172+
173+
Returns:
174+
Response[Union[PostParametersHeaderResponse200, PublicError]]
175+
"""
176+
177+
return (
178+
await asyncio_detailed(
179+
client=client,
180+
boolean_header=boolean_header,
181+
string_header=string_header,
182+
number_header=number_header,
183+
integer_header=integer_header,
184+
)
185+
).parsed

integration-tests/integration_tests/models/__init__.py

+1
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,6 @@
22

33
from .post_body_multipart_multipart_data import PostBodyMultipartMultipartData
44
from .post_body_multipart_response_200 import PostBodyMultipartResponse200
5+
from .post_parameters_header_response_200 import PostParametersHeaderResponse200
56
from .problem import Problem
67
from .public_error import PublicError
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
from typing import Any, Dict, List, Type, TypeVar
2+
3+
import attr
4+
5+
T = TypeVar("T", bound="PostParametersHeaderResponse200")
6+
7+
8+
@attr.s(auto_attribs=True)
9+
class PostParametersHeaderResponse200:
10+
"""
11+
Attributes:
12+
boolean (bool): Echo of the 'Boolean-Header' input parameter from the header.
13+
string (str): Echo of the 'String-Header' input parameter from the header.
14+
number (float): Echo of the 'Number-Header' input parameter from the header.
15+
integer (int): Echo of the 'Integer-Header' input parameter from the header.
16+
"""
17+
18+
boolean: bool
19+
string: str
20+
number: float
21+
integer: int
22+
additional_properties: Dict[str, Any] = attr.ib(init=False, factory=dict)
23+
24+
def to_dict(self) -> Dict[str, Any]:
25+
boolean = self.boolean
26+
string = self.string
27+
number = self.number
28+
integer = self.integer
29+
30+
field_dict: Dict[str, Any] = {}
31+
field_dict.update(self.additional_properties)
32+
field_dict.update(
33+
{
34+
"boolean": boolean,
35+
"string": string,
36+
"number": number,
37+
"integer": integer,
38+
}
39+
)
40+
41+
return field_dict
42+
43+
@classmethod
44+
def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
45+
d = src_dict.copy()
46+
boolean = d.pop("boolean")
47+
48+
string = d.pop("string")
49+
50+
number = d.pop("number")
51+
52+
integer = d.pop("integer")
53+
54+
post_parameters_header_response_200 = cls(
55+
boolean=boolean,
56+
string=string,
57+
number=number,
58+
integer=integer,
59+
)
60+
61+
post_parameters_header_response_200.additional_properties = d
62+
return post_parameters_header_response_200
63+
64+
@property
65+
def additional_keys(self) -> List[str]:
66+
return list(self.additional_properties.keys())
67+
68+
def __getitem__(self, key: str) -> Any:
69+
return self.additional_properties[key]
70+
71+
def __setitem__(self, key: str, value: Any) -> None:
72+
self.additional_properties[key] = value
73+
74+
def __delitem__(self, key: str) -> None:
75+
del self.additional_properties[key]
76+
77+
def __contains__(self, key: str) -> bool:
78+
return key in self.additional_properties

integration-tests/tests/conftest.py

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import pytest
2+
from integration_tests.client import Client
3+
4+
5+
@pytest.fixture(scope="session")
6+
def client() -> Client:
7+
return Client("http://localhost:3000")

integration-tests/tests/test_api/test_body/test_post_body_multipart.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,7 @@
77
from integration_tests.types import File
88

99

10-
def test() -> None:
11-
client = Client("http://localhost:3000")
12-
10+
def test(client: Client) -> None:
1311
a_string = "a test string"
1412
payload = b"some file content"
1513
file_name = "cool_stuff.txt"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
from integration_tests.api.parameters.post_parameters_header import sync_detailed
2+
from integration_tests.client import Client
3+
from integration_tests.models.post_parameters_header_response_200 import PostParametersHeaderResponse200
4+
5+
6+
def test(client: Client) -> None:
7+
string_header = "a test string"
8+
integer_header = 1
9+
number_header = 1.1
10+
boolean_header = True
11+
12+
response = sync_detailed(
13+
client=client,
14+
boolean_header=boolean_header,
15+
string_header=string_header,
16+
integer_header=integer_header,
17+
number_header=number_header,
18+
)
19+
20+
parsed = response.parsed
21+
assert parsed is not None, f"{response.status_code}: {response.content}"
22+
assert isinstance(
23+
parsed,
24+
PostParametersHeaderResponse200,
25+
), parsed
26+
assert parsed.string == string_header
27+
assert parsed.integer == integer_header
28+
assert parsed.number == number_header
29+
assert parsed.boolean == boolean_header

0 commit comments

Comments
 (0)