Remedial measures to enhance the detection of blank key situations

This commit is contained in:
lzt404 committed 2026-10-06 13:41:35 +08:00
1 parent b48128a81a
commit 8f23fac80b
6 files changed
+92 -46

No files matched your search

+33 -1
View File
@@ -150,7 +150,7 @@ fn management_secret_rotation_preserves_disabled_and_custom_values() {
..GuiConfigFile::default()
};
assert!(ensure_strong_management_secret(&mut hashed).unwrap());
assert!(hashed.management_secret_key.starts_with("wui-Aa9_"));
assert_eq!(hashed.management_secret_key, "123456");
let mut custom = GuiConfigFile {
management_secret_key: "user-selected-secret".to_string(),
@@ -160,6 +160,38 @@ fn management_secret_rotation_preserves_disabled_and_custom_values() {
assert_eq!(custom.management_secret_key, "user-selected-secret");
}
#[test]
fn management_secret_recovery_synchronizes_kernel_and_request_credentials() {
let hash = "$2a$10$abcdefghijklmnopqrstuuuuuuuuuuuuuuuuuuuuuuuuuuuuu";
for (imported, saved, expected) in [
("", None, "123456"),
(hash, None, "123456"),
(hash, Some(hash), "123456"),
("bad\nkey", None, "123456"),
(hash, Some("known-secret"), "known-secret"),
("", Some("known-secret"), "known-secret"),
("", Some(""), ""),
("new-secret", Some("old-secret"), "new-secret"),
] {
let config = GuiConfigFile {
management_secret_key: recover_management_secret(imported, saved),
..GuiConfigFile::default()
};
assert_eq!(config.management_secret_key, expected);
for (template, section) in [
("remote-management: {secret-key: stale}\n", "remote-management"),
("config-version: 8\nmanagement: {secret-key: stale}\n", "management"),
] {
let updated = apply_gui_managed_settings(template, &config).unwrap();
let document: serde_norway::Value = serde_norway::from_str(&updated).unwrap();
assert_eq!(document[section]["secret-key"], expected);
}
if !expected.is_empty() {
assert_eq!(management_api::management_authorization(&config).unwrap(), format!("Bearer {expected}"));
}
}
}
#[test]
fn management_secret_key_is_preserved_and_written_to_core() {
let mut config = GuiConfigFile {