mirror of
https://github.com/revanced/revanced-api.git
synced 2025-04-30 06:34:36 +02:00

* feat: sanic framework settings * feat: initial implementation * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * refactor: backend changes * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * fix: docstrings out of place * feat: more gh endpoints * ci: fix pre-commit issues * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * feat: app info * ci: merge CI and fix triggers * chore: bump deps * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * fix: typing issues * chore: deps * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * refactor: clean up returns * ci: spread jobs correctly * ci: move to quodana * ci: fix issues with python modules * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * chore: pycharm config * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * refactor: improve code quality * feat: better README * ci: add quodana baseline config * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * ci: fix quodana config * ci: more qodana stuff * ci: revert qodana changes * ci: python interpreter detection is broken * feat: tests * ci: testing * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * ci: fix workflow names * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * chore: add deps * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * test: more tests * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * feat: /tools compat * feat: donations endpoint * feat: teams endpoint * fix: lock pydantic version * chore: deps * ci: docker builds * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * ci: remove coverage action and others * ci: pre-commit fixes --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
111 lines
3.0 KiB
Python
111 lines
3.0 KiB
Python
import pytest
|
|
from sanic import Sanic
|
|
from sanic_testing.testing import TestingResponse
|
|
|
|
from api.models.github import (
|
|
AssetFields,
|
|
MetadataFields,
|
|
PatchesResponseFields,
|
|
ReleaseListResponseModel,
|
|
ReleaseResponseModel,
|
|
SingleReleaseResponseModel,
|
|
ContributorsFields,
|
|
ContributorsModel,
|
|
PatchesModel,
|
|
TeamMemberFields,
|
|
TeamMembersModel,
|
|
)
|
|
|
|
from config import github_testing_repository, github_testing_tag, api_version
|
|
|
|
|
|
# utils
|
|
|
|
|
|
async def __test_single_release(response: TestingResponse) -> bool:
|
|
try:
|
|
assert response.status == 200
|
|
assert SingleReleaseResponseModel(
|
|
release=ReleaseResponseModel(
|
|
metadata=MetadataFields(**response.json["release"]["metadata"]),
|
|
assets=[
|
|
AssetFields(**asset) for asset in response.json["release"]["assets"]
|
|
],
|
|
)
|
|
)
|
|
return True
|
|
except AssertionError:
|
|
return False
|
|
|
|
|
|
# github
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_releases(app: Sanic):
|
|
_, response = await app.asgi_client.get(
|
|
f"/{api_version}/{github_testing_repository}/releases"
|
|
)
|
|
assert response.status == 200
|
|
assert ReleaseListResponseModel(
|
|
releases=[
|
|
ReleaseResponseModel(
|
|
metadata=MetadataFields(**release["metadata"]),
|
|
assets=[AssetFields(**asset) for asset in release["assets"]],
|
|
)
|
|
for release in response.json["releases"]
|
|
]
|
|
)
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_latest_release(app: Sanic):
|
|
_, response = await app.asgi_client.get(
|
|
f"/{api_version}/{github_testing_repository}/releases/latest"
|
|
)
|
|
_, response_dev = await app.asgi_client.get(
|
|
f"/{api_version}/{github_testing_repository}/releases/latest?dev=true"
|
|
)
|
|
assert await __test_single_release(response)
|
|
assert await __test_single_release(response_dev)
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_release_by_tag(app: Sanic):
|
|
_, response = await app.asgi_client.get(
|
|
f"/{api_version}/{github_testing_repository}/releases/tag/{github_testing_tag}"
|
|
)
|
|
assert await __test_single_release(response)
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_contributors(app: Sanic):
|
|
_, response = await app.asgi_client.get(
|
|
f"/{api_version}/{github_testing_repository}/contributors"
|
|
)
|
|
assert ContributorsModel(
|
|
contributors=[
|
|
ContributorsFields(**contributor)
|
|
for contributor in response.json["contributors"]
|
|
]
|
|
)
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_patches(app: Sanic):
|
|
_, response = await app.asgi_client.get(
|
|
f"/{api_version}/patches/{github_testing_tag}"
|
|
)
|
|
|
|
assert PatchesModel(
|
|
patches=[PatchesResponseFields(**patch) for patch in response.json["patches"]]
|
|
)
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_team_members(app: Sanic):
|
|
_, response = await app.asgi_client.get(f"/{api_version}/team/members")
|
|
assert TeamMembersModel(
|
|
members=[TeamMemberFields(**member) for member in response.json["members"]]
|
|
)
|