Spaces:
Running
Running
from math import inf | |
from secrets import token_urlsafe | |
import pytest | |
from fastapi.testclient import TestClient | |
from httpx import Response | |
from pytest_benchmark.fixture import BenchmarkFixture | |
def client(): | |
from hibiapi.app import app, application | |
application.RATE_LIMIT_MAX = inf | |
with TestClient(app, base_url="http://testserver/api/") as client: | |
yield client | |
def test_qrcode_generate(client: TestClient, in_stress: bool = False): | |
response = client.get( | |
"qrcode/", | |
params={ | |
"text": token_urlsafe(32), | |
"encode": "raw", | |
}, | |
) | |
assert response.status_code == 200 | |
assert "image/png" in response.headers["content-type"] | |
if in_stress: | |
return True | |
def test_qrcode_all(client: TestClient): | |
from hibiapi.api.qrcode import QRCodeLevel, ReturnEncode | |
encodes = [i.value for i in ReturnEncode.__members__.values()] | |
levels = [i.value for i in QRCodeLevel.__members__.values()] | |
responses: list[Response] = [] | |
for encode in encodes: | |
for level in levels: | |
response = client.get( | |
"qrcode/", | |
params={"text": "Hello, World!", "encode": encode, "level": level}, | |
) | |
responses.append(response) | |
assert not any(map(lambda r: r.status_code != 200, responses)) | |
def test_qrcode_stress(client: TestClient, benchmark: BenchmarkFixture): | |
assert benchmark.pedantic( | |
test_qrcode_generate, | |
args=(client, True), | |
rounds=50, | |
iterations=3, | |
) | |
def test_qrcode_redirect(client: TestClient): | |
response = client.get("http://testserver/qrcode/", params={"text": "Hello, World!"}) | |
assert response.status_code == 200 | |
redirect1, redirect2 = response.history | |
assert redirect1.status_code == 301 | |
assert redirect2.status_code == 302 | |