76 lines
2.2 KiB
Rust
76 lines
2.2 KiB
Rust
use gman::config::{Config, ProviderConfig};
|
|
use gman::providers::gcp_secret_manager::GcpSecretManagerProvider;
|
|
use gman::providers::{SecretProvider, SupportedProvider};
|
|
use pretty_assertions::{assert_eq, assert_str_eq};
|
|
use validator::Validate;
|
|
|
|
#[test]
|
|
fn test_gcp_provider_name() {
|
|
let provider = GcpSecretManagerProvider {
|
|
gcp_project_id: Some("my-project".into()),
|
|
};
|
|
assert_str_eq!(provider.name(), "GcpSecretManagerProvider");
|
|
}
|
|
|
|
#[test]
|
|
fn test_gcp_provider_validation_ok() {
|
|
let provider = GcpSecretManagerProvider {
|
|
gcp_project_id: Some("demo-project".into()),
|
|
};
|
|
assert!(provider.validate().is_ok());
|
|
}
|
|
|
|
#[test]
|
|
fn test_gcp_provider_missing_project() {
|
|
let provider = GcpSecretManagerProvider {
|
|
gcp_project_id: None,
|
|
};
|
|
assert!(provider.validate().is_err());
|
|
}
|
|
|
|
#[test]
|
|
fn test_supported_provider_display_and_validate() {
|
|
let sp = SupportedProvider::GcpSecretManager {
|
|
provider_def: GcpSecretManagerProvider {
|
|
gcp_project_id: Some("prod-123".into()),
|
|
},
|
|
};
|
|
// Validate delegates to inner provider
|
|
assert!(sp.validate().is_ok());
|
|
// Display string for this variant
|
|
assert_eq!(sp.to_string(), "gcp_secret_manager");
|
|
}
|
|
|
|
#[test]
|
|
fn test_provider_config_with_gcp_deserialize_and_extract() {
|
|
// Minimal ProviderConfig YAML using the gcp_secret_manager variant
|
|
let yaml = r#"---
|
|
name: gcp
|
|
type: gcp_secret_manager
|
|
gcp_project_id: my-project
|
|
"#;
|
|
|
|
let pc: ProviderConfig = serde_yaml::from_str(yaml).expect("valid provider config yaml");
|
|
assert!(pc.validate().is_ok());
|
|
|
|
let mut pc_owned = pc.clone();
|
|
let provider: &mut dyn SecretProvider = pc_owned.extract_provider();
|
|
assert_eq!(provider.name(), "GcpSecretManagerProvider");
|
|
|
|
// Round-trip through Config with default_provider
|
|
let cfg_yaml = r#"---
|
|
default_provider: gcp
|
|
providers:
|
|
- name: gcp
|
|
type: gcp_secret_manager
|
|
gcp_project_id: my-project
|
|
"#;
|
|
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("gcp"));
|
|
}
|