Compare commits
29 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
554e76ce51 | ||
|
2c51e9d929 | ||
|
ce341f8611 | ||
|
3529809970 | ||
|
1f320c1ad8 | ||
|
c4b5c20ff4 | ||
|
69141302cf | ||
|
df2ef1adc0 | ||
|
76dd0106be | ||
|
9d488db276 | ||
|
4d7e5b0384 | ||
|
6c154c76ff | ||
|
cd3a48c27a | ||
|
52bb0699e6 | ||
|
1181e2fc47 | ||
|
c32da605d0 | ||
|
40dfded213 | ||
|
0e991070a5 | ||
|
bf34914a8a | ||
|
4aee715e48 | ||
|
c649905e69 | ||
|
4015c60cfa | ||
|
a1dcc544cf | ||
|
f278629217 | ||
|
4e8fb95c52 | ||
|
27c0d76e16 | ||
|
16ba8caa5b | ||
|
53357214a8 | ||
|
cdcd526fb4 |
12
.gitlab-ci.yml
Normal file
12
.gitlab-ci.yml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
stages:
|
||||||
|
- package
|
||||||
|
|
||||||
|
publish-pypi:
|
||||||
|
stage: package
|
||||||
|
image: python:3.10
|
||||||
|
script:
|
||||||
|
- sed -i -e "s/1.12.1/${CI_COMMIT_TAG:1}/g" aiohttp_pydantic/__init__.py
|
||||||
|
- pip install -U setuptools wheel pip; pip install invoke
|
||||||
|
- invoke upload --pypi-user ${PYPI_REPO_USER} --pypi-password ${PYPI_REPO_PASSWORD} --pypi-url ${PYPI_REPO_URL}
|
||||||
|
only:
|
||||||
|
- tags
|
@ -2,4 +2,4 @@ from .view import PydanticView
|
|||||||
|
|
||||||
__version__ = "1.12.1"
|
__version__ = "1.12.1"
|
||||||
|
|
||||||
__all__ = ("PydanticView", "__version__")
|
__all__ = ("PydanticView", "__version__")
|
@ -14,7 +14,7 @@ def setup(
|
|||||||
url_prefix: str = "/oas",
|
url_prefix: str = "/oas",
|
||||||
enable: bool = True,
|
enable: bool = True,
|
||||||
version_spec: Optional[str] = None,
|
version_spec: Optional[str] = None,
|
||||||
title_spec: Optional[str] = None,
|
title_spec: Optional[str] = None
|
||||||
):
|
):
|
||||||
if enable:
|
if enable:
|
||||||
oas_app = web.Application()
|
oas_app = web.Application()
|
||||||
|
@ -185,6 +185,8 @@ async def oas_ui(request):
|
|||||||
|
|
||||||
static_url = request.app.router["static"].url_for(filename="")
|
static_url = request.app.router["static"].url_for(filename="")
|
||||||
spec_url = request.app.router["spec"].url_for()
|
spec_url = request.app.router["spec"].url_for()
|
||||||
|
if request.scheme != request.headers.get('x-forwarded-proto', request.scheme):
|
||||||
|
request = request.clone(scheme=request.headers['x-forwarded-proto'])
|
||||||
host = request.url.origin()
|
host = request.url.origin()
|
||||||
|
|
||||||
return Response(
|
return Response(
|
||||||
|
@ -3,4 +3,7 @@ requires = [
|
|||||||
"setuptools >= 46.4.0",
|
"setuptools >= 46.4.0",
|
||||||
"wheel",
|
"wheel",
|
||||||
]
|
]
|
||||||
build-backend = "setuptools.build_meta"
|
build-backend = "setuptools.build_meta"
|
||||||
|
|
||||||
|
[tool.pytest.ini_options]
|
||||||
|
asyncio_mode = "auto"
|
@ -1,42 +1,42 @@
|
|||||||
async-timeout==3.0.1
|
aiohttp==3.8.1
|
||||||
attrs==21.2.0
|
aiosignal==1.2.0
|
||||||
bleach==4.0.0
|
async-timeout==4.0.2
|
||||||
certifi==2021.5.30
|
atomicwrites==1.4.1
|
||||||
cffi==1.14.6
|
attrs==21.4.0
|
||||||
chardet==4.0.0
|
bleach==5.0.1
|
||||||
charset-normalizer==2.0.4
|
certifi==2022.6.15
|
||||||
codecov==2.1.11
|
charset-normalizer==2.1.0
|
||||||
colorama==0.4.4
|
codecov==2.1.12
|
||||||
coverage==5.5
|
colorama==0.4.5
|
||||||
cryptography==3.4.7
|
commonmark==0.9.1
|
||||||
docutils==0.17.1
|
coverage==6.4.2
|
||||||
idna==3.2
|
docutils==0.19
|
||||||
importlib-metadata==4.6.3
|
frozenlist==1.3.0
|
||||||
|
idna==3.3
|
||||||
|
importlib-metadata==4.12.0
|
||||||
iniconfig==1.1.1
|
iniconfig==1.1.1
|
||||||
jeepney==0.7.1
|
keyring==23.7.0
|
||||||
keyring==23.0.1
|
multidict==6.0.2
|
||||||
multidict==5.1.0
|
packaging==21.3
|
||||||
packaging==21.0
|
pkginfo==1.8.3
|
||||||
pkginfo==1.7.1
|
pluggy==1.0.0
|
||||||
pluggy==0.13.1
|
py==1.11.0
|
||||||
py==1.10.0
|
Pygments==2.12.0
|
||||||
pycparser==2.20
|
pyparsing==3.0.9
|
||||||
Pygments==2.9.0
|
pytest==7.1.2
|
||||||
pyparsing==2.4.7
|
pytest-aiohttp==1.0.4
|
||||||
pytest==6.1.2
|
pytest-asyncio==0.19.0
|
||||||
pytest-aiohttp==0.3.0
|
pytest-cov==3.0.0
|
||||||
pytest-cov==2.10.1
|
pywin32-ctypes==0.2.0
|
||||||
readme-renderer==29.0
|
readme-renderer==35.0
|
||||||
requests==2.26.0
|
requests==2.28.1
|
||||||
requests-toolbelt==0.9.1
|
requests-toolbelt==0.9.1
|
||||||
rfc3986==1.5.0
|
rfc3986==2.0.0
|
||||||
SecretStorage==3.3.1
|
rich==12.5.1
|
||||||
six==1.16.0
|
six==1.16.0
|
||||||
toml==0.10.2
|
tomli==2.0.1
|
||||||
tqdm==4.62.0
|
twine==4.0.1
|
||||||
twine==3.4.2
|
urllib3==1.26.11
|
||||||
typing-extensions==3.10.0.0
|
|
||||||
urllib3==1.26.6
|
|
||||||
webencodings==0.5.1
|
webencodings==0.5.1
|
||||||
yarl==1.6.3
|
yarl==1.7.2
|
||||||
zipp==3.5.0
|
zipp==3.8.1
|
||||||
|
@ -1,23 +1,28 @@
|
|||||||
async-timeout==3.0.1
|
aiohttp==3.8.1
|
||||||
attrs==21.2.0
|
aiosignal==1.2.0
|
||||||
bleach==4.0.0
|
async-timeout==4.0.2
|
||||||
chardet==4.0.0
|
atomicwrites==1.4.1
|
||||||
coverage==5.5
|
attrs==21.4.0
|
||||||
docutils==0.17.1
|
bleach==5.0.1
|
||||||
idna==3.2
|
charset-normalizer==2.1.0
|
||||||
|
colorama==0.4.5
|
||||||
|
coverage==6.4.2
|
||||||
|
docutils==0.19
|
||||||
|
frozenlist==1.3.0
|
||||||
|
idna==3.3
|
||||||
iniconfig==1.1.1
|
iniconfig==1.1.1
|
||||||
multidict==5.1.0
|
multidict==6.0.2
|
||||||
packaging==21.0
|
packaging==21.3
|
||||||
pluggy==0.13.1
|
pluggy==1.0.0
|
||||||
py==1.10.0
|
py==1.11.0
|
||||||
Pygments==2.9.0
|
Pygments==2.12.0
|
||||||
pyparsing==2.4.7
|
pyparsing==3.0.9
|
||||||
pytest==6.1.2
|
pytest==7.1.2
|
||||||
pytest-aiohttp==0.3.0
|
pytest-aiohttp==1.0.4
|
||||||
pytest-cov==2.10.1
|
pytest-asyncio==0.19.0
|
||||||
readme-renderer==29.0
|
pytest-cov==3.0.0
|
||||||
|
readme-renderer==35.0
|
||||||
six==1.16.0
|
six==1.16.0
|
||||||
toml==0.10.2
|
tomli==2.0.1
|
||||||
typing-extensions==3.10.0.0
|
|
||||||
webencodings==0.5.1
|
webencodings==0.5.1
|
||||||
yarl==1.6.3
|
yarl==1.7.2
|
||||||
|
12
setup.cfg
12
setup.cfg
@ -36,14 +36,14 @@ install_requires =
|
|||||||
|
|
||||||
[options.extras_require]
|
[options.extras_require]
|
||||||
test =
|
test =
|
||||||
pytest==6.1.2
|
pytest==7.1.2
|
||||||
pytest-aiohttp==0.3.0
|
pytest-aiohttp==1.0.4
|
||||||
pytest-cov==2.10.1
|
pytest-cov==3.0.0
|
||||||
readme-renderer==29.0
|
readme-renderer==35.0
|
||||||
ci =
|
ci =
|
||||||
%(test)s
|
%(test)s
|
||||||
codecov==2.1.11
|
codecov==2.1.12
|
||||||
twine==3.4.2
|
twine==4.0.1
|
||||||
|
|
||||||
[options.packages.find]
|
[options.packages.find]
|
||||||
exclude =
|
exclude =
|
||||||
|
13
tasks.py
13
tasks.py
@ -102,8 +102,9 @@ def test(c, isolate=False):
|
|||||||
"""
|
"""
|
||||||
Launch tests
|
Launch tests
|
||||||
"""
|
"""
|
||||||
opt = "I" if isolate else ""
|
#opt = "I" if isolate else ""
|
||||||
c.run(f"python -{opt}m pytest --cov-report=xml --cov=aiohttp_pydantic tests/")
|
#c.run(f"python -{opt}m pytest --cov-report=xml --cov=aiohttp_pydantic tests/")
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
@task()
|
@task()
|
||||||
@ -136,6 +137,7 @@ def prepare_ci_env(c):
|
|||||||
|
|
||||||
title("Installing wheel", "=")
|
title("Installing wheel", "=")
|
||||||
package_version = read_configuration("./setup.cfg")["metadata"]["version"]
|
package_version = read_configuration("./setup.cfg")["metadata"]["version"]
|
||||||
|
print([x for x in Path("dist").glob('*')])
|
||||||
dist = next(Path("dist").glob(f"aiohttp_pydantic-{package_version}-*.whl"))
|
dist = next(Path("dist").glob(f"aiohttp_pydantic-{package_version}-*.whl"))
|
||||||
c.run(f"dist_venv/bin/python -m pip install {dist}")
|
c.run(f"dist_venv/bin/python -m pip install {dist}")
|
||||||
|
|
||||||
@ -156,7 +158,7 @@ def prepare_upload(c):
|
|||||||
|
|
||||||
|
|
||||||
@task(tag_eq_version, prepare_upload)
|
@task(tag_eq_version, prepare_upload)
|
||||||
def upload(c, pypi_user=None, pypi_password=None):
|
def upload(c, pypi_user=None, pypi_password=None, pypi_url=None):
|
||||||
"""
|
"""
|
||||||
Upload on pypi
|
Upload on pypi
|
||||||
"""
|
"""
|
||||||
@ -165,8 +167,9 @@ def upload(c, pypi_user=None, pypi_password=None):
|
|||||||
if pypi_user is not None and pypi_password is not None:
|
if pypi_user is not None and pypi_password is not None:
|
||||||
c.run(
|
c.run(
|
||||||
f"dist_venv/bin/twine upload --non-interactive"
|
f"dist_venv/bin/twine upload --non-interactive"
|
||||||
f" -u {pypi_user} -p {pypi_password} {dist}",
|
f" -u {pypi_user} -p {pypi_password} {dist}"
|
||||||
|
f" --repository-url {pypi_url}",
|
||||||
hide=True,
|
hide=True,
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
c.run(f"dist_venv/bin/twine upload --repository aiohttp-pydantic {dist}")
|
c.run(f"dist_venv/bin/twine upload --repository-url {pypi_url} --repository aiohttp-pydantic {dist}")
|
||||||
|
@ -37,13 +37,14 @@ class ArticleView(PydanticView):
|
|||||||
|
|
||||||
|
|
||||||
async def test_post_an_article_with_wrong_type_field_should_return_an_error_message(
|
async def test_post_an_article_with_wrong_type_field_should_return_an_error_message(
|
||||||
aiohttp_client, loop
|
aiohttp_client, event_loop
|
||||||
):
|
):
|
||||||
app = web.Application()
|
app = web.Application()
|
||||||
app.router.add_view("/article", ArticleView)
|
app.router.add_view("/article", ArticleView)
|
||||||
|
|
||||||
client = await aiohttp_client(app)
|
client = await aiohttp_client(app)
|
||||||
resp = await client.post("/article", json={"name": "foo", "nb_page": "foo"})
|
resp = await client.post("/article", json={"name": "foo", "nb_page": "foo"})
|
||||||
|
|
||||||
assert resp.status == 400
|
assert resp.status == 400
|
||||||
assert resp.content_type == "application/json"
|
assert resp.content_type == "application/json"
|
||||||
assert await resp.json() == [
|
assert await resp.json() == [
|
||||||
|
@ -98,7 +98,7 @@ async def ensure_content_durability(client):
|
|||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
async def generated_oas(aiohttp_client, loop) -> web.Application:
|
async def generated_oas(aiohttp_client, event_loop) -> web.Application:
|
||||||
app = web.Application()
|
app = web.Application()
|
||||||
app.router.add_view("/pets", PetCollectionView)
|
app.router.add_view("/pets", PetCollectionView)
|
||||||
app.router.add_view("/pets/{id}", PetItemView)
|
app.router.add_view("/pets/{id}", PetItemView)
|
||||||
|
@ -29,7 +29,7 @@ class ArticleView(PydanticView):
|
|||||||
|
|
||||||
|
|
||||||
async def test_post_an_article_without_required_field_should_return_an_error_message(
|
async def test_post_an_article_without_required_field_should_return_an_error_message(
|
||||||
aiohttp_client, loop
|
aiohttp_client, event_loop
|
||||||
):
|
):
|
||||||
app = web.Application()
|
app = web.Application()
|
||||||
app.router.add_view("/article", ArticleView)
|
app.router.add_view("/article", ArticleView)
|
||||||
@ -49,7 +49,7 @@ async def test_post_an_article_without_required_field_should_return_an_error_mes
|
|||||||
|
|
||||||
|
|
||||||
async def test_post_an_article_with_wrong_type_field_should_return_an_error_message(
|
async def test_post_an_article_with_wrong_type_field_should_return_an_error_message(
|
||||||
aiohttp_client, loop
|
aiohttp_client, event_loop
|
||||||
):
|
):
|
||||||
app = web.Application()
|
app = web.Application()
|
||||||
app.router.add_view("/article", ArticleView)
|
app.router.add_view("/article", ArticleView)
|
||||||
@ -68,7 +68,7 @@ async def test_post_an_article_with_wrong_type_field_should_return_an_error_mess
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
async def test_post_an_array_json_is_supported(aiohttp_client, loop):
|
async def test_post_an_array_json_is_supported(aiohttp_client, event_loop):
|
||||||
app = web.Application()
|
app = web.Application()
|
||||||
app.router.add_view("/article", ArticleView)
|
app.router.add_view("/article", ArticleView)
|
||||||
|
|
||||||
@ -81,7 +81,7 @@ async def test_post_an_array_json_is_supported(aiohttp_client, loop):
|
|||||||
|
|
||||||
|
|
||||||
async def test_post_an_array_json_to_an_object_model_should_return_an_error(
|
async def test_post_an_array_json_to_an_object_model_should_return_an_error(
|
||||||
aiohttp_client, loop
|
aiohttp_client, event_loop
|
||||||
):
|
):
|
||||||
app = web.Application()
|
app = web.Application()
|
||||||
app.router.add_view("/article", ArticleView)
|
app.router.add_view("/article", ArticleView)
|
||||||
@ -101,7 +101,7 @@ async def test_post_an_array_json_to_an_object_model_should_return_an_error(
|
|||||||
|
|
||||||
|
|
||||||
async def test_post_an_object_json_to_a_list_model_should_return_an_error(
|
async def test_post_an_object_json_to_a_list_model_should_return_an_error(
|
||||||
aiohttp_client, loop
|
aiohttp_client, event_loop
|
||||||
):
|
):
|
||||||
app = web.Application()
|
app = web.Application()
|
||||||
app.router.add_view("/article", ArticleView)
|
app.router.add_view("/article", ArticleView)
|
||||||
@ -120,7 +120,7 @@ async def test_post_an_object_json_to_a_list_model_should_return_an_error(
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
async def test_post_a_valid_article_should_return_the_parsed_type(aiohttp_client, loop):
|
async def test_post_a_valid_article_should_return_the_parsed_type(aiohttp_client, event_loop):
|
||||||
app = web.Application()
|
app = web.Application()
|
||||||
app.router.add_view("/article", ArticleView)
|
app.router.add_view("/article", ArticleView)
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@ class ArticleViewWithSignatureGroup(PydanticView):
|
|||||||
|
|
||||||
|
|
||||||
async def test_get_article_without_required_header_should_return_an_error_message(
|
async def test_get_article_without_required_header_should_return_an_error_message(
|
||||||
aiohttp_client, loop
|
aiohttp_client, event_loop
|
||||||
):
|
):
|
||||||
app = web.Application()
|
app = web.Application()
|
||||||
app.router.add_view("/article", ArticleView)
|
app.router.add_view("/article", ArticleView)
|
||||||
@ -81,7 +81,7 @@ async def test_get_article_without_required_header_should_return_an_error_messag
|
|||||||
|
|
||||||
|
|
||||||
async def test_get_article_with_wrong_header_type_should_return_an_error_message(
|
async def test_get_article_with_wrong_header_type_should_return_an_error_message(
|
||||||
aiohttp_client, loop
|
aiohttp_client, event_loop
|
||||||
):
|
):
|
||||||
app = web.Application()
|
app = web.Application()
|
||||||
app.router.add_view("/article", ArticleView)
|
app.router.add_view("/article", ArticleView)
|
||||||
@ -101,7 +101,7 @@ async def test_get_article_with_wrong_header_type_should_return_an_error_message
|
|||||||
|
|
||||||
|
|
||||||
async def test_get_article_with_valid_header_should_return_the_parsed_type(
|
async def test_get_article_with_valid_header_should_return_the_parsed_type(
|
||||||
aiohttp_client, loop
|
aiohttp_client, event_loop
|
||||||
):
|
):
|
||||||
app = web.Application()
|
app = web.Application()
|
||||||
app.router.add_view("/article", ArticleView)
|
app.router.add_view("/article", ArticleView)
|
||||||
@ -116,7 +116,7 @@ async def test_get_article_with_valid_header_should_return_the_parsed_type(
|
|||||||
|
|
||||||
|
|
||||||
async def test_get_article_with_valid_header_containing_hyphen_should_be_returned(
|
async def test_get_article_with_valid_header_containing_hyphen_should_be_returned(
|
||||||
aiohttp_client, loop
|
aiohttp_client, event_loop
|
||||||
):
|
):
|
||||||
app = web.Application()
|
app = web.Application()
|
||||||
app.router.add_view("/article", ArticleView)
|
app.router.add_view("/article", ArticleView)
|
||||||
@ -130,7 +130,7 @@ async def test_get_article_with_valid_header_containing_hyphen_should_be_returne
|
|||||||
assert await resp.json() == {"signature": "2020-10-04T18:01:00"}
|
assert await resp.json() == {"signature": "2020-10-04T18:01:00"}
|
||||||
|
|
||||||
|
|
||||||
async def test_wrong_value_to_header_defined_with_str_enum(aiohttp_client, loop):
|
async def test_wrong_value_to_header_defined_with_str_enum(aiohttp_client, event_loop):
|
||||||
app = web.Application()
|
app = web.Application()
|
||||||
app.router.add_view("/coord", ViewWithEnumType)
|
app.router.add_view("/coord", ViewWithEnumType)
|
||||||
|
|
||||||
@ -153,7 +153,7 @@ async def test_wrong_value_to_header_defined_with_str_enum(aiohttp_client, loop)
|
|||||||
assert resp.content_type == "application/json"
|
assert resp.content_type == "application/json"
|
||||||
|
|
||||||
|
|
||||||
async def test_correct_value_to_header_defined_with_str_enum(aiohttp_client, loop):
|
async def test_correct_value_to_header_defined_with_str_enum(aiohttp_client, event_loop):
|
||||||
app = web.Application()
|
app = web.Application()
|
||||||
app.router.add_view("/coord", ViewWithEnumType)
|
app.router.add_view("/coord", ViewWithEnumType)
|
||||||
|
|
||||||
@ -164,7 +164,7 @@ async def test_correct_value_to_header_defined_with_str_enum(aiohttp_client, loo
|
|||||||
assert resp.content_type == "application/json"
|
assert resp.content_type == "application/json"
|
||||||
|
|
||||||
|
|
||||||
async def test_with_signature_group(aiohttp_client, loop):
|
async def test_with_signature_group(aiohttp_client, event_loop):
|
||||||
app = web.Application()
|
app = web.Application()
|
||||||
app.router.add_view("/article", ArticleViewWithSignatureGroup)
|
app.router.add_view("/article", ArticleViewWithSignatureGroup)
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ class ArticleView(PydanticView):
|
|||||||
|
|
||||||
|
|
||||||
async def test_get_article_with_correct_path_parameters_should_return_parameters_in_path(
|
async def test_get_article_with_correct_path_parameters_should_return_parameters_in_path(
|
||||||
aiohttp_client, loop
|
aiohttp_client, event_loop
|
||||||
):
|
):
|
||||||
app = web.Application()
|
app = web.Application()
|
||||||
app.router.add_view("/article/{author_id}/tag/{tag}/before/{date}", ArticleView)
|
app.router.add_view("/article/{author_id}/tag/{tag}/before/{date}", ArticleView)
|
||||||
@ -24,7 +24,7 @@ async def test_get_article_with_correct_path_parameters_should_return_parameters
|
|||||||
|
|
||||||
|
|
||||||
async def test_get_article_with_wrong_path_parameters_should_return_error(
|
async def test_get_article_with_wrong_path_parameters_should_return_error(
|
||||||
aiohttp_client, loop
|
aiohttp_client, event_loop
|
||||||
):
|
):
|
||||||
app = web.Application()
|
app = web.Application()
|
||||||
app.router.add_view("/article/{author_id}/tag/{tag}/before/{date}", ArticleView)
|
app.router.add_view("/article/{author_id}/tag/{tag}/before/{date}", ArticleView)
|
||||||
|
@ -55,7 +55,7 @@ class ArticleViewWithPaginationGroup(PydanticView):
|
|||||||
|
|
||||||
|
|
||||||
async def test_get_article_without_required_qs_should_return_an_error_message(
|
async def test_get_article_without_required_qs_should_return_an_error_message(
|
||||||
aiohttp_client, loop
|
aiohttp_client, event_loop
|
||||||
):
|
):
|
||||||
app = web.Application()
|
app = web.Application()
|
||||||
app.router.add_view("/article", ArticleView)
|
app.router.add_view("/article", ArticleView)
|
||||||
@ -75,7 +75,7 @@ async def test_get_article_without_required_qs_should_return_an_error_message(
|
|||||||
|
|
||||||
|
|
||||||
async def test_get_article_with_wrong_qs_type_should_return_an_error_message(
|
async def test_get_article_with_wrong_qs_type_should_return_an_error_message(
|
||||||
aiohttp_client, loop
|
aiohttp_client, event_loop
|
||||||
):
|
):
|
||||||
app = web.Application()
|
app = web.Application()
|
||||||
app.router.add_view("/article", ArticleView)
|
app.router.add_view("/article", ArticleView)
|
||||||
@ -95,7 +95,7 @@ async def test_get_article_with_wrong_qs_type_should_return_an_error_message(
|
|||||||
|
|
||||||
|
|
||||||
async def test_get_article_with_valid_qs_should_return_the_parsed_type(
|
async def test_get_article_with_valid_qs_should_return_the_parsed_type(
|
||||||
aiohttp_client, loop
|
aiohttp_client, event_loop
|
||||||
):
|
):
|
||||||
app = web.Application()
|
app = web.Application()
|
||||||
app.router.add_view("/article", ArticleView)
|
app.router.add_view("/article", ArticleView)
|
||||||
@ -114,7 +114,7 @@ async def test_get_article_with_valid_qs_should_return_the_parsed_type(
|
|||||||
|
|
||||||
|
|
||||||
async def test_get_article_with_valid_qs_and_omitted_optional_should_return_default_value(
|
async def test_get_article_with_valid_qs_and_omitted_optional_should_return_default_value(
|
||||||
aiohttp_client, loop
|
aiohttp_client, event_loop
|
||||||
):
|
):
|
||||||
app = web.Application()
|
app = web.Application()
|
||||||
app.router.add_view("/article", ArticleView)
|
app.router.add_view("/article", ArticleView)
|
||||||
@ -133,7 +133,7 @@ async def test_get_article_with_valid_qs_and_omitted_optional_should_return_defa
|
|||||||
|
|
||||||
|
|
||||||
async def test_get_article_with_multiple_value_for_qs_age_must_failed(
|
async def test_get_article_with_multiple_value_for_qs_age_must_failed(
|
||||||
aiohttp_client, loop
|
aiohttp_client, event_loop
|
||||||
):
|
):
|
||||||
app = web.Application()
|
app = web.Application()
|
||||||
app.router.add_view("/article", ArticleView)
|
app.router.add_view("/article", ArticleView)
|
||||||
@ -153,7 +153,7 @@ async def test_get_article_with_multiple_value_for_qs_age_must_failed(
|
|||||||
assert resp.content_type == "application/json"
|
assert resp.content_type == "application/json"
|
||||||
|
|
||||||
|
|
||||||
async def test_get_article_with_multiple_value_of_tags(aiohttp_client, loop):
|
async def test_get_article_with_multiple_value_of_tags(aiohttp_client, event_loop):
|
||||||
app = web.Application()
|
app = web.Application()
|
||||||
app.router.add_view("/article", ArticleView)
|
app.router.add_view("/article", ArticleView)
|
||||||
|
|
||||||
@ -172,7 +172,7 @@ async def test_get_article_with_multiple_value_of_tags(aiohttp_client, loop):
|
|||||||
assert resp.content_type == "application/json"
|
assert resp.content_type == "application/json"
|
||||||
|
|
||||||
|
|
||||||
async def test_get_article_with_one_value_of_tags_must_be_a_list(aiohttp_client, loop):
|
async def test_get_article_with_one_value_of_tags_must_be_a_list(aiohttp_client, event_loop):
|
||||||
app = web.Application()
|
app = web.Application()
|
||||||
app.router.add_view("/article", ArticleView)
|
app.router.add_view("/article", ArticleView)
|
||||||
|
|
||||||
@ -191,7 +191,7 @@ async def test_get_article_with_one_value_of_tags_must_be_a_list(aiohttp_client,
|
|||||||
assert resp.content_type == "application/json"
|
assert resp.content_type == "application/json"
|
||||||
|
|
||||||
|
|
||||||
async def test_get_article_without_required_field_page(aiohttp_client, loop):
|
async def test_get_article_without_required_field_page(aiohttp_client, event_loop):
|
||||||
app = web.Application()
|
app = web.Application()
|
||||||
app.router.add_view("/article", ArticleViewWithPaginationGroup)
|
app.router.add_view("/article", ArticleViewWithPaginationGroup)
|
||||||
|
|
||||||
@ -210,7 +210,7 @@ async def test_get_article_without_required_field_page(aiohttp_client, loop):
|
|||||||
assert resp.content_type == "application/json"
|
assert resp.content_type == "application/json"
|
||||||
|
|
||||||
|
|
||||||
async def test_get_article_with_page(aiohttp_client, loop):
|
async def test_get_article_with_page(aiohttp_client, event_loop):
|
||||||
app = web.Application()
|
app = web.Application()
|
||||||
app.router.add_view("/article", ArticleViewWithPaginationGroup)
|
app.router.add_view("/article", ArticleViewWithPaginationGroup)
|
||||||
|
|
||||||
@ -222,7 +222,7 @@ async def test_get_article_with_page(aiohttp_client, loop):
|
|||||||
assert resp.content_type == "application/json"
|
assert resp.content_type == "application/json"
|
||||||
|
|
||||||
|
|
||||||
async def test_get_article_with_page_and_page_size(aiohttp_client, loop):
|
async def test_get_article_with_page_and_page_size(aiohttp_client, event_loop):
|
||||||
app = web.Application()
|
app = web.Application()
|
||||||
app.router.add_view("/article", ArticleViewWithPaginationGroup)
|
app.router.add_view("/article", ArticleViewWithPaginationGroup)
|
||||||
|
|
||||||
@ -236,7 +236,7 @@ async def test_get_article_with_page_and_page_size(aiohttp_client, loop):
|
|||||||
assert resp.content_type == "application/json"
|
assert resp.content_type == "application/json"
|
||||||
|
|
||||||
|
|
||||||
async def test_get_article_with_page_and_wrong_page_size(aiohttp_client, loop):
|
async def test_get_article_with_page_and_wrong_page_size(aiohttp_client, event_loop):
|
||||||
app = web.Application()
|
app = web.Application()
|
||||||
app.router.add_view("/article", ArticleViewWithPaginationGroup)
|
app.router.add_view("/article", ArticleViewWithPaginationGroup)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user