|
import uuid
|
|
|
|
import requests
|
|
|
|
from tests.conftest import BASE_URL
|
|
|
|
|
|
def _session():
|
|
s = requests.Session()
|
|
name = f"push_{uuid.uuid4().hex[:10]}"
|
|
s.post(f"{BASE_URL}/auth/signup", data={
|
|
"username": name,
|
|
"email": f"{name}@test.dev",
|
|
"password": "secret123",
|
|
"confirm_password": "secret123",
|
|
}, allow_redirects=True)
|
|
return s
|
|
|
|
|
|
def test_public_key_endpoint(app_server):
|
|
r = requests.get(f"{BASE_URL}/push.json")
|
|
assert r.status_code == 200
|
|
assert r.json().get("publicKey")
|
|
|
|
|
|
def test_register_requires_auth(app_server):
|
|
r = requests.post(f"{BASE_URL}/push.json", json={
|
|
"endpoint": "https://push.example.com/anon",
|
|
"keys": {"p256dh": "key", "auth": "auth"},
|
|
}, allow_redirects=False)
|
|
assert r.status_code == 401
|
|
|
|
|
|
def test_register_success(app_server):
|
|
s = _session()
|
|
r = s.post(f"{BASE_URL}/push.json", json={
|
|
"endpoint": "https://push.example.com/sub-1",
|
|
"keys": {"p256dh": "p256dh_fake", "auth": "auth_fake"},
|
|
})
|
|
assert r.status_code == 200, r.text
|
|
assert r.json().get("registered") is True
|
|
|
|
|
|
def test_register_missing_keys_rejected(app_server):
|
|
s = _session()
|
|
r = s.post(f"{BASE_URL}/push.json", json={"endpoint": "https://push.example.com/x"})
|
|
assert r.status_code == 400
|
|
|
|
|
|
def test_register_invalid_json_rejected(app_server):
|
|
s = _session()
|
|
r = s.post(f"{BASE_URL}/push.json", data="not-json", headers={"Content-Type": "application/json"})
|
|
assert r.status_code == 400
|
|
|
|
|
|
def test_service_worker_served(app_server):
|
|
r = requests.get(f"{BASE_URL}/service-worker.js")
|
|
assert r.status_code == 200
|
|
assert r.headers.get("Service-Worker-Allowed") == "/"
|
|
|
|
|
|
def test_manifest_served(app_server):
|
|
r = requests.get(f"{BASE_URL}/manifest.json")
|
|
assert r.status_code == 200
|