]> git.proxmox.com Git - proxmox-backup.git/blob - tests/blob_writer.rs
tests/blob_writer.rs: test DataBlobWriter
[proxmox-backup.git] / tests / blob_writer.rs
1 use failure::*;
2 use std::io::Cursor;
3 use std::io::Write;
4
5 use proxmox_backup::backup::*;
6
7 #[test]
8 fn test_data_blob_writer() -> Result<(), Error> {
9
10 let key = [1u8; 32];
11 let crypt_config = CryptConfig::new(key)?;
12
13 let test_data = b"123456789".to_vec();
14
15 let verify_test_blob = |raw_data: Vec<u8>| -> Result<(), Error> {
16 let blob = DataBlob::from_raw(raw_data)?;
17 blob.verify_crc()?;
18
19 let data = blob.decode(Some(&crypt_config))?;
20 if data != test_data {
21 bail!("blob data is wrong");
22 }
23 Ok(())
24 };
25
26 {
27 let tmp = Cursor::new(Vec::<u8>::new());
28 let mut blob_writer = DataBlobWriter::new_uncompressed(tmp)?;
29 blob_writer.write_all(&test_data)?;
30
31 let raw_data = blob_writer.finish()?.into_inner();
32
33 println!("UNCOMPRESSED: {:?}", raw_data);
34 verify_test_blob(raw_data)?;
35 }
36
37 {
38 let tmp = Cursor::new(Vec::<u8>::new());
39 let mut blob_writer = DataBlobWriter::new_compressed(tmp)?;
40 blob_writer.write_all(&test_data)?;
41
42 let raw_data = blob_writer.finish()?.into_inner();
43
44 println!("COMPRESSED: {:?}", raw_data);
45 verify_test_blob(raw_data)?;
46 }
47
48 {
49 let tmp = Cursor::new(Vec::<u8>::new());
50 let mut blob_writer = DataBlobWriter::new_signed(tmp, &crypt_config)?;
51 blob_writer.write_all(&test_data)?;
52
53 let raw_data = blob_writer.finish()?.into_inner();
54
55 println!("SIGNED: {:?}", raw_data);
56 verify_test_blob(raw_data)?;
57 }
58
59 {
60 let tmp = Cursor::new(Vec::<u8>::new());
61 let mut blob_writer = DataBlobWriter::new_signed_compressed(tmp, &crypt_config)?;
62 blob_writer.write_all(&test_data)?;
63
64 let raw_data = blob_writer.finish()?.into_inner();
65
66 println!("SIGNED COMPR: {:?}", raw_data);
67 verify_test_blob(raw_data)?;
68 }
69
70 {
71 let tmp = Cursor::new(Vec::<u8>::new());
72 let mut blob_writer = DataBlobWriter::new_encrypted(tmp, &crypt_config)?;
73 blob_writer.write_all(&test_data)?;
74
75 let raw_data = blob_writer.finish()?.into_inner();
76
77 println!("ENCRYPTED: {:?}", raw_data);
78 verify_test_blob(raw_data)?;
79 }
80
81 {
82 let tmp = Cursor::new(Vec::<u8>::new());
83 let mut blob_writer = DataBlobWriter::new_encrypted_compressed(tmp, &crypt_config)?;
84 blob_writer.write_all(&test_data)?;
85
86 let raw_data = blob_writer.finish()?.into_inner();
87
88 println!("ENCRYPTED COMPR: {:?}", raw_data);
89 verify_test_blob(raw_data)?;
90 }
91
92 Ok(())
93 }