Archived
Simplify admin operator UI
This commit is contained in:
1 parent
0fc220b90b
commit
30aef1fee8
7 files changed
+393
-105
No files matched your search
+23
-2
@@ -15,7 +15,7 @@ def test_admin_page_shows_operator_views_without_create_form(tmp_path: Path) ->
|
||||
|
||||
assert response.status_code == 200
|
||||
assert response.headers["cache-control"] == "no-store"
|
||||
assert '<link href="/admin.css?v=3" rel="stylesheet">' in response.text
|
||||
assert '<link href="/admin.css?v=4" rel="stylesheet">' in response.text
|
||||
assert '<script src="/admin-tables.js?v=2" defer></script>' in response.text
|
||||
assert "Operator console" in response.text
|
||||
assert "Generate credentials" not in response.text
|
||||
@@ -28,7 +28,7 @@ def test_admin_page_shows_operator_views_without_create_form(tmp_path: Path) ->
|
||||
assert "Cleanup" in response.text
|
||||
assert "Run now" in response.text
|
||||
assert "Next run" in response.text
|
||||
assert "Metrics" in response.text
|
||||
assert "Service metrics" in response.text
|
||||
assert "Blocked requests" in response.text
|
||||
assert "Hostnames" in response.text
|
||||
assert "Update events" in response.text
|
||||
@@ -181,6 +181,27 @@ def test_admin_posts_require_csrf(tmp_path: Path) -> None:
|
||||
assert response.status_code == 403
|
||||
|
||||
|
||||
def test_admin_cleanup_uses_post_redirect_get(tmp_path: Path) -> None:
|
||||
settings = DdnsSettings(database_path=tmp_path / "ddns.sqlite3", admin_password="admin")
|
||||
app = make_app(settings)
|
||||
client = TestClient(app)
|
||||
|
||||
response = client.post(
|
||||
"/admin/cleanup",
|
||||
auth=("admin", "admin"),
|
||||
data={"csrf": admin_csrf_token(settings)},
|
||||
follow_redirects=False,
|
||||
)
|
||||
|
||||
assert response.status_code == 303
|
||||
assert response.headers["location"].startswith("/admin?cleanup_done=1")
|
||||
|
||||
redirected = client.get(response.headers["location"], auth=("admin", "admin"))
|
||||
assert redirected.status_code == 200
|
||||
assert "Cleanup finished." in redirected.text
|
||||
assert "Copy these values now" not in redirected.text
|
||||
|
||||
|
||||
def test_admin_password_query_string_is_rejected(tmp_path: Path) -> None:
|
||||
app = make_app(DdnsSettings(database_path=tmp_path / "ddns.sqlite3", admin_password="admin"))
|
||||
client = TestClient(app)
|
||||
|
||||
+1
-1
@@ -202,7 +202,7 @@ def test_dashboard_link_can_delete_hostname(tmp_path: Path) -> None:
|
||||
|
||||
management = client.get(f"/m/{account['management_slug']}")
|
||||
assert management.status_code == 200
|
||||
assert '<link href="/admin.css?v=3" rel="stylesheet">' in management.text
|
||||
assert '<link href="/admin.css?v=4" rel="stylesheet">' in management.text
|
||||
assert "home.ddns.example.net" in management.text
|
||||
assert "CNAME target:" in management.text
|
||||
assert "Router fields" in management.text
|
||||
|
||||
Reference in new issue
Block a user