mirror of
https://github.com/ReVanced/revanced-api.git
synced 2026-01-18 00:43:57 +00:00
feat: API rewrite (#2)
* 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>
This commit is contained in:
committed by
GitHub
parent
cb52684edb
commit
45ef33741c
110
tests/test_github.py
Normal file
110
tests/test_github.py
Normal file
@@ -0,0 +1,110 @@
|
||||
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"]]
|
||||
)
|
||||
Reference in New Issue
Block a user