mirror of
https://github.com/rosenpass/rosenpass.git
synced 2026-02-27 22:13:12 -08:00
test(coverage): add unit tests to improve coverage in public.rs and secret.rs
This commit is contained in:
@@ -386,6 +386,7 @@ mod tests {
|
|||||||
#[allow(clippy::module_inception)]
|
#[allow(clippy::module_inception)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use crate::{Public, PublicBox};
|
use crate::{Public, PublicBox};
|
||||||
|
use rand::Fill;
|
||||||
use rosenpass_util::{
|
use rosenpass_util::{
|
||||||
b64::b64_encode,
|
b64::b64_encode,
|
||||||
file::{
|
file::{
|
||||||
@@ -515,5 +516,112 @@ mod tests {
|
|||||||
fn test_public_box_load_store_base64() {
|
fn test_public_box_load_store_base64() {
|
||||||
run_base64_load_store_test::<PublicBox<N>>();
|
run_base64_load_store_test::<PublicBox<N>>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Test the debug print function for [Public]
|
||||||
|
#[test]
|
||||||
|
fn test_debug_public() {
|
||||||
|
let p: Public<32> = Public::zero();
|
||||||
|
let _ = format!("{:?}", p);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that [Public] is correctly borrowed to a u8 array.
|
||||||
|
#[test]
|
||||||
|
fn test_borrow_public_sized() {
|
||||||
|
let p: Public<32> = Public::zero();
|
||||||
|
let borrowed: &[u8; 32] = &p;
|
||||||
|
assert_eq!(borrowed, &[0; 32]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that [Public] is correctly borrowed to a mutable u8 array.
|
||||||
|
#[test]
|
||||||
|
fn test_borrow_public_sized_mut() {
|
||||||
|
let mut p: Public<32> = Public::zero();
|
||||||
|
let borrowed: &mut [u8; 32] = &mut p;
|
||||||
|
assert_eq!(borrowed, &[0; 32]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that [Public] is correctly borrowed to a u8 slice.
|
||||||
|
#[test]
|
||||||
|
fn test_borrow_public_unsized() {
|
||||||
|
use std::borrow::Borrow;
|
||||||
|
let p: Public<32> = Public::zero();
|
||||||
|
let borrowed: &[u8] = p.borrow();
|
||||||
|
assert_eq!(borrowed, &[0; 32]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that [Public] is correctly borrowed to a mutable u8 slice.
|
||||||
|
#[test]
|
||||||
|
fn test_borrow_public_unsized_mut() {
|
||||||
|
use std::borrow::BorrowMut;
|
||||||
|
let mut p: Public<32> = Public::zero();
|
||||||
|
let borrowed: &mut [u8] = p.borrow_mut();
|
||||||
|
assert_eq!(borrowed, &[0; 32]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that [PublicBox] is correctly created from a slice.
|
||||||
|
#[test]
|
||||||
|
fn test_public_box_from_slice() {
|
||||||
|
let my_slice: &[u8; 32] = &[0; 32];
|
||||||
|
let p: PublicBox<32> = PublicBox::from_slice(my_slice);
|
||||||
|
assert_eq!(p.deref(), my_slice);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that [PublicBox] can correctly be created with its [PublicBox::new] function.
|
||||||
|
#[test]
|
||||||
|
fn test_public_box_new() {
|
||||||
|
let pb = PublicBox::new([42; 32]);
|
||||||
|
assert_eq!(pb.deref(), &[42; 32]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test the randomize functionality of [PublicBox].
|
||||||
|
#[test]
|
||||||
|
fn test_public_box_randomize() {
|
||||||
|
let mut pb: PublicBox<32> = PublicBox::zero();
|
||||||
|
pb.randomize();
|
||||||
|
pb.try_fill(&mut crate::rand::rng()).unwrap();
|
||||||
|
// Can't really assert anything here until we have can predict the randomness
|
||||||
|
// by derandomizing the RNG for tests.
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test the [Debug] print of [PublicBox]
|
||||||
|
#[test]
|
||||||
|
fn test_public_box_debug() {
|
||||||
|
let pb: PublicBox<32> = PublicBox::new([42; 32]);
|
||||||
|
let _ = format!("{:?}", pb);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that [PublicBox] is correctly borrowed to a u8 array.
|
||||||
|
#[test]
|
||||||
|
fn test_borrow_public_box_sized() {
|
||||||
|
let p: PublicBox<32> = PublicBox::zero();
|
||||||
|
let borrowed: &[u8; 32] = &p;
|
||||||
|
assert_eq!(borrowed, &[0; 32]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that [PublicBox] is correctly borrowed to a mutable u8 array.
|
||||||
|
#[test]
|
||||||
|
fn test_borrow_public_box_sized_mut() {
|
||||||
|
let mut p: PublicBox<32> = PublicBox::zero();
|
||||||
|
let borrowed: &mut [u8; 32] = &mut p;
|
||||||
|
assert_eq!(borrowed, &[0; 32]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that [PublicBox] is correctly borrowed to a u8 slice.
|
||||||
|
#[test]
|
||||||
|
fn test_borrow_public_box_unsized() {
|
||||||
|
use std::borrow::Borrow;
|
||||||
|
let p: PublicBox<32> = PublicBox::zero();
|
||||||
|
let borrowed: &[u8] = p.borrow();
|
||||||
|
assert_eq!(borrowed, &[0; 32]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that [Public] is correctly borrowed to a mutable u8 slice.
|
||||||
|
#[test]
|
||||||
|
fn test_borrow_public_box_unsized_mut() {
|
||||||
|
use std::borrow::BorrowMut;
|
||||||
|
let mut p: PublicBox<32> = PublicBox::zero();
|
||||||
|
let borrowed: &mut [u8] = p.borrow_mut();
|
||||||
|
assert_eq!(borrowed, &[0; 32]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -379,7 +379,10 @@ impl<const N: usize> StoreSecret for Secret<N> {
|
|||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod test {
|
mod test {
|
||||||
use crate::test_spawn_process_provided_policies;
|
use crate::{
|
||||||
|
secret_policy_try_use_memfd_secrets, secret_policy_use_only_malloc_secrets,
|
||||||
|
test_spawn_process_provided_policies,
|
||||||
|
};
|
||||||
|
|
||||||
use super::*;
|
use super::*;
|
||||||
use std::{fs, os::unix::fs::PermissionsExt};
|
use std::{fs, os::unix::fs::PermissionsExt};
|
||||||
@@ -523,4 +526,33 @@ mod test {
|
|||||||
assert_eq!(metadata.permissions().mode() & 0o000777, 0o600);
|
assert_eq!(metadata.permissions().mode() & 0o000777, 0o600);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Test the creation of a [ZeroizingSecretBox] using its [new](ZeroizingSecretBox::new)
|
||||||
|
/// function.
|
||||||
|
#[test]
|
||||||
|
fn test_zeroizing_secret_box_new() {
|
||||||
|
struct DummyZeroizing {
|
||||||
|
inner_dummy: [u8; 32],
|
||||||
|
}
|
||||||
|
impl Zeroize for DummyZeroizing {
|
||||||
|
fn zeroize(&mut self) {
|
||||||
|
self.inner_dummy = [0; 32];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let dummy = DummyZeroizing {
|
||||||
|
inner_dummy: [42; 32],
|
||||||
|
};
|
||||||
|
secret_policy_use_only_malloc_secrets();
|
||||||
|
let mut zsb: ZeroizingSecretBox<DummyZeroizing> = ZeroizingSecretBox::new(dummy);
|
||||||
|
zsb.zeroize();
|
||||||
|
assert_eq!(zsb.inner_dummy, [0; 32]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test the debug print of [Secret].
|
||||||
|
#[test]
|
||||||
|
fn test_debug_secret() {
|
||||||
|
secret_policy_use_only_malloc_secrets();
|
||||||
|
let my_secret: Secret<32> = Secret::zero();
|
||||||
|
assert_eq!(format!("{:?}", my_secret), "<SECRET>");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user