v0.2.5-pre.002
This commit is contained in:
9
crates/ksp-wallet-lib/unit_tests/capability.rs
Normal file
9
crates/ksp-wallet-lib/unit_tests/capability.rs
Normal file
@@ -0,0 +1,9 @@
|
||||
// file: crates/ksp-wallet-lib/unit_tests/capability.rs
|
||||
// version: 1
|
||||
|
||||
#[test]
|
||||
fn capability_variants_are_distinct_and_stable() {
|
||||
assert_ne!(super::WalletCapability::View, super::WalletCapability::Owner);
|
||||
assert_eq!(format!("{:?}", super::WalletCapability::View), "View");
|
||||
assert_eq!(format!("{:?}", super::WalletCapability::Owner), "Owner");
|
||||
}
|
||||
56
crates/ksp-wallet-lib/unit_tests/metadata.rs
Normal file
56
crates/ksp-wallet-lib/unit_tests/metadata.rs
Normal file
@@ -0,0 +1,56 @@
|
||||
// file: crates/ksp-wallet-lib/unit_tests/metadata.rs
|
||||
// version: 1
|
||||
|
||||
fn test_pubkey() -> ksp_core_lib::Pubkey {
|
||||
return ksp_core_lib::PRGIDPK_SOLANA_SYSTEM;
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn authorized_info_exposes_metadata_after_authorization() {
|
||||
let note = super::WalletNote { id: std::string::String::from("purpose"), text: std::string::String::from("devnet test wallet") };
|
||||
let info = super::WalletInfo {
|
||||
format_version: 1,
|
||||
capability: crate::WalletCapability::View,
|
||||
pubkey: test_pubkey(),
|
||||
alias: std::option::Option::Some(std::string::String::from("devnet-owner")),
|
||||
notes: std::vec![note],
|
||||
};
|
||||
assert_eq!(info.format_version(), 1);
|
||||
assert_eq!(info.capability(), crate::WalletCapability::View);
|
||||
assert_eq!(info.pubkey(), &test_pubkey());
|
||||
assert_eq!(info.alias(), std::option::Option::Some("devnet-owner"));
|
||||
assert_eq!(info.notes()[0].id(), "purpose");
|
||||
assert_eq!(info.notes()[0].text(), "devnet test wallet");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn authorized_info_debug_redacts_alias_and_note_text() {
|
||||
let note = super::WalletNote {
|
||||
id: std::string::String::from("NOTE-ID-CANARY"),
|
||||
text: std::string::String::from("NOTE-SECRET-CANARY"),
|
||||
};
|
||||
let info = super::WalletInfo {
|
||||
format_version: 1,
|
||||
capability: crate::WalletCapability::Owner,
|
||||
pubkey: test_pubkey(),
|
||||
alias: std::option::Option::Some(std::string::String::from("ALIAS-SECRET-CANARY")),
|
||||
notes: std::vec![note],
|
||||
};
|
||||
let rendered = format!("{info:?}");
|
||||
assert!(rendered.contains("<redacted>"));
|
||||
assert!(rendered.contains("note_count"));
|
||||
assert!(!rendered.contains("ALIAS-SECRET-CANARY"));
|
||||
assert!(!rendered.contains("NOTE-ID-CANARY"));
|
||||
assert!(!rendered.contains("NOTE-SECRET-CANARY"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn locked_info_does_not_carry_authorized_identity_or_metadata() {
|
||||
let info = super::LockedWalletInfo { format_version: 1, view_enabled: true };
|
||||
assert_eq!(info.format_version(), 1);
|
||||
assert!(info.view_enabled());
|
||||
let rendered = format!("{info:?}");
|
||||
assert!(!rendered.contains("Pubkey"));
|
||||
assert!(!rendered.contains("alias"));
|
||||
assert!(!rendered.contains("notes"));
|
||||
}
|
||||
24
crates/ksp-wallet-lib/unit_tests/password.rs
Normal file
24
crates/ksp-wallet-lib/unit_tests/password.rs
Normal file
@@ -0,0 +1,24 @@
|
||||
// file: crates/ksp-wallet-lib/unit_tests/password.rs
|
||||
// version: 1
|
||||
|
||||
#[test]
|
||||
fn view_password_debug_is_redacted() {
|
||||
let password = super::ViewPassword::new(std::string::String::from("VIEW-SECRET-CANARY"));
|
||||
let rendered = format!("{password:?}");
|
||||
assert_eq!(rendered, "ViewPassword(<redacted>)");
|
||||
assert!(!rendered.contains("VIEW-SECRET-CANARY"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn owner_password_debug_is_redacted() {
|
||||
let password = super::OwnerPassword::new(std::string::String::from("OWNER-SECRET-CANARY"));
|
||||
let rendered = format!("{password:?}");
|
||||
assert_eq!(rendered, "OwnerPassword(<redacted>)");
|
||||
assert!(!rendered.contains("OWNER-SECRET-CANARY"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn password_wrappers_require_drop_for_zeroization() {
|
||||
assert!(std::mem::needs_drop::<super::ViewPassword>());
|
||||
assert!(std::mem::needs_drop::<super::OwnerPassword>());
|
||||
}
|
||||
Reference in New Issue
Block a user