tests.rs
1 use std::io::Cursor; 2 3 use anyhow::Result; 4 use fedimint_core::encoding::{Decodable, Encodable}; 5 use fedimint_derive_secret::DerivableSecret; 6 7 use crate::backup::{ClientBackup, Metadata}; 8 use crate::Client; 9 10 #[test] 11 fn sanity_ecash_backup_align() { 12 assert_eq!( 13 ClientBackup::get_alignment_size(1), 14 ClientBackup::PADDING_ALIGNMENT 15 ); 16 assert_eq!( 17 ClientBackup::get_alignment_size(ClientBackup::PADDING_ALIGNMENT), 18 ClientBackup::PADDING_ALIGNMENT 19 ); 20 assert_eq!( 21 ClientBackup::get_alignment_size(ClientBackup::PADDING_ALIGNMENT + 1), 22 ClientBackup::PADDING_ALIGNMENT * 2 23 ); 24 } 25 26 #[test] 27 fn sanity_ecash_backup_decode_encode() -> Result<()> { 28 let orig = ClientBackup { 29 session_count: 0, 30 metadata: Metadata::from_raw(vec![1, 2, 3]), 31 modules: Default::default(), 32 }; 33 34 let encoded = orig.consensus_encode_to_vec(); 35 assert_eq!(encoded.len(), ClientBackup::PADDING_ALIGNMENT); 36 assert_eq!( 37 orig, 38 ClientBackup::consensus_decode(&mut Cursor::new(encoded), &Default::default())? 39 ); 40 41 Ok(()) 42 } 43 44 #[test] 45 fn sanity_ecash_backup_encrypt_decrypt() -> Result<()> { 46 let orig = ClientBackup { 47 modules: Default::default(), 48 session_count: 1, 49 metadata: Metadata::from_raw(vec![1, 2, 3]), 50 }; 51 52 let secret = DerivableSecret::new_root(&[1; 32], &[1, 32]); 53 let key = Client::get_derived_backup_encryption_key_static(&secret); 54 55 let encrypted = orig.encrypt_to(&key)?; 56 57 let decrypted = encrypted.decrypt_with(&key, &Default::default())?; 58 59 assert_eq!(orig, decrypted); 60 61 Ok(()) 62 }