use asuran::prelude::*;
use tempfile::tempdir;
async fn create_multifile_repository(encryption: Encryption, compression: Compression, hmac: HMAC) {
let directory = tempdir().expect("Unable to open temporary directory.");
let repo_dir = directory.path();
let key = Key::random(encryption.key_length());
let encrypted_key = EncryptedKey::encrypt_defaults(
&key,
encryption,
"And then there was silence, Just a voice from the other world".as_bytes(),
);
let settings = ChunkSettings {
compression,
encryption,
hmac,
};
let mut mf = MultiFile::open_defaults(repo_dir, Some(settings), &key, 4)
.await
.expect("Unable to create the multifile repository");
mf.write_key(&encrypted_key)
.await
.expect("Unable to write encrypted key");
mf.close().await;
}
#[test]
fn create_multifile_noencryption() {
smol::run(async {
create_multifile_repository(
Encryption::NoEncryption,
Compression::NoCompression,
HMAC::Blake3,
)
.await
});
}
#[test]
fn create_lzma_9() {
smol::run(async {
create_multifile_repository(
Encryption::new_aes256ctr(),
Compression::LZMA { level: 9 },
HMAC::Blake3,
)
.await
});
}