working checksummung
This commit is contained in:
parent
361866a875
commit
941524e92f
7 changed files with 80 additions and 17 deletions
|
|
@ -41,15 +41,33 @@ use extractors::{
|
||||||
let input_path = Path::new("src/test_data/test.zip");
|
let input_path = Path::new("src/test_data/test.zip");
|
||||||
let output_directory = create_temp_dir();
|
let output_directory = create_temp_dir();
|
||||||
|
|
||||||
|
// Extract the zip file
|
||||||
let result = extract_zip(input_path, &output_directory);
|
let result = extract_zip(input_path, &output_directory);
|
||||||
assert!(result.is_ok());
|
assert!(result.is_ok());
|
||||||
|
|
||||||
|
// Check checksums and assert equality
|
||||||
|
let checksum_01 = verify_checksum("src/test_data/checksum_01", "src/test_data/testfile_01").unwrap();
|
||||||
|
let checksum_02 = verify_checksum("src/test_data/checksum_02", "src/test_data/testfile_02").unwrap();
|
||||||
|
let checksum_03 = verify_checksum("src/test_data/checksum_03", "src/test_data/testfile_03").unwrap();
|
||||||
|
|
||||||
|
println!("Checksum 01: {:?}", checksum_01);
|
||||||
|
println!("Checksum 02: {:?}", checksum_02);
|
||||||
|
println!("Checksum 03: {:?}", checksum_03);
|
||||||
|
|
||||||
|
assert_eq!(checksum_01, true);
|
||||||
|
assert_eq!(checksum_02, true);
|
||||||
|
assert_eq!(checksum_03, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_extract_rar() {
|
fn test_extract_rar() {
|
||||||
let input_path = Path::new("src/test_data/test.rar");
|
let input_path = Path::new("src/test_data/test.rar");
|
||||||
let output_directory = create_temp_dir();
|
let output_directory = create_temp_dir();
|
||||||
|
//get the text in checksum_01,checksum_02,checksum_03 and compare to the hashes of testfile_01 testfile_02 and testfile_03
|
||||||
|
//assert equality
|
||||||
let result = extract_rar(input_path, &output_directory);
|
let result = extract_rar(input_path, &output_directory);
|
||||||
assert!(result.is_ok());
|
assert!(result.is_ok());
|
||||||
}
|
}
|
||||||
|
|
@ -58,7 +76,8 @@ use extractors::{
|
||||||
fn test_extract_tar() {
|
fn test_extract_tar() {
|
||||||
let input_path = Path::new("src/test_data/test.tar");
|
let input_path = Path::new("src/test_data/test.tar");
|
||||||
let output_directory = create_temp_dir();
|
let output_directory = create_temp_dir();
|
||||||
|
//get the text in checksum_01,checksum_02,checksum_03 and compare to the hashes of testfile_01 testfile_02 and testfile_03
|
||||||
|
//assert equality
|
||||||
let result = extract_tar(input_path, &output_directory);
|
let result = extract_tar(input_path, &output_directory);
|
||||||
assert!(result.is_ok());
|
assert!(result.is_ok());
|
||||||
}
|
}
|
||||||
|
|
@ -67,7 +86,8 @@ use extractors::{
|
||||||
fn test_extract_lzma() {
|
fn test_extract_lzma() {
|
||||||
let input_path = Path::new("src/test_data/test.lzma");
|
let input_path = Path::new("src/test_data/test.lzma");
|
||||||
let output_directory = create_temp_dir();
|
let output_directory = create_temp_dir();
|
||||||
|
//get the text in checksum_01 and compare to the hashes of testfile_01
|
||||||
|
//assert equality
|
||||||
let result = extract_lzma(input_path, &output_directory);
|
let result = extract_lzma(input_path, &output_directory);
|
||||||
assert!(result.is_ok());
|
assert!(result.is_ok());
|
||||||
}
|
}
|
||||||
|
|
@ -76,7 +96,8 @@ use extractors::{
|
||||||
fn test_extract_gz() {
|
fn test_extract_gz() {
|
||||||
let input_path = Path::new("src/test_data/test.gz");
|
let input_path = Path::new("src/test_data/test.gz");
|
||||||
let output_directory = create_temp_dir();
|
let output_directory = create_temp_dir();
|
||||||
|
//get the text in checksum_01 and compare to the hashes of testfile_01
|
||||||
|
//assert equality
|
||||||
let result = extract_gz(input_path, &output_directory);
|
let result = extract_gz(input_path, &output_directory);
|
||||||
assert!(result.is_ok());
|
assert!(result.is_ok());
|
||||||
}
|
}
|
||||||
|
|
@ -85,7 +106,8 @@ use extractors::{
|
||||||
fn test_extract_bz2() {
|
fn test_extract_bz2() {
|
||||||
let input_path = Path::new("src/test_data/test.bz2");
|
let input_path = Path::new("src/test_data/test.bz2");
|
||||||
let output_directory = create_temp_dir();
|
let output_directory = create_temp_dir();
|
||||||
|
//get the text in checksum_01 and compare to the hashes of testfile_01
|
||||||
|
//assert equality
|
||||||
let result = extract_bz2(input_path, &output_directory);
|
let result = extract_bz2(input_path, &output_directory);
|
||||||
assert!(result.is_ok());
|
assert!(result.is_ok());
|
||||||
}
|
}
|
||||||
|
|
@ -94,7 +116,8 @@ use extractors::{
|
||||||
fn test_extract_7z() {
|
fn test_extract_7z() {
|
||||||
let input_path = Path::new("src/test_data/test.7z");
|
let input_path = Path::new("src/test_data/test.7z");
|
||||||
let output_directory = create_temp_dir();
|
let output_directory = create_temp_dir();
|
||||||
|
//get the text in checksum_01,checksum_02,checksum_03 and compare to the hashes of testfile_01 testfile_02 and testfile_03
|
||||||
|
//assert equality
|
||||||
let result = extract_7z(input_path, &output_directory);
|
let result = extract_7z(input_path, &output_directory);
|
||||||
assert!(result.is_ok());
|
assert!(result.is_ok());
|
||||||
}
|
}
|
||||||
|
|
@ -103,7 +126,8 @@ use extractors::{
|
||||||
fn test_extract_tbz2() {
|
fn test_extract_tbz2() {
|
||||||
let input_path = Path::new("src/test_data/test.tbz2");
|
let input_path = Path::new("src/test_data/test.tbz2");
|
||||||
let output_directory = create_temp_dir();
|
let output_directory = create_temp_dir();
|
||||||
|
//get the text in checksum_01,checksum_02,checksum_03 and compare to the hashes of testfile_01 testfile_02 and testfile_03
|
||||||
|
//assert equality
|
||||||
let result = extract_tbz2(input_path, &output_directory);
|
let result = extract_tbz2(input_path, &output_directory);
|
||||||
assert!(result.is_ok());
|
assert!(result.is_ok());
|
||||||
}
|
}
|
||||||
|
|
@ -112,7 +136,8 @@ use extractors::{
|
||||||
fn test_extract_tgz() {
|
fn test_extract_tgz() {
|
||||||
let input_path = Path::new("src/test_data/test.tgz");
|
let input_path = Path::new("src/test_data/test.tgz");
|
||||||
let output_directory = create_temp_dir();
|
let output_directory = create_temp_dir();
|
||||||
|
//get the text in checksum_01,checksum_02,checksum_03 and compare to the hashes of testfile_01 testfile_02 and testfile_03
|
||||||
|
//assert equality
|
||||||
let result = extract_tgz(input_path, &output_directory);
|
let result = extract_tgz(input_path, &output_directory);
|
||||||
assert!(result.is_ok());
|
assert!(result.is_ok());
|
||||||
}
|
}
|
||||||
|
|
@ -121,11 +146,45 @@ use extractors::{
|
||||||
fn test_extract_txz() {
|
fn test_extract_txz() {
|
||||||
let input_path = Path::new("src/test_data/test.txz");
|
let input_path = Path::new("src/test_data/test.txz");
|
||||||
let output_directory = create_temp_dir();
|
let output_directory = create_temp_dir();
|
||||||
|
//get the text in checksum_01,checksum_02,checksum_03 and compare to the hashes of testfile_01 testfile_02 and testfile_03
|
||||||
|
//assert equality
|
||||||
let result = extract_txz(input_path, &output_directory);
|
let result = extract_txz(input_path, &output_directory);
|
||||||
assert!(result.is_ok());
|
assert!(result.is_ok());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn verify_checksum(checksum_path: &str, testfile_path: &str) -> Result<bool, std::io::Error> {
|
||||||
|
let mut checksum_file = File::open(checksum_path).expect("Failed to open checksum file");
|
||||||
|
let mut checksum_data = String::new();
|
||||||
|
checksum_file
|
||||||
|
.read_to_string(&mut checksum_data)
|
||||||
|
.expect("Failed to read checksum data");
|
||||||
|
let mut checksum_data_uppercase = checksum_data.to_uppercase();
|
||||||
|
|
||||||
|
if checksum_data_uppercase.len() >= 2 {
|
||||||
|
checksum_data_uppercase.truncate(checksum_data_uppercase.len() - 1);
|
||||||
|
} else {
|
||||||
|
// Handle cases where the string is too short to remove characters
|
||||||
|
println!("String is too short to remove characters");
|
||||||
|
}
|
||||||
|
println!("Checksum file data: {:?}", checksum_data_uppercase);
|
||||||
|
|
||||||
|
let mut testfile = File::open(testfile_path).expect("Failed to open test file");
|
||||||
|
let testfile_buffer = BufReader::new(&mut testfile);
|
||||||
|
let calculated_checksum = HEXUPPER.encode(sha256_digest(testfile_buffer, testfile_path)?.as_ref());
|
||||||
|
let tf_path = Path::new(testfile_path);
|
||||||
|
let mut checksum_with_filename = String::new(); // Initialize the variable
|
||||||
|
if let Some(testfile_name) = tf_path.file_name() {
|
||||||
|
if let Some(testfile_name_str) = testfile_name.to_str() {
|
||||||
|
checksum_with_filename = format!("{} {}", calculated_checksum, testfile_name_str.to_uppercase());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
println!("Invalid path or no file name found.");
|
||||||
|
}
|
||||||
|
println!("Calculated Checksum: {:?}", checksum_with_filename);
|
||||||
|
|
||||||
|
Ok(checksum_with_filename == checksum_data_uppercase)
|
||||||
|
}
|
||||||
|
|
||||||
fn create_temp_dir() -> PathBuf {
|
fn create_temp_dir() -> PathBuf {
|
||||||
let mut temp_dir = std::env::temp_dir();
|
let mut temp_dir = std::env::temp_dir();
|
||||||
temp_dir.push("test_dir");
|
temp_dir.push("test_dir");
|
||||||
|
|
@ -133,7 +192,7 @@ use extractors::{
|
||||||
temp_dir
|
temp_dir
|
||||||
}
|
}
|
||||||
|
|
||||||
fn sha256_digest<R: Read>(mut reader: R) -> Result<Digest, std::io::Error> {
|
fn sha256_digest<R: Read>(mut reader: R, filename: &str) -> Result<Digest, std::io::Error> {
|
||||||
let mut context = Context::new(&SHA256);
|
let mut context = Context::new(&SHA256);
|
||||||
let mut buffer = [0; 1024];
|
let mut buffer = [0; 1024];
|
||||||
|
|
||||||
|
|
@ -147,6 +206,7 @@ use extractors::{
|
||||||
|
|
||||||
Ok(context.finish())
|
Ok(context.finish())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn mode_to_chmod(mode: u32) -> u32 {
|
fn mode_to_chmod(mode: u32) -> u32 {
|
||||||
let mut flags:u32 = 0;
|
let mut flags:u32 = 0;
|
||||||
|
|
||||||
|
|
|
||||||
1
src/test_data/checksum_01
Normal file
1
src/test_data/checksum_01
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
c63a52591e30851e2dc94705902a592dea89c3134166df1c0a8979f90d9ea0a2 testfile_01
|
||||||
1
src/test_data/checksum_02
Normal file
1
src/test_data/checksum_02
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
dd5c253429a3a1a34e382ff0158555d4a573ace73c1a4fb60e5b215053d8b6ab testfile_02
|
||||||
1
src/test_data/checksum_03
Normal file
1
src/test_data/checksum_03
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
1e103ac2fc72820330a578900880744481726c7752ead976e3a30963ee4b39bc testfile_03
|
||||||
BIN
src/test_data/testfile_01
Normal file
BIN
src/test_data/testfile_01
Normal file
Binary file not shown.
BIN
src/test_data/testfile_02
Normal file
BIN
src/test_data/testfile_02
Normal file
Binary file not shown.
BIN
src/test_data/testfile_03
Normal file
BIN
src/test_data/testfile_03
Normal file
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue