feat: Full AWS SecretsManager support
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
use gman::config::Config;
|
||||
use gman::config::{Config, ProviderConfig};
|
||||
use gman::providers::local::LocalProvider;
|
||||
use gman::providers::{SecretProvider, SupportedProvider};
|
||||
use pretty_assertions::assert_eq;
|
||||
use pretty_assertions::assert_str_eq;
|
||||
use validator::Validate;
|
||||
@@ -13,6 +14,17 @@ fn test_local_provider_name() {
|
||||
assert_str_eq!(provider.name(), "LocalProvider");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_local_provider_display_and_validate() {
|
||||
let sp = SupportedProvider::Local {
|
||||
provider_def: LocalProvider::default(),
|
||||
};
|
||||
// Validate delegates to inner provider
|
||||
assert!(sp.validate().is_ok());
|
||||
// Display formatting for the enum variant
|
||||
assert_eq!(sp.to_string(), "local");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_local_provider_valid() {
|
||||
let provider = LocalProvider {
|
||||
@@ -54,3 +66,37 @@ fn test_local_provider_default() {
|
||||
assert_eq!(provider.git_user_email, None);
|
||||
assert_eq!(provider.git_executable, None);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_provider_config_with_local_deserialize_and_extract() {
|
||||
// Minimal ProviderConfig YAML using the local variant
|
||||
let yaml = r#"---
|
||||
name: local
|
||||
type: local
|
||||
"#;
|
||||
|
||||
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(), "LocalProvider");
|
||||
|
||||
// Round-trip through Config to ensure flattening works in a real list
|
||||
let cfg_yaml = r#"---
|
||||
default_provider: local
|
||||
providers:
|
||||
- name: local
|
||||
type: local
|
||||
password_file: /tmp/.gman_pass
|
||||
git_branch: main
|
||||
git_remote_url: git@github.com:username/repo.git
|
||||
"#;
|
||||
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("local"));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user