40 lines
1.5 KiB
Rust
40 lines
1.5 KiB
Rust
// file: crates/ksp-app-wallet-desk/unit_tests/wallet_session.rs
|
|
// version: 2
|
|
|
|
//! Unit tests for Wallet Desk session DTOs and password request boundaries.
|
|
|
|
#[test]
|
|
fn no_selection_projection_contains_no_wallet_identity() {
|
|
let session = crate::WalletSession::no_selection();
|
|
let dto = session.safe_projection();
|
|
assert_eq!(dto.state, crate::WalletSessionStateDto::NoSelection);
|
|
assert!(dto.wallet_id.is_none());
|
|
assert!(dto.filename.is_none());
|
|
}
|
|
|
|
#[test]
|
|
fn create_request_does_not_require_debug_or_clone_password_contracts() {
|
|
fn accepts_request(_: crate::WalletCreateRequestDto) {}
|
|
let request = crate::WalletCreateRequestDto {
|
|
alias: std::option::Option::None,
|
|
filename: "test.kspwallet".to_owned(),
|
|
initial_note: std::option::Option::None,
|
|
owner_password: "operator-test-owner".to_owned(),
|
|
view_password: std::option::Option::Some("operator-test-view".to_owned()),
|
|
};
|
|
accepts_request(request);
|
|
}
|
|
|
|
#[test]
|
|
fn unlock_request_does_not_require_debug_or_clone_password_contracts() {
|
|
fn accepts_request(_: crate::WalletUnlockRequestDto) {}
|
|
let request = crate::WalletUnlockRequestDto { password: "operator-test-unlock".to_owned() };
|
|
accepts_request(request);
|
|
}
|
|
|
|
#[test]
|
|
fn session_state_contract_includes_view_owner_and_privileged_operation() {
|
|
assert_ne!(crate::WalletSessionStateDto::ViewOpen, crate::WalletSessionStateDto::OwnerOpen);
|
|
assert_ne!(crate::WalletSessionStateDto::PrivilegedOperation, crate::WalletSessionStateDto::Locked);
|
|
}
|