mod common;
use evmlib::cryptography::{hash, sign_message};
#[test]
fn test_hash_function() {
let empty_hash = hash([]);
assert_eq!(
format!("{empty_hash:x}"),
"c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470"
);
let test_str = "The quick brown fox jumps over the lazy dog";
let test_hash = hash(test_str);
assert_eq!(
format!("{test_hash:x}"),
"4d741b6f1eb29cb2a9b9911c82f56fa8d73b04959d3d9d222895df6c0b28aa15"
);
let multi_byte = vec![0u8, 1u8, 2u8, 3u8, 4u8];
let multi_byte_hash = hash(multi_byte);
assert_eq!(
format!("{multi_byte_hash:x}"),
"b76772ee47306482c3e219e9034bcf3f79a9bc88d6317735cd5a0e21d661acf6"
);
}
#[test]
fn test_sign_message_invalid_inputs() {
let invalid_key = "not_a_valid_key";
let message = b"Test message";
let result = sign_message(invalid_key, message);
assert!(result.is_err(), "Should fail with invalid key");
if let Err(err) = result {
assert!(err.to_string().contains("Failed to parse EVM secret key"));
}
}
#[test]
fn test_sign_message_valid() {
let private_key = "1111111111111111111111111111111111111111111111111111111111111111";
let message = b"Test message for signing";
let signature = sign_message(private_key, message);
assert!(signature.is_ok(), "Signing should succeed with valid key");
let signature = signature.unwrap();
assert!(!signature.is_empty());
assert_eq!(signature.len(), 64); }
#[test]
fn test_sign_message_reproducibility() {
let private_key = "1111111111111111111111111111111111111111111111111111111111111111";
let message = b"Test message";
let signature1 = sign_message(private_key, message).expect("Signing should succeed");
let signature2 = sign_message(private_key, message).expect("Signing should succeed");
assert_eq!(signature1, signature2);
}