test: Added tests for the new gopass provider
This commit is contained in:
+11
-11
@@ -9,7 +9,7 @@ mod tests {
|
||||
fn test_run_config_valid() {
|
||||
let run_config = RunConfig {
|
||||
name: Some("test".to_string()),
|
||||
provider: None,
|
||||
provider: None,
|
||||
secrets: Some(vec!["secret1".to_string()]),
|
||||
flag: None,
|
||||
flag_position: None,
|
||||
@@ -24,7 +24,7 @@ mod tests {
|
||||
fn test_run_config_missing_name() {
|
||||
let run_config = RunConfig {
|
||||
name: None,
|
||||
provider: None,
|
||||
provider: None,
|
||||
secrets: Some(vec!["secret1".to_string()]),
|
||||
flag: None,
|
||||
flag_position: None,
|
||||
@@ -39,7 +39,7 @@ mod tests {
|
||||
fn test_run_config_missing_secrets() {
|
||||
let run_config = RunConfig {
|
||||
name: Some("test".to_string()),
|
||||
provider: None,
|
||||
provider: None,
|
||||
secrets: None,
|
||||
flag: None,
|
||||
flag_position: None,
|
||||
@@ -54,7 +54,7 @@ mod tests {
|
||||
fn test_run_config_invalid_flag_position() {
|
||||
let run_config = RunConfig {
|
||||
name: Some("test".to_string()),
|
||||
provider: None,
|
||||
provider: None,
|
||||
secrets: Some(vec!["secret1".to_string()]),
|
||||
flag: Some("--test-flag".to_string()),
|
||||
flag_position: Some(0),
|
||||
@@ -69,7 +69,7 @@ mod tests {
|
||||
fn test_run_config_flags_or_none_all_some() {
|
||||
let run_config = RunConfig {
|
||||
name: Some("test".to_string()),
|
||||
provider: None,
|
||||
provider: None,
|
||||
secrets: Some(vec!["secret1".to_string()]),
|
||||
flag: Some("--test-flag".to_string()),
|
||||
flag_position: Some(1),
|
||||
@@ -84,7 +84,7 @@ mod tests {
|
||||
fn test_run_config_flags_or_none_all_none() {
|
||||
let run_config = RunConfig {
|
||||
name: Some("test".to_string()),
|
||||
provider: None,
|
||||
provider: None,
|
||||
secrets: Some(vec!["secret1".to_string()]),
|
||||
flag: None,
|
||||
flag_position: None,
|
||||
@@ -99,7 +99,7 @@ mod tests {
|
||||
fn test_run_config_flags_or_none_partial_some() {
|
||||
let run_config = RunConfig {
|
||||
name: Some("test".to_string()),
|
||||
provider: None,
|
||||
provider: None,
|
||||
secrets: Some(vec!["secret1".to_string()]),
|
||||
flag: Some("--test-flag".to_string()),
|
||||
flag_position: None,
|
||||
@@ -114,7 +114,7 @@ mod tests {
|
||||
fn test_run_config_flags_or_none_missing_placeholder() {
|
||||
let run_config = RunConfig {
|
||||
name: Some("test".to_string()),
|
||||
provider: None,
|
||||
provider: None,
|
||||
secrets: Some(vec!["secret1".to_string()]),
|
||||
flag: Some("--test-flag".to_string()),
|
||||
flag_position: Some(1),
|
||||
@@ -129,7 +129,7 @@ mod tests {
|
||||
fn test_run_config_flags_or_files_all_none() {
|
||||
let run_config = RunConfig {
|
||||
name: Some("test".to_string()),
|
||||
provider: None,
|
||||
provider: None,
|
||||
secrets: Some(vec!["secret1".to_string()]),
|
||||
flag: None,
|
||||
flag_position: None,
|
||||
@@ -144,7 +144,7 @@ mod tests {
|
||||
fn test_run_config_flags_or_files_files_is_some() {
|
||||
let run_config = RunConfig {
|
||||
name: Some("test".to_string()),
|
||||
provider: None,
|
||||
provider: None,
|
||||
secrets: Some(vec!["secret1".to_string()]),
|
||||
flag: None,
|
||||
flag_position: None,
|
||||
@@ -159,7 +159,7 @@ mod tests {
|
||||
fn test_run_config_flags_or_files_all_some() {
|
||||
let run_config = RunConfig {
|
||||
name: Some("test".to_string()),
|
||||
provider: None,
|
||||
provider: None,
|
||||
secrets: Some(vec!["secret1".to_string()]),
|
||||
flag: Some("--test-flag".to_string()),
|
||||
flag_position: Some(1),
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
use gman::config::{Config, ProviderConfig};
|
||||
use gman::providers::{SecretProvider, SupportedProvider};
|
||||
use pretty_assertions::{assert_eq, assert_str_eq};
|
||||
use validator::Validate;
|
||||
|
||||
#[test]
|
||||
fn test_gopass_supported_provider_display_and_validate_from_yaml() {
|
||||
// Build a SupportedProvider via YAML to avoid direct type import
|
||||
let yaml = r#"---
|
||||
type: gopass
|
||||
store: personal
|
||||
"#;
|
||||
|
||||
let sp: SupportedProvider = serde_yaml::from_str(yaml).expect("valid supported provider yaml");
|
||||
// Validate delegates to inner provider (no required fields)
|
||||
assert!(sp.validate().is_ok());
|
||||
// Display formatting for the enum variant
|
||||
assert_eq!(sp.to_string(), "gopass");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_provider_config_with_gopass_deserialize_and_extract() {
|
||||
// Minimal ProviderConfig YAML using the gopass variant
|
||||
let yaml = r#"---
|
||||
name: gopass
|
||||
type: gopass
|
||||
"#;
|
||||
|
||||
let pc: ProviderConfig = serde_yaml::from_str(yaml).expect("valid provider config yaml");
|
||||
// Gopass has no required fields, so validation should pass
|
||||
assert!(pc.validate().is_ok());
|
||||
|
||||
// Extract the provider and inspect its name via the trait
|
||||
let mut pc_owned = pc.clone();
|
||||
let provider: &mut dyn SecretProvider = pc_owned.extract_provider();
|
||||
assert_str_eq!(provider.name(), "GopassProvider");
|
||||
|
||||
// Round-trip through Config with default_provider
|
||||
let cfg_yaml = r#"---
|
||||
default_provider: gopass
|
||||
providers:
|
||||
- name: gopass
|
||||
type: gopass
|
||||
store: personal
|
||||
"#;
|
||||
let cfg: Config = serde_yaml::from_str(cfg_yaml).expect("valid config yaml");
|
||||
assert!(cfg.validate().is_ok());
|
||||
|
||||
let extracted = cfg
|
||||
.extract_provider_config(None)
|
||||
.expect("should find default provider");
|
||||
assert_eq!(extracted.name.as_deref(), Some("gopass"));
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
mod aws_secrets_manager_tests;
|
||||
mod azure_key_vault_tests;
|
||||
mod gcp_secret_manager_tests;
|
||||
mod gopass_tests;
|
||||
mod local_tests;
|
||||
mod provider_tests;
|
||||
|
||||
Reference in New Issue
Block a user