mirror of
https://github.com/OpenHands/OpenHands.git
synced 2025-12-25 21:36:52 +08:00
57 lines
2.1 KiB
Python
57 lines
2.1 KiB
Python
"""Test for API key preservation bug when updating settings."""
|
|
|
|
from unittest.mock import patch
|
|
import pytest
|
|
from pydantic import SecretStr
|
|
|
|
from openhands_cli.user_actions.settings_action import prompt_api_key
|
|
from openhands_cli.tui.utils import StepCounter
|
|
|
|
|
|
def test_api_key_preservation_when_user_presses_enter():
|
|
"""Test that API key is preserved when user presses ENTER to keep current key.
|
|
|
|
This test replicates the bug where API keys disappear when updating settings.
|
|
When a user presses ENTER to keep the current API key, the function should
|
|
return the existing API key, not an empty string.
|
|
"""
|
|
step_counter = StepCounter(1)
|
|
existing_api_key = SecretStr("sk-existing-key-123")
|
|
|
|
# Mock cli_text_input to return empty string (simulating user pressing ENTER)
|
|
with patch('openhands_cli.user_actions.settings_action.cli_text_input', return_value=''):
|
|
result = prompt_api_key(
|
|
step_counter=step_counter,
|
|
provider='openai',
|
|
existing_api_key=existing_api_key,
|
|
escapable=True
|
|
)
|
|
|
|
# The bug: result is empty string instead of the existing key
|
|
# This test will fail initially, demonstrating the bug
|
|
assert result == existing_api_key.get_secret_value(), (
|
|
f"Expected existing API key '{existing_api_key.get_secret_value()}' "
|
|
f"but got '{result}'. API key should be preserved when user presses ENTER."
|
|
)
|
|
|
|
|
|
def test_api_key_update_when_user_enters_new_key():
|
|
"""Test that API key is updated when user enters a new key."""
|
|
step_counter = StepCounter(1)
|
|
existing_api_key = SecretStr("sk-existing-key-123")
|
|
new_api_key = "sk-new-key-456"
|
|
|
|
# Mock cli_text_input to return new API key
|
|
with patch('openhands_cli.user_actions.settings_action.cli_text_input', return_value=new_api_key):
|
|
result = prompt_api_key(
|
|
step_counter=step_counter,
|
|
provider='openai',
|
|
existing_api_key=existing_api_key,
|
|
escapable=True
|
|
)
|
|
|
|
# Should return the new API key
|
|
assert result == new_api_key
|
|
|
|
|