from http import HTTPStatus
from time import sleep

import pytest
from starlette.testclient import TestClient

from main import app
from src.models.requests import LinkRequest

client = TestClient(app)

test_websites = [
    "https://ext.to/",
    "https://btmet.com/",
    "https://extratorrent.st/",  # github is blocking these
    "https://idope.se/",  # github is blocking these
    "https://www.ygg.re/",
]


@pytest.mark.parametrize("website", test_websites)
def test_bypass(website: str):
    sleep(3)
    response = client.post(
        "/v1",
        json=LinkRequest(url=website, maxTimeout=30, cmd="request.get").model_dump(),
    )
    if response.status_code == HTTPStatus.TOO_MANY_REQUESTS:
        # if rate limited
        assert True
    assert response.status_code == HTTPStatus.OK