#[cfg(test)]
mod tests {
extern crate mix;
#[test]
fn test_genkey() {
let key = mix::genkey(32);
assert_eq!(key.len(), 32);
}
#[test]
fn test_simple_encrypt_and_decrypt() {
let plain = "abcdefghijklmopqrs".as_bytes();
let key = "EXHcE7JQDy8vSBDVTTsgg4NkCQUfgqDx".as_bytes();
let cipher = mix::encrypt(plain, key).unwrap();
let plainplain = mix::decrypt(&cipher[..], key).unwrap();
assert_eq!(*plain, plainplain[..]);
}
#[test]
fn test_more_encrypt_and_decrypt() {
let mut plain;
let mut key;
let mut cipher;
let mut plainplain;
for _ in 0..1000 {
plain = mix::genkey(1024);
key = mix::genkey(32);
cipher = mix::encrypt(plain.as_bytes(), key.as_bytes()).unwrap();
plainplain = mix::decrypt(&cipher[..], key.as_bytes()).unwrap();
assert_eq!(*plain.as_bytes(), plainplain[..]);
}
}
#[test]
fn test_mixed_decrypt() {
let key = "EXHcE7JQDy8vSBDVTTsgg4NkCQUfgqDx".as_bytes();
let plain = mix::decrypt("abcd".as_bytes(), key);
assert_eq!(plain, Err("InvalidLength".to_string()));
}
#[test]
fn test_generate_template() {
let key = "abcdef".to_string();
let expect = format!(
"\
[filter \"git-mix\"]
clean = git-mix encrypt --key {key}
smudge = git-mix decrypt --key {key}
",
key = key
);
let actual = mix::gen(Some(key.as_str()));
assert_eq!(actual, expect);
}
#[test]
fn test_generate_attribute() {
let expect = format!(
"\
* filter=git-mix
.gitattributes !filter
"
);
let actual = mix::genattr();
assert_eq!(actual, expect);
}
}