Byparr/tests/main_test.py
2024-10-27 18:46:19 +00:00

56 lines
1.2 KiB
Python

import os
from http import HTTPStatus
from time import sleep
import httpx
import pytest
from starlette.testclient import TestClient
from main import app
from src.models.requests import LinkRequest
from src.utils import logger
client = TestClient(app)
test_websites = [
"https://btmet.com/",
"https://ext.to/",
]
# Not testable on github actions
github_restricted = [
"https://www.ygg.re/",
"https://extratorrent.st/",
"https://idope.se/",
"https://speed.cd/login",
]
if os.getenv("GITHUB_ACTIONS") == "true":
test_websites.extend(github_restricted)
@pytest.mark.parametrize("website", test_websites)
def test_bypass(website: str):
sleep(3)
test_request = httpx.get(
website,
)
if (
test_request.status_code != HTTPStatus.OK
and "Just a moment..." not in test_request.text
):
logger.info(f"Skipping {website} due to {test_request.status_code}")
pytest.skip()
response = client.post(
"/v1",
json=LinkRequest(url=website, maxTimeout=30, cmd="request.get").model_dump(),
)
assert response.status_code == HTTPStatus.OK
def test_health_check():
response = client.get("/health")
assert response.status_code == HTTPStatus.OK