mirror of
https://github.com/OpenHands/OpenHands.git
synced 2025-12-26 05:48:36 +08:00
CLI: add unit test for default agent (#11562)
Co-authored-by: openhands <openhands@all-hands.dev>
This commit is contained in:
parent
704fc6dd69
commit
ca2c9546ad
@ -0,0 +1,104 @@
|
||||
"""Test that first-time settings screen usage creates a default agent with security analyzer."""
|
||||
|
||||
from unittest.mock import patch
|
||||
import pytest
|
||||
from openhands_cli.tui.settings.settings_screen import SettingsScreen
|
||||
from openhands_cli.user_actions.settings_action import SettingsType
|
||||
from openhands.sdk import LLM
|
||||
from pydantic import SecretStr
|
||||
|
||||
|
||||
def test_first_time_settings_creates_default_agent_with_security_analyzer():
|
||||
"""Test that using the settings screen for the first time creates a default agent with a non-None security analyzer."""
|
||||
|
||||
# Create a settings screen instance (no conversation initially)
|
||||
screen = SettingsScreen(conversation=None)
|
||||
|
||||
# Mock all the user interaction steps to simulate first-time setup
|
||||
with (
|
||||
patch(
|
||||
'openhands_cli.tui.settings.settings_screen.settings_type_confirmation',
|
||||
return_value=SettingsType.BASIC,
|
||||
),
|
||||
patch(
|
||||
'openhands_cli.tui.settings.settings_screen.choose_llm_provider',
|
||||
return_value='openai',
|
||||
),
|
||||
patch(
|
||||
'openhands_cli.tui.settings.settings_screen.choose_llm_model',
|
||||
return_value='gpt-4o-mini',
|
||||
),
|
||||
patch(
|
||||
'openhands_cli.tui.settings.settings_screen.prompt_api_key',
|
||||
return_value='sk-test-key-123',
|
||||
),
|
||||
patch(
|
||||
'openhands_cli.tui.settings.settings_screen.save_settings_confirmation',
|
||||
return_value=True,
|
||||
),
|
||||
):
|
||||
# Run the settings configuration workflow
|
||||
screen.configure_settings(first_time=True)
|
||||
|
||||
# Load the saved agent from the store
|
||||
saved_agent = screen.agent_store.load()
|
||||
|
||||
# Verify that an agent was created and saved
|
||||
assert saved_agent is not None, "Agent should be created and saved after first-time settings configuration"
|
||||
|
||||
# Verify that the agent has the expected LLM configuration
|
||||
assert saved_agent.llm.model == 'openai/gpt-4o-mini', f"Expected model 'openai/gpt-4o-mini', got '{saved_agent.llm.model}'"
|
||||
assert saved_agent.llm.api_key.get_secret_value() == 'sk-test-key-123', "API key should match the provided value"
|
||||
|
||||
# Verify that the agent has a security analyzer and it's not None
|
||||
assert hasattr(saved_agent, 'security_analyzer'), "Agent should have a security_analyzer attribute"
|
||||
assert saved_agent.security_analyzer is not None, "Security analyzer should not be None"
|
||||
|
||||
# Verify the security analyzer has the expected type/kind
|
||||
assert hasattr(saved_agent.security_analyzer, 'kind'), "Security analyzer should have a 'kind' attribute"
|
||||
assert saved_agent.security_analyzer.kind == 'LLMSecurityAnalyzer', f"Expected security analyzer kind 'LLMSecurityAnalyzer', got '{saved_agent.security_analyzer.kind}'"
|
||||
|
||||
|
||||
def test_first_time_settings_with_advanced_configuration():
|
||||
"""Test that advanced settings also create a default agent with security analyzer."""
|
||||
|
||||
screen = SettingsScreen(conversation=None)
|
||||
|
||||
with (
|
||||
patch(
|
||||
'openhands_cli.tui.settings.settings_screen.settings_type_confirmation',
|
||||
return_value=SettingsType.ADVANCED,
|
||||
),
|
||||
patch(
|
||||
'openhands_cli.tui.settings.settings_screen.prompt_custom_model',
|
||||
return_value='anthropic/claude-3-5-sonnet',
|
||||
),
|
||||
patch(
|
||||
'openhands_cli.tui.settings.settings_screen.prompt_base_url',
|
||||
return_value='https://api.anthropic.com',
|
||||
),
|
||||
patch(
|
||||
'openhands_cli.tui.settings.settings_screen.prompt_api_key',
|
||||
return_value='sk-ant-test-key',
|
||||
),
|
||||
patch(
|
||||
'openhands_cli.tui.settings.settings_screen.choose_memory_condensation',
|
||||
return_value=True,
|
||||
),
|
||||
patch(
|
||||
'openhands_cli.tui.settings.settings_screen.save_settings_confirmation',
|
||||
return_value=True,
|
||||
),
|
||||
):
|
||||
screen.configure_settings(first_time=True)
|
||||
|
||||
saved_agent = screen.agent_store.load()
|
||||
|
||||
# Verify agent creation and security analyzer
|
||||
assert saved_agent is not None, "Agent should be created with advanced settings"
|
||||
assert saved_agent.security_analyzer is not None, "Security analyzer should not be None in advanced settings"
|
||||
assert saved_agent.security_analyzer.kind == 'LLMSecurityAnalyzer', "Security analyzer should be LLMSecurityAnalyzer"
|
||||
|
||||
# Verify advanced settings were applied
|
||||
assert saved_agent.llm.model == 'anthropic/claude-3-5-sonnet', "Custom model should be set"
|
||||
assert saved_agent.llm.base_url == 'https://api.anthropic.com', "Base URL should be set"
|
||||
Loading…
x
Reference in New Issue
Block a user