initial commit
This commit is contained in:
42
tests/test_api_webhook.py
Normal file
42
tests/test_api_webhook.py
Normal file
@@ -0,0 +1,42 @@
|
||||
import pytest
|
||||
from httpx import ASGITransport, AsyncClient
|
||||
|
||||
from glitchup_bot.api.app import app
|
||||
from glitchup_bot.config import clear_settings_cache
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_webhook_rejects_invalid_secret(monkeypatch):
|
||||
monkeypatch.setenv("WEBHOOK_SECRET", "expected-secret")
|
||||
clear_settings_cache()
|
||||
|
||||
transport = ASGITransport(app=app)
|
||||
async with AsyncClient(transport=transport, base_url="http://testserver") as client:
|
||||
response = await client.post(
|
||||
"/webhooks/glitchtip", json={"text": "GlitchTip Alert", "attachments": []}
|
||||
)
|
||||
|
||||
assert response.status_code == 403
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_webhook_accepts_valid_secret(monkeypatch):
|
||||
received = []
|
||||
|
||||
async def fake_process(payload: dict) -> None:
|
||||
received.append(payload)
|
||||
|
||||
monkeypatch.setenv("WEBHOOK_SECRET", "expected-secret")
|
||||
clear_settings_cache()
|
||||
monkeypatch.setattr("glitchup_bot.api.webhook.process_webhook_payload", fake_process)
|
||||
|
||||
transport = ASGITransport(app=app)
|
||||
async with AsyncClient(transport=transport, base_url="http://testserver") as client:
|
||||
response = await client.post(
|
||||
"/webhooks/glitchtip",
|
||||
headers={"X-Webhook-Secret": "expected-secret"},
|
||||
json={"text": "GlitchTip Alert", "attachments": []},
|
||||
)
|
||||
|
||||
assert response.status_code == 200
|
||||
assert received == [{"text": "GlitchTip Alert", "attachments": []}]
|
||||
Reference in New Issue
Block a user