use crate::keys::util::{
KeysListCmdBuilder, KeysListKeystoreCmdBuilder, LIST_OUTPUT_ARTI, LIST_OUTPUT_CTOR,
};
use crate::util::assert_log_message;
mod util;
#[test]
fn list_all_keystore_entries() {
let output = KeysListCmdBuilder::default()
.with_arti(true)
.with_ctor(true)
.build()
.unwrap()
.output()
.unwrap();
assert!(output.status.success());
let stdout = String::from_utf8(output.stdout.clone()).unwrap();
for entry in LIST_OUTPUT_ARTI {
assert!(stdout.contains(entry))
}
for entry in LIST_OUTPUT_CTOR {
assert!(stdout.contains(entry))
}
assert_log_message(output);
}
#[test]
fn list_arti_keystore_entries() {
let output = KeysListCmdBuilder::default()
.with_arti(true)
.with_ctor(true)
.keystore(Some("arti".to_string()))
.build()
.unwrap()
.output()
.unwrap();
assert!(output.status.success());
let stdout = String::from_utf8(output.stdout.clone()).unwrap();
for entry in LIST_OUTPUT_ARTI {
assert!(stdout.contains(entry))
}
for entry in LIST_OUTPUT_CTOR {
assert!(!stdout.contains(entry))
}
assert_log_message(output);
}
#[test]
fn list_ctor_keystore_entries() {
let output = KeysListCmdBuilder::default()
.with_arti(true)
.with_ctor(true)
.keystore(Some("ctor".to_string()))
.build()
.unwrap()
.output()
.unwrap();
assert!(output.status.success());
let stdout = String::from_utf8(output.stdout.clone()).unwrap();
for entry in LIST_OUTPUT_ARTI {
assert!(!stdout.contains(entry))
}
for entry in LIST_OUTPUT_CTOR {
assert!(stdout.contains(entry))
}
assert_log_message(output);
}
#[test]
fn list_unregistered_keystore_fails() {
let unregistered = "unregistered";
let output = KeysListCmdBuilder::default()
.keystore(Some(unregistered.to_string()))
.build()
.unwrap()
.output()
.unwrap();
assert!(!output.status.success());
let error = String::from_utf8(output.stderr).unwrap();
assert!(error.contains(&format!("arti: error: Keystore {} not found", unregistered)));
assert!(output.stdout.is_empty())
}
#[test]
fn list_arti_with_empty_state_dir_and_full_ctor() {
let output = KeysListCmdBuilder::default()
.keystore(Some("arti".to_string()))
.with_ctor(true)
.build()
.unwrap()
.output()
.unwrap();
assert!(output.status.success());
let stdout = String::from_utf8(output.stdout.clone()).unwrap();
assert!(stdout.contains("Currently there are no entries in the keystore arti."));
for entry in LIST_OUTPUT_ARTI {
assert!(!stdout.contains(entry))
}
for entry in LIST_OUTPUT_CTOR {
assert!(!stdout.contains(entry))
}
assert_log_message(output);
}
#[test]
fn list_with_empty_state_dir_and_full_ctor() {
let output = KeysListCmdBuilder::default()
.with_ctor(true)
.build()
.unwrap()
.output()
.unwrap();
assert!(output.status.success());
let stdout = String::from_utf8(output.stdout.clone()).unwrap();
for entry in LIST_OUTPUT_ARTI {
assert!(!stdout.contains(entry))
}
for entry in LIST_OUTPUT_CTOR {
assert!(stdout.contains(entry))
}
assert_log_message(output);
}
#[test]
fn list_with_empty_state_dir_and_no_registered_ctor() {
let output = KeysListCmdBuilder::default()
.build()
.unwrap()
.output()
.unwrap();
assert!(output.status.success());
let stdout = String::from_utf8(output.stdout).unwrap();
assert!(stdout.contains("Currently there are no entries in any of the keystores."));
for entry in LIST_OUTPUT_ARTI {
assert!(!stdout.contains(entry))
}
for entry in LIST_OUTPUT_CTOR {
assert!(!stdout.contains(entry))
}
assert!(output.stderr.is_empty())
}
#[test]
fn list_keystore_with_arti_and_ctor() {
let output = KeysListKeystoreCmdBuilder::default()
.with_ctor(true)
.build()
.unwrap()
.output()
.unwrap();
assert!(output.status.success());
let stdout = String::from_utf8(output.stdout.clone()).unwrap();
assert!(stdout.contains("arti"));
assert!(stdout.contains("ctor"));
assert_log_message(output);
}
#[test]
fn list_keystore_with_arti() {
let output = KeysListKeystoreCmdBuilder::default()
.build()
.unwrap()
.output()
.unwrap();
assert!(output.status.success());
let stdout = String::from_utf8(output.stdout.clone()).unwrap();
assert!(stdout.contains("arti"));
assert!(!stdout.contains("ctor"));
assert!(output.stderr.is_empty())
}