refactor: Refactor configuration structs directly into the provider definition to simplify validation, structs, and future extensions

This commit is contained in:
2025-09-12 15:37:17 -06:00
parent cb1a97471f
commit 9d8fa17dde
13 changed files with 1535 additions and 347 deletions
+47 -12
View File
@@ -1,21 +1,56 @@
use gman::providers::local::LocalProviderConfig;
use gman::config::Config;
use gman::providers::local::LocalProvider;
use pretty_assertions::assert_eq;
use pretty_assertions::assert_str_eq;
#[test]
fn test_local_provider_config_default() {
let config = LocalProviderConfig::default();
let expected_path = dirs::home_dir()
.map(|p| p.join(".gman_vault"))
.and_then(|p| p.to_str().map(|s| s.to_string()))
.unwrap_or_else(|| ".gman_vault".into());
assert_str_eq!(config.vault_path, expected_path);
}
use validator::Validate;
#[test]
fn test_local_provider_name() {
use gman::providers::SecretProvider;
use gman::providers::local::LocalProvider;
let provider = LocalProvider;
let provider = LocalProvider::default();
assert_str_eq!(provider.name(), "LocalProvider");
}
#[test]
fn test_local_provider_valid() {
let provider = LocalProvider {
password_file: None,
git_branch: None,
git_remote_url: None,
git_user_name: None,
git_user_email: Some("test@example.com".to_string()),
git_executable: None,
};
assert!(provider.validate().is_ok());
}
#[test]
fn test_local_provider_invalid_email() {
let config = LocalProvider {
password_file: None,
git_branch: None,
git_remote_url: None,
git_user_name: None,
git_user_email: Some("test".to_string()),
git_executable: None,
};
assert!(config.validate().is_err());
}
#[test]
fn test_local_provider_default() {
let provider = LocalProvider::default();
assert_eq!(
provider.password_file,
Config::local_provider_password_file()
);
assert_eq!(provider.git_branch, Some("main".into()));
assert_eq!(provider.git_remote_url, None);
assert_eq!(provider.git_user_name, None);
assert_eq!(provider.git_user_email, None);
assert_eq!(provider.git_executable, None);
}