use crate::crypto::digest::Salt;
use crate::crypto::key::Nonce;
#[test]
fn test_nonce_new_is_zero() {
crate::init().unwrap();
let n = Nonce::new();
assert!(n.as_bytes().iter().all(|b| *b == 0));
}
#[test]
fn test_nonce_debug_format_is_hex() {
crate::init().unwrap();
let n = Nonce::new();
let s = format!("{:?}", n);
assert!(s.starts_with("Nonce { nonce: "), "got {:?}", s);
assert!(s.ends_with(" }"), "got {:?}", s);
assert!(
s.contains(&"0".repeat(48)),
"expected 48 zero hex chars in {:?}",
s
);
}
#[test]
fn test_salt_serde_round_trip() {
crate::init().unwrap();
let salt = Salt::default();
let bytes = rmp_serde::to_vec(&salt).unwrap();
let back: Salt = rmp_serde::from_slice(&bytes).unwrap();
assert_eq!(salt, back);
}
#[test]
fn test_salt_deserialize_wrong_length_bytes() {
crate::init().unwrap();
let too_short: Vec<u8> = vec![0u8; 5];
let bytes = rmp_serde::to_vec(&too_short).unwrap();
assert!(rmp_serde::from_slice::<Salt>(&bytes).is_err());
let too_long: Vec<u8> = vec![0u8; 100];
let bytes = rmp_serde::to_vec(&too_long).unwrap();
assert!(rmp_serde::from_slice::<Salt>(&bytes).is_err());
}
#[test]
fn test_salt_deserialize_wrong_length_array() {
crate::init().unwrap();
let mut buf: Vec<u8> = Vec::new();
buf.push(0xdc);
buf.extend_from_slice(&31u16.to_be_bytes());
buf.extend(std::iter::repeat(0u8).take(31));
assert!(rmp_serde::from_slice::<Salt>(&buf).is_err());
let mut buf: Vec<u8> = Vec::new();
buf.push(0xdc);
buf.extend_from_slice(&33u16.to_be_bytes());
buf.extend(std::iter::repeat(0u8).take(33));
assert!(rmp_serde::from_slice::<Salt>(&buf).is_err());
}