mirror of
https://github.com/kharonsec/SecurityArc
synced 2026-04-25 14:44:57 +02:00
61 lines
1.6 KiB
Rust
61 lines
1.6 KiB
Rust
//! File format tests
|
|
|
|
use securearc_core::format::directory::{CentralDirectory, FileEntry};
|
|
use securearc_core::format::header::SecurityHeader;
|
|
use securearc_core::format::keyslot::KeySlot;
|
|
use std::io::Cursor;
|
|
use std::path::PathBuf;
|
|
|
|
#[test]
|
|
fn test_header_creation() {
|
|
let header = SecurityHeader::new(5).unwrap();
|
|
assert_eq!(header.max_attempts, 5);
|
|
assert_eq!(header.attempt_counter, 0);
|
|
assert!(!header.destroyed);
|
|
}
|
|
|
|
#[test]
|
|
fn test_header_serialization() {
|
|
let header = SecurityHeader::new(10).unwrap();
|
|
let mut buffer = Vec::new();
|
|
header.write(&mut buffer).unwrap();
|
|
|
|
let mut reader = Cursor::new(buffer);
|
|
let deserialized = SecurityHeader::read(&mut reader).unwrap();
|
|
assert_eq!(header.max_attempts, deserialized.max_attempts);
|
|
}
|
|
|
|
#[test]
|
|
fn test_key_slot_zeroization() {
|
|
let mut slot = KeySlot::new(0);
|
|
slot.encrypted_key = vec![1, 2, 3, 4, 5];
|
|
slot.active = true;
|
|
|
|
assert!(!slot.is_zeroized());
|
|
slot.zeroize();
|
|
assert!(slot.is_zeroized());
|
|
assert!(!slot.active);
|
|
}
|
|
|
|
#[test]
|
|
fn test_directory_operations() {
|
|
let mut directory = CentralDirectory::new();
|
|
|
|
let entry = FileEntry {
|
|
path: PathBuf::from("test.txt"),
|
|
original_size: 100,
|
|
compressed_size: 50,
|
|
encrypted_size: 60,
|
|
modified_time: 1234567890,
|
|
attributes: 0,
|
|
data_offset: 0,
|
|
};
|
|
|
|
directory.add_entry(entry);
|
|
assert_eq!(directory.entries().len(), 1);
|
|
|
|
let found = directory.find_entry(&PathBuf::from("test.txt"));
|
|
assert!(found.is_some());
|
|
assert_eq!(found.unwrap().original_size, 100);
|
|
}
|