generated from pure_sagacity/rust-starter
added tests
This commit is contained in:
@@ -63,4 +63,39 @@ mod tests {
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn helper_generates_expected_sizes() {
|
||||
let key = helper::gen_key();
|
||||
let nonce = helper::gen_nonce();
|
||||
|
||||
assert_eq!(key.as_slice().len(), 32);
|
||||
assert_eq!(nonce.as_slice().len(), 12);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn key_from_validates_length() {
|
||||
let key = helper::key_from(vec![7u8; 32]).expect("expected valid key");
|
||||
assert_eq!(key.as_slice(), vec![7u8; 32]);
|
||||
|
||||
let err = helper::key_from(vec![1u8; 31]).unwrap_err();
|
||||
assert_eq!(err.to_string(), "key must be exactly 32 bytes");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn decrypt_fails_with_wrong_key_or_tampered_ciphertext() {
|
||||
let key = helper::gen_key();
|
||||
let other_key = helper::gen_key();
|
||||
let plaintext = b"secret".to_vec();
|
||||
|
||||
let (nonce, mut ciphertext) = encrypt(&key, plaintext.clone()).expect("encrypt");
|
||||
|
||||
assert!(decrypt(&other_key, ciphertext.clone(), &nonce).is_err());
|
||||
|
||||
if let Some(byte) = ciphertext.get_mut(0) {
|
||||
*byte ^= 0b1010_1010;
|
||||
}
|
||||
|
||||
assert!(decrypt(&key, ciphertext, &nonce).is_err());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user