2020-11-28 14:29:23 +00:00
|
|
|
#[cfg(test)]
|
|
|
|
mod must {
|
2020-12-25 21:52:40 +00:00
|
|
|
use bakare::test::assertions::in_memory::*;
|
|
|
|
use bakare::{repository::Repository, test::source::TestSource};
|
2020-11-28 14:29:23 +00:00
|
|
|
use proptest::prelude::*;
|
2021-05-16 19:15:07 +01:00
|
|
|
use tempfile::tempdir;
|
2021-01-30 10:40:32 +00:00
|
|
|
|
2020-11-28 14:29:23 +00:00
|
|
|
proptest! {
|
|
|
|
#[test]
|
|
|
|
fn store_duplicated_files_just_once(contents in any::<[u8;3]>()) {
|
|
|
|
let source = TestSource::new().unwrap();
|
2021-05-16 19:15:07 +01:00
|
|
|
let dir = tempdir().unwrap();
|
|
|
|
let repository_path = dir.path();
|
2021-10-31 00:25:37 +01:00
|
|
|
let secret = "some secret";
|
|
|
|
Repository::init(repository_path, secret).unwrap();
|
|
|
|
assert_eq!(data_weight(repository_path, secret).unwrap(), 0);
|
2020-11-28 14:23:21 +00:00
|
|
|
|
2021-10-31 00:25:37 +01:00
|
|
|
backup_file_with_byte_contents(&source, repository_path, secret, "1", &contents).unwrap();
|
|
|
|
let first_weight = data_weight(repository_path, secret).unwrap();
|
2020-11-28 14:29:23 +00:00
|
|
|
assert!(first_weight > 0);
|
2020-11-28 14:23:21 +00:00
|
|
|
|
2021-10-31 00:25:37 +01:00
|
|
|
backup_file_with_byte_contents(&source, repository_path, secret, "2", &contents).unwrap();
|
|
|
|
let second_weight = data_weight(repository_path, secret).unwrap();
|
2020-11-28 14:29:23 +00:00
|
|
|
assert_eq!(first_weight, second_weight);
|
2020-11-28 14:23:21 +00:00
|
|
|
|
2021-10-31 00:25:37 +01:00
|
|
|
assert_restored_file_contents(repository_path, secret, &source.file_path("1").unwrap(), &contents).unwrap();
|
|
|
|
assert_restored_file_contents(repository_path, secret, &source.file_path("2").unwrap(), &contents).unwrap();
|
2020-11-28 14:29:23 +00:00
|
|
|
}
|
2020-11-28 14:23:21 +00:00
|
|
|
}
|
|
|
|
}
|