#[cfg(feature = "memory-lock")]
mod memory_lock_tests {
use hasp_core::lock_secret_pages;
use hasp_core::secret_mem::wrap_secret;
use hasp_core::ExposeSecret;
#[test]
fn lock_pages_returns_at_least_one_outcome_on_non_empty_input() {
let bytes = b"top-secret-value-do-not-log";
let outcomes = lock_secret_pages(bytes);
assert!(
!outcomes.is_empty(),
"lock_secret_pages must return at least one outcome on supported platforms"
);
for o in &outcomes {
eprintln!(
"memory-lock: {} applied={} note={:?}",
o.name, o.applied, o.note
);
}
}
#[test]
fn lock_pages_returns_empty_for_zero_length_slice() {
let outcomes = lock_secret_pages(&[]);
assert!(
outcomes.is_empty(),
"empty input should produce no lock attempts"
);
}
#[test]
fn wrap_secret_constructs_accessible_secret() {
let s = wrap_secret("my-value".into());
assert_eq!(s.expose_secret(), "my-value");
}
#[test]
fn wrap_secret_on_large_string_does_not_panic() {
let large = "x".repeat(256);
let s = wrap_secret(large.clone());
assert_eq!(s.expose_secret(), &large);
}
}