pack_backup / unpack_backup ship the magic header, format version, Argon2id KDF, XChaCha20-Poly1305 AEAD, and zstd-compressed JSON envelope. Empty-vault round-trip is the foundation; later tasks add items, attachments, image, and git history.
33 lines
1.1 KiB
Rust
33 lines
1.1 KiB
Rust
//! Backup container round-trip + error-path coverage.
|
|
|
|
use relicario_core::backup::{pack_backup, unpack_backup, BackupInput, BackupOutput};
|
|
|
|
fn empty_input() -> BackupInput<'static> {
|
|
BackupInput {
|
|
salt: &[0u8; 32],
|
|
params_json: r#"{"format_version":2,"kdf":{"argon2_m":256,"argon2_t":1,"argon2_p":1},"aead":"xchacha20poly1305","salt_path":".relicario/salt"}"#,
|
|
devices_json: "[]",
|
|
manifest_enc: &[],
|
|
settings_enc: &[],
|
|
items: vec![],
|
|
attachments: vec![],
|
|
reference_jpg: None,
|
|
git_archive: None,
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn empty_vault_round_trip() {
|
|
let out = pack_backup(empty_input(), "test-passphrase-1234").unwrap();
|
|
assert_eq!(&out[..4], b"RBAK", "magic header");
|
|
assert_eq!(out[4], 0x01, "format version");
|
|
|
|
let unpacked = unpack_backup(&out, "test-passphrase-1234").unwrap();
|
|
assert_eq!(unpacked.salt, [0u8; 32]);
|
|
assert!(unpacked.devices_json.contains("[]"));
|
|
assert!(unpacked.items.is_empty());
|
|
assert!(unpacked.attachments.is_empty());
|
|
assert!(unpacked.reference_jpg.is_none());
|
|
assert!(unpacked.git_archive.is_none());
|
|
}
|