// 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); }