Spaces:
Build error
Build error
from unittest.mock import MagicMock, patch | |
import pytest | |
from openhands.core.config.openhands_config import OpenHandsConfig | |
from openhands.storage.data_models.settings import Settings | |
from openhands.storage.files import FileStore | |
from openhands.storage.settings.file_settings_store import FileSettingsStore | |
def mock_file_store(): | |
return MagicMock(spec=FileStore) | |
def file_settings_store(mock_file_store): | |
return FileSettingsStore(mock_file_store) | |
async def test_load_nonexistent_data(file_settings_store): | |
with patch( | |
'openhands.storage.data_models.settings.load_openhands_config', | |
MagicMock(return_value=OpenHandsConfig()), | |
): | |
file_settings_store.file_store.read.side_effect = FileNotFoundError() | |
assert await file_settings_store.load() is None | |
async def test_store_and_load_data(file_settings_store): | |
# Test data | |
init_data = Settings( | |
language='python', | |
agent='test-agent', | |
max_iterations=100, | |
security_analyzer='default', | |
confirmation_mode=True, | |
llm_model='test-model', | |
llm_api_key='test-key', | |
llm_base_url='https://test.com', | |
) | |
# Store data | |
await file_settings_store.store(init_data) | |
# Verify store called with correct JSON | |
expected_json = init_data.model_dump_json(context={'expose_secrets': True}) | |
file_settings_store.file_store.write.assert_called_once_with( | |
'settings.json', expected_json | |
) | |
# Setup mock for load | |
file_settings_store.file_store.read.return_value = expected_json | |
# Load and verify data | |
loaded_data = await file_settings_store.load() | |
assert loaded_data is not None | |
assert loaded_data.language == init_data.language | |
assert loaded_data.agent == init_data.agent | |
assert loaded_data.max_iterations == init_data.max_iterations | |
assert loaded_data.security_analyzer == init_data.security_analyzer | |
assert loaded_data.confirmation_mode == init_data.confirmation_mode | |
assert loaded_data.llm_model == init_data.llm_model | |
assert loaded_data.llm_api_key | |
assert init_data.llm_api_key | |
assert ( | |
loaded_data.llm_api_key.get_secret_value() | |
== init_data.llm_api_key.get_secret_value() | |
) | |
assert loaded_data.llm_base_url == init_data.llm_base_url | |
async def test_get_instance(): | |
config = OpenHandsConfig(file_store='local', file_store_path='/test/path') | |
with patch( | |
'openhands.storage.settings.file_settings_store.get_file_store' | |
) as mock_get_store: | |
mock_store = MagicMock(spec=FileStore) | |
mock_get_store.return_value = mock_store | |
store = await FileSettingsStore.get_instance(config, None) | |
assert isinstance(store, FileSettingsStore) | |
assert store.file_store == mock_store | |
mock_get_store.assert_called_once_with('local', '/test/path', None, None) | |