Rewrite CSP host seam and middleware package marker.
Export names stay for the cloud overlay. JWT still lives only in inherited auth.py.
This commit is contained in:
@@ -0,0 +1,5 @@
|
|||||||
|
"""HTTP middleware package for the FastAPI app.
|
||||||
|
|
||||||
|
JWT verification lives in ``auth.py`` and is imported by name from ``main``.
|
||||||
|
This module is a package marker only — do not re-export auth from here.
|
||||||
|
"""
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
/**
|
||||||
|
* CSP allow-lists consumed by next.config.ts.
|
||||||
|
*
|
||||||
|
* Self-host lists only the local API. The hosted-cloud overlay adds Clerk,
|
||||||
|
* Stripe, and analytics hosts here without changing export names.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export const CSP_SCRIPT_HOSTS: string[] = [];
|
||||||
|
|
||||||
|
export const CSP_CONNECT_HOSTS: string[] = [
|
||||||
|
"http://127.0.0.1:18741",
|
||||||
|
"http://localhost:18741",
|
||||||
|
"http://127.0.0.1:8080",
|
||||||
|
"http://localhost:8080",
|
||||||
|
];
|
||||||
|
|
||||||
|
export const CSP_FRAME_HOSTS: string[] = [];
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
"""CSP host seam and middleware package live under periscope/src."""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
ROOT = Path(__file__).resolve().parents[1]
|
||||||
|
FE = ROOT / "periscope" / "src" / "frontend" / "src" / "lib" / "csp-hosts.ts"
|
||||||
|
MW = ROOT / "periscope" / "src" / "backend" / "middleware" / "__init__.py"
|
||||||
|
|
||||||
|
|
||||||
|
def test_csp_hosts_are_src():
|
||||||
|
text = FE.read_text(encoding="utf-8")
|
||||||
|
assert "Native Periscope overlay" not in text[:400]
|
||||||
|
assert "export const CSP_SCRIPT_HOSTS" in text
|
||||||
|
assert "export const CSP_CONNECT_HOSTS" in text
|
||||||
|
assert "export const CSP_FRAME_HOSTS" in text
|
||||||
|
assert "http://127.0.0.1:8080" in text
|
||||||
|
assert "http://localhost:18741" in text
|
||||||
|
|
||||||
|
|
||||||
|
def test_middleware_package_is_src_and_does_not_export_auth():
|
||||||
|
text = MW.read_text(encoding="utf-8")
|
||||||
|
assert text.strip()
|
||||||
|
assert "from backend.middleware.auth" not in text
|
||||||
|
assert "verify_request_user" not in text
|
||||||
|
auth = ROOT / "periscope" / "src" / "backend" / "middleware" / "auth.py"
|
||||||
|
assert not auth.exists()
|
||||||
Reference in New Issue
Block a user