This commit is contained in:
Mateusz Gruszczyński committed 2026-10-10 20:56:36 +02:00
1 parent f213d853e2
commit 76b8bb7ee2
78 files changed
+7750 -5204

No files matched your search

+25
View File
@@ -16,6 +16,10 @@
assert_eq!(response.status(), StatusCode::OK);
let initial = json_body(response).await;
assert_eq!(initial["live_log_columns"].as_array().unwrap().len(), LIVE_LOG_COLUMNS.len());
assert_eq!(initial["refresh"], json!({
"live_enabled":true, "overview_seconds":2, "traffic_seconds":5,
"cache_seconds":5, "system_info_seconds":60
}));
assert_eq!(initial["theme"], "dark");
assert_eq!(initial["language"], "auto");
assert_eq!(initial["ui_scale"], 100);
@@ -50,6 +54,7 @@
assert_eq!(response.status(), StatusCode::OK);
let legacy = json_body(response).await;
assert_eq!(legacy["live_log_columns"], json!(["time", "status"]));
assert_eq!(legacy["refresh"], initial["refresh"]);
assert_eq!(legacy["theme"], "dark");
assert_eq!(legacy["language"], "auto");
assert_eq!(legacy["ui_scale"], 100);
@@ -65,6 +70,7 @@
assert_eq!(legacy["backend_table_descending"], false);
let selected = json!({
"refresh":{"live_enabled":false,"overview_seconds":10,"traffic_seconds":0,"cache_seconds":3,"system_info_seconds":300},
"live_log_columns":["time","request","status","upstream_error"],
"theme":"light",
"language":"pl_pl",
@@ -103,6 +109,20 @@
serde_json::from_str(&store.admin_preferences("owner").await.unwrap().unwrap())
.unwrap();
assert_eq!(saved, selected);
// Preferences must also survive a subsequent authenticated read.
let persisted = router.clone().oneshot(request("/api/preferences")
.header("cookie", &cookie).body(Body::empty()).unwrap()).await.unwrap();
assert_eq!(json_body(persisted).await, selected);
// Wrong allowlist value is rejected even if the rest is valid.
let mut invalid = selected.clone();
invalid["refresh"]["traffic_seconds"] = json!(4);
let rejected = router.clone().oneshot(request("/api/preferences")
.method("PUT").header("cookie", &cookie)
.header("origin", "http://127.0.0.1:9090")
.header("x-rustproxy-request", "1").header("x-csrf-token", &csrf)
.header("content-type", "application/json")
.body(Body::from(invalid.to_string())).unwrap()).await.unwrap();
assert_eq!(rejected.status(), StatusCode::UNPROCESSABLE_ENTITY);
let response = router
.clone()
@@ -327,6 +347,7 @@
let (router, store, _dir, _, _) = fixture().await;
for path in [
"/api/status",
"/api/system-info",
"/api/config",
"/api/config/history",
"/api/backends",
@@ -446,3 +467,7 @@
}
store.close().await;
}