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 | |