test(config): Add tests for model management and permission integration

This commit is contained in:
2025-12-26 18:21:30 +01:00
parent ffe899a3c0
commit b4a4a38fec
2 changed files with 79 additions and 5 deletions

View File

@@ -99,7 +99,7 @@ impl Settings {
/// 2. Allowed tools
/// 3. Mode-based defaults
pub fn create_permission_manager(&self) -> PermissionManager {
let mode = Mode::from_str(&self.mode).unwrap_or(Mode::Plan);
let mode = self.mode.parse::<Mode>().ok().unwrap_or(Mode::Plan);
let mut pm = PermissionManager::new(mode);
// Add disallowed tools first (deny rules take precedence)
@@ -113,7 +113,7 @@ impl Settings {
/// Get the Mode enum from the mode string
pub fn get_mode(&self) -> Mode {
Mode::from_str(&self.mode).unwrap_or(Mode::Plan)
self.mode.parse::<Mode>().ok().unwrap_or(Mode::Plan)
}
/// Get the ProviderType enum from the provider string

View File

@@ -229,6 +229,80 @@ fn effective_model_respects_explicit_model() {
s.provider = "anthropic".to_string();
s.model = "claude-opus-4-20250514".to_string();
// Should use explicit model, not provider default
assert_eq!(s.get_effective_model(), "claude-opus-4-20250514");
}
// Should use explicit model, not provider default
assert_eq!(s.get_effective_model(), "claude-opus-4-20250514");
}
#[test]
fn test_get_set_model_for_provider() {
let mut s = Settings::default();
// Default fallback
assert_eq!(s.get_model_for_provider(ProviderType::Ollama), "qwen3:8b");
assert_eq!(s.get_model_for_provider(ProviderType::Anthropic), "claude-sonnet-4-20250514");
// Set specific model
s.set_model_for_provider(ProviderType::Ollama, "llama3:70b");
assert_eq!(s.get_model_for_provider(ProviderType::Ollama), "llama3:70b");
// Other provider still uses default
assert_eq!(s.get_model_for_provider(ProviderType::Anthropic), "claude-sonnet-4-20250514");
}
#[test]
fn test_permission_manager_integration() {
let mut s = Settings::default();
s.mode = "plan".to_string();
s.allowed_tools = vec!["bash:npm test*".to_string()];
s.disallowed_tools = vec!["bash:rm*".to_string()];
let pm = s.create_permission_manager();
// Allowed by list
assert_eq!(pm.check(Tool::Bash, Some("npm test")), PermissionDecision::Allow);
// Denied by list (takes precedence over mode default if matched)
assert_eq!(pm.check(Tool::Bash, Some("rm -rf /")), PermissionDecision::Deny);
// Mode default (Ask for bash in plan mode)
assert_eq!(pm.check(Tool::Bash, Some("ls -la")), PermissionDecision::Ask);
}