use autonomi::self_encryption::encrypt;
use bytes::Bytes;
use self_encryption::MAX_CHUNK_SIZE;
use tracing::info;
#[test]
fn test_basic_encryption() {
let data = Bytes::from(vec![0u8; 1000]);
let result = encrypt(data);
assert!(result.is_ok(), "Basic encryption should succeed");
let (data_map_chunk, chunks) = result.unwrap();
assert!(!chunks.is_empty(), "Should produce at least one data chunk");
assert!(
data_map_chunk.size() <= MAX_CHUNK_SIZE,
"Data map chunk should be within size limits"
);
}
#[test]
fn test_empty_data_encryption() {
let data = Bytes::from(vec![]);
let result = encrypt(data);
assert!(result.is_err(), "Empty data encryption should fail");
}
#[test]
fn test_small_data_encryption() {
let data = Bytes::from(vec![1u8; 3072]);
let result = encrypt(data);
assert!(result.is_ok(), "Small data encryption should succeed");
let (data_map_chunk, _chunks) = result.unwrap();
assert!(
data_map_chunk.size() <= MAX_CHUNK_SIZE,
"Data map chunk should be within size limits"
);
}
#[test]
fn test_chunk_size_boundary() {
let data = Bytes::from(vec![2u8; MAX_CHUNK_SIZE]);
let result = encrypt(data);
assert!(
result.is_ok(),
"Chunk size boundary encryption should succeed"
);
let (data_map_chunk, _chunks) = result.unwrap();
assert!(
data_map_chunk.size() <= MAX_CHUNK_SIZE,
"Data map chunk should be within size limits"
);
}
#[test]
fn test_large_data_encryption() {
let data = Bytes::from(vec![3u8; MAX_CHUNK_SIZE * 5]);
let result = encrypt(data);
assert!(result.is_ok(), "Large data encryption should succeed");
let (data_map_chunk, chunks) = result.unwrap();
assert!(chunks.len() > 1, "Should produce multiple data chunks");
assert!(
data_map_chunk.size() <= MAX_CHUNK_SIZE,
"Data map chunk should be within size limits"
);
for chunk in chunks {
assert!(
chunk.size() <= MAX_CHUNK_SIZE,
"Each chunk should be within size limits"
);
}
}
#[test]
fn test_varied_data_patterns() {
let mut data = Vec::with_capacity(MAX_CHUNK_SIZE * 3);
for i in 0..(MAX_CHUNK_SIZE * 3) {
data.push(i as u8);
}
let result = encrypt(Bytes::from(data));
assert!(result.is_ok(), "Varied data encryption should succeed");
let (data_map_chunk, chunks) = result.unwrap();
assert!(chunks.len() > 1, "Should produce multiple data chunks");
assert!(
data_map_chunk.size() <= MAX_CHUNK_SIZE,
"Data map chunk should be within size limits"
);
}
#[test]
fn test_multi_level_data_maps() {
let large_size = MAX_CHUNK_SIZE * 500;
info!("Creating test data of size {}", large_size);
let data = Bytes::from(vec![4u8; large_size]);
let result = encrypt(data);
assert!(
result.is_ok(),
"Multi-level data map encryption should succeed"
);
let (data_map_chunk, chunks) = result.unwrap();
assert!(
data_map_chunk.size() <= MAX_CHUNK_SIZE,
"Data map chunk should be within size limits"
);
assert!(chunks.len() > 10, "Should produce many data chunks");
}