mirror of
https://github.com/PR0M3TH3AN/SeedPass.git
synced 2025-09-08 15:28:44 +00:00
48 lines
1.5 KiB
Python
48 lines
1.5 KiB
Python
import importlib
|
|
from pathlib import Path
|
|
from types import SimpleNamespace
|
|
import importlib
|
|
import pytest
|
|
from httpx import ASGITransport, AsyncClient
|
|
|
|
import sys
|
|
|
|
sys.path.append(str(Path(__file__).resolve().parents[1]))
|
|
|
|
|
|
@pytest.mark.anyio
|
|
async def test_rate_limit_exceeded(monkeypatch):
|
|
monkeypatch.setenv("SEEDPASS_RATE_LIMIT", "2")
|
|
monkeypatch.setenv("SEEDPASS_RATE_WINDOW", "60")
|
|
import seedpass.api as api
|
|
|
|
importlib.reload(api)
|
|
|
|
dummy = SimpleNamespace(
|
|
entry_manager=SimpleNamespace(
|
|
search_entries=lambda q: [
|
|
(1, "Site", "user", "url", False, SimpleNamespace(value="password"))
|
|
]
|
|
),
|
|
config_manager=SimpleNamespace(load_config=lambda require_pin=False: {}),
|
|
fingerprint_manager=SimpleNamespace(list_fingerprints=lambda: []),
|
|
nostr_client=SimpleNamespace(
|
|
key_manager=SimpleNamespace(get_npub=lambda: "np")
|
|
),
|
|
verify_password=lambda pw: True,
|
|
)
|
|
monkeypatch.setattr(api, "PasswordManager", lambda: dummy)
|
|
token = api.start_server()
|
|
transport = ASGITransport(app=api.app)
|
|
async with AsyncClient(transport=transport, base_url="http://test") as client:
|
|
headers = {"Authorization": f"Bearer {token}"}
|
|
|
|
for _ in range(2):
|
|
res = await client.get(
|
|
"/api/v1/entry", params={"query": "s"}, headers=headers
|
|
)
|
|
assert res.status_code == 200
|
|
|
|
res = await client.get("/api/v1/entry", params={"query": "s"}, headers=headers)
|
|
assert res.status_code == 429
|