use crate::{
group::past_secrets::MessageSecretsStore, schedule::message_secrets::MessageSecrets,
test_utils::*,
};
#[apply(ciphersuites_and_backends)]
fn test_secret_tree_store(ciphersuite: Ciphersuite, backend: &impl OpenMlsCryptoProvider) {
let mut message_secrets_store =
MessageSecretsStore::new_with_secret(3, MessageSecrets::random(ciphersuite, backend, 0));
message_secrets_store.add(
0,
MessageSecrets::random(ciphersuite, backend, 0),
Vec::new(),
);
assert!(message_secrets_store.secrets_for_epoch_mut(0).is_some());
for i in 1..6u64 {
message_secrets_store.add(
i,
MessageSecrets::random(ciphersuite, backend, 0),
Vec::new(),
);
}
assert!(message_secrets_store.secrets_for_epoch_mut(3).is_some());
assert!(message_secrets_store.secrets_for_epoch_mut(4).is_some());
assert!(message_secrets_store.secrets_for_epoch_mut(5).is_some());
assert!(message_secrets_store.secrets_for_epoch_mut(0).is_none());
assert!(message_secrets_store.secrets_for_epoch_mut(1).is_none());
assert!(message_secrets_store.secrets_for_epoch_mut(2).is_none());
assert!(message_secrets_store.secrets_for_epoch_mut(6).is_none());
}
#[apply(ciphersuites_and_backends)]
fn test_empty_secret_tree_store(ciphersuite: Ciphersuite, backend: &impl OpenMlsCryptoProvider) {
let mut message_secrets_store =
MessageSecretsStore::new_with_secret(0, MessageSecrets::random(ciphersuite, backend, 0));
message_secrets_store.add(
0,
MessageSecrets::random(ciphersuite, backend, 0),
Vec::new(),
);
assert!(message_secrets_store.secrets_for_epoch_mut(0).is_none());
}