feat: Added 1password support
Check / stable / fmt (push) Has been cancelled
Check / beta / clippy (push) Has been cancelled
Check / stable / clippy (push) Has been cancelled
Check / nightly / doc (push) Has been cancelled
Check / 1.89.0 / check (push) Has been cancelled
Test Suite / ubuntu / beta (push) Has been cancelled
Test Suite / ubuntu / stable (push) Has been cancelled
Test Suite / macos-latest / stable (push) Has been cancelled
Test Suite / windows-latest / stable (push) Has been cancelled
Test Suite / ubuntu / stable / coverage (push) Has been cancelled
Check / stable / fmt (push) Has been cancelled
Check / beta / clippy (push) Has been cancelled
Check / stable / clippy (push) Has been cancelled
Check / nightly / doc (push) Has been cancelled
Check / 1.89.0 / check (push) Has been cancelled
Test Suite / ubuntu / beta (push) Has been cancelled
Test Suite / ubuntu / stable (push) Has been cancelled
Test Suite / macos-latest / stable (push) Has been cancelled
Test Suite / windows-latest / stable (push) Has been cancelled
Test Suite / ubuntu / stable / coverage (push) Has been cancelled
This commit is contained in:
@@ -3,4 +3,5 @@ mod azure_key_vault_tests;
|
||||
mod gcp_secret_manager_tests;
|
||||
mod gopass_tests;
|
||||
mod local_tests;
|
||||
mod one_password_tests;
|
||||
mod provider_tests;
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
use gman::config::{Config, ProviderConfig};
|
||||
use gman::providers::{SecretProvider, SupportedProvider};
|
||||
use pretty_assertions::{assert_eq, assert_str_eq};
|
||||
use validator::Validate;
|
||||
|
||||
#[test]
|
||||
fn test_one_password_supported_provider_display_and_validate_from_yaml() {
|
||||
let yaml = r#"---
|
||||
type: one_password
|
||||
vault: Production
|
||||
account: my.1password.com
|
||||
"#;
|
||||
|
||||
let sp: SupportedProvider = serde_yaml::from_str(yaml).expect("valid supported provider yaml");
|
||||
assert!(sp.validate().is_ok());
|
||||
assert_eq!(sp.to_string(), "one_password");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_one_password_supported_provider_minimal_yaml() {
|
||||
let yaml = r#"---
|
||||
type: one_password
|
||||
"#;
|
||||
|
||||
let sp: SupportedProvider = serde_yaml::from_str(yaml).expect("valid supported provider yaml");
|
||||
assert!(sp.validate().is_ok());
|
||||
assert_eq!(sp.to_string(), "one_password");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_one_password_supported_provider_vault_only() {
|
||||
let yaml = r#"---
|
||||
type: one_password
|
||||
vault: Personal
|
||||
"#;
|
||||
|
||||
let sp: SupportedProvider = serde_yaml::from_str(yaml).expect("valid supported provider yaml");
|
||||
assert!(sp.validate().is_ok());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_one_password_supported_provider_account_only() {
|
||||
let yaml = r#"---
|
||||
type: one_password
|
||||
account: team.1password.com
|
||||
"#;
|
||||
|
||||
let sp: SupportedProvider = serde_yaml::from_str(yaml).expect("valid supported provider yaml");
|
||||
assert!(sp.validate().is_ok());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_one_password_supported_provider_rejects_unknown_fields() {
|
||||
let yaml = r#"---
|
||||
type: one_password
|
||||
vault: Production
|
||||
unknown_field: bad
|
||||
"#;
|
||||
|
||||
let result: Result<SupportedProvider, _> = serde_yaml::from_str(yaml);
|
||||
assert!(result.is_err());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_provider_config_with_one_password_deserialize_and_extract() {
|
||||
let yaml = r#"---
|
||||
name: op
|
||||
type: one_password
|
||||
"#;
|
||||
|
||||
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_str_eq!(provider.name(), "OnePasswordProvider");
|
||||
|
||||
let cfg_yaml = r#"---
|
||||
default_provider: op
|
||||
providers:
|
||||
- name: op
|
||||
type: one_password
|
||||
vault: Production
|
||||
account: my.1password.com
|
||||
"#;
|
||||
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("op"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_one_password_config_with_multiple_providers() {
|
||||
let cfg_yaml = r#"---
|
||||
default_provider: local
|
||||
providers:
|
||||
- name: local
|
||||
type: local
|
||||
- name: op
|
||||
type: one_password
|
||||
vault: Production
|
||||
"#;
|
||||
let cfg: Config = serde_yaml::from_str(cfg_yaml).expect("valid config yaml");
|
||||
assert!(cfg.validate().is_ok());
|
||||
|
||||
let extracted = cfg
|
||||
.extract_provider_config(Some("op".into()))
|
||||
.expect("should find op provider");
|
||||
assert_eq!(extracted.name.as_deref(), Some("op"));
|
||||
}
|
||||
Reference in New Issue
Block a user