mod common;
use crate::common::*;
use assert_fs::prelude::*;
use predicates::str::{contains, is_empty};
use pretty_assertions::assert_eq;
#[test]
fn decrypt_to_stdout() {
let (_tmp, key_path, _, yaml_path, encrypted_path) = generate_encrypted_file();
let output = yage!("decrypt", "--key-file", &key_path, &encrypted_path)
.stderr(is_empty())
.get_output()
.clone();
assert_eq!(String::from_utf8(output.stdout).unwrap(), read(&yaml_path));
}
#[test]
fn decrypt_to_file() {
let (tmp, key_path1, _, yaml_path, encrypted_path) = generate_encrypted_file();
let (key_path2, _) = create_key(&tmp);
let decrypted_path = tmp.child("file.dec.yaml");
yage!(
"decrypt",
"--key-file",
&key_path1,
"-K",
&key_path2,
&encrypted_path,
"--output",
&decrypted_path
)
.stdout(is_empty())
.stderr(is_empty());
assert_eq!(read(&decrypted_path), read(&yaml_path));
}
#[test]
fn decrypt_from_stdin() {
let (tmp, key_path, _, yaml_path, encrypted_path) = generate_encrypted_file();
let decrypted_path = tmp.child("file.dec.yaml");
yage_cmd!("decrypt", "--key", read(&key_path).trim(), "-", "--output", &decrypted_path)
.write_stdin(read(&encrypted_path))
.assert()
.success()
.stdout(is_empty())
.stderr(is_empty());
assert_eq!(read(&decrypted_path), read(&yaml_path));
}
#[test]
fn decrypt_key_stdin() {
let (tmp, key_path, _, yaml_path, encrypted_path) = generate_encrypted_file();
let decrypted_path = tmp.child("file.dec.yaml");
yage_cmd!("decrypt", "--key-file", "-", &encrypted_path, "-o", &decrypted_path)
.write_stdin(read(&key_path))
.assert()
.success()
.stdout(is_empty())
.stderr(is_empty());
assert_eq!(read(&decrypted_path), read(&yaml_path));
}
#[test]
fn decrypt_in_place() {
let (_tmp, key_path, _, yaml_path, encrypted_path) = generate_encrypted_file();
yage!("decrypt", "-k", read(&key_path).trim(), &encrypted_path, "-i")
.stdout(is_empty())
.stderr(is_empty());
assert_eq!(read(&encrypted_path), read(&yaml_path));
}
#[test]
fn decrypt_stdin_in_place() {
yage_cmd!("decrypt", "--in-place", "-")
.assert()
.failure()
.stdout(is_empty())
.stderr(contains("error: stdin can't be modified in place"));
}
#[test]
fn decrypt_multiple_files_no_in_place() {
yage_cmd!("decrypt", "foo.yaml", "bar.yaml")
.assert()
.failure()
.stdout(is_empty())
.stderr(contains("error: invalid number of input files"));
}
#[test]
fn decrypt_key_from_env() {
let (tmp, key_path1, _, yaml_path, encrypted_path) = generate_encrypted_file();
let (key_path2, _) = create_key(&tmp);
let decrypted_path = tmp.child("file.dec.yaml");
yage_cmd!("decrypt", &encrypted_path, "--output", &decrypted_path)
.env("YAGE_KEY", format!("{},{}", read(&key_path1).trim(), read(&key_path2).trim()))
.assert()
.success()
.stdout(is_empty())
.stderr(is_empty());
assert_eq!(read(&decrypted_path), read(&yaml_path));
}
#[test]
fn decrypt_key_file_from_env() {
let (tmp, key_path1, _, yaml_path, encrypted_path) = generate_encrypted_file();
let (key_path2, _) = create_key(&tmp);
let decrypted_path = tmp.child("file.dec.yaml");
yage_cmd!("decrypt", &encrypted_path, "--output", &decrypted_path)
.env("YAGE_KEY_FILE", std::env::join_paths(vec![&key_path1, &key_path2]).unwrap())
.assert()
.success()
.stdout(is_empty())
.stderr(is_empty());
assert_eq!(read(&decrypted_path), read(&yaml_path));
}