From e7a2b7da08c829cbb092a188e45cc76e81256593 Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Mon, 12 Aug 2019 12:05:11 +0200 Subject: [PATCH] tests/blob_writer.rs: test DataBlobWriter --- tests/blob_writer.rs | 93 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 tests/blob_writer.rs diff --git a/tests/blob_writer.rs b/tests/blob_writer.rs new file mode 100644 index 00000000..db6e02ed --- /dev/null +++ b/tests/blob_writer.rs @@ -0,0 +1,93 @@ +use failure::*; +use std::io::Cursor; +use std::io::Write; + +use proxmox_backup::backup::*; + +#[test] +fn test_data_blob_writer() -> Result<(), Error> { + + let key = [1u8; 32]; + let crypt_config = CryptConfig::new(key)?; + + let test_data = b"123456789".to_vec(); + + let verify_test_blob = |raw_data: Vec| -> Result<(), Error> { + let blob = DataBlob::from_raw(raw_data)?; + blob.verify_crc()?; + + let data = blob.decode(Some(&crypt_config))?; + if data != test_data { + bail!("blob data is wrong"); + } + Ok(()) + }; + + { + let tmp = Cursor::new(Vec::::new()); + let mut blob_writer = DataBlobWriter::new_uncompressed(tmp)?; + blob_writer.write_all(&test_data)?; + + let raw_data = blob_writer.finish()?.into_inner(); + + println!("UNCOMPRESSED: {:?}", raw_data); + verify_test_blob(raw_data)?; + } + + { + let tmp = Cursor::new(Vec::::new()); + let mut blob_writer = DataBlobWriter::new_compressed(tmp)?; + blob_writer.write_all(&test_data)?; + + let raw_data = blob_writer.finish()?.into_inner(); + + println!("COMPRESSED: {:?}", raw_data); + verify_test_blob(raw_data)?; + } + + { + let tmp = Cursor::new(Vec::::new()); + let mut blob_writer = DataBlobWriter::new_signed(tmp, &crypt_config)?; + blob_writer.write_all(&test_data)?; + + let raw_data = blob_writer.finish()?.into_inner(); + + println!("SIGNED: {:?}", raw_data); + verify_test_blob(raw_data)?; + } + + { + let tmp = Cursor::new(Vec::::new()); + let mut blob_writer = DataBlobWriter::new_signed_compressed(tmp, &crypt_config)?; + blob_writer.write_all(&test_data)?; + + let raw_data = blob_writer.finish()?.into_inner(); + + println!("SIGNED COMPR: {:?}", raw_data); + verify_test_blob(raw_data)?; + } + + { + let tmp = Cursor::new(Vec::::new()); + let mut blob_writer = DataBlobWriter::new_encrypted(tmp, &crypt_config)?; + blob_writer.write_all(&test_data)?; + + let raw_data = blob_writer.finish()?.into_inner(); + + println!("ENCRYPTED: {:?}", raw_data); + verify_test_blob(raw_data)?; + } + + { + let tmp = Cursor::new(Vec::::new()); + let mut blob_writer = DataBlobWriter::new_encrypted_compressed(tmp, &crypt_config)?; + blob_writer.write_all(&test_data)?; + + let raw_data = blob_writer.finish()?.into_inner(); + + println!("ENCRYPTED COMPR: {:?}", raw_data); + verify_test_blob(raw_data)?; + } + + Ok(()) +}