"""Tests for configuration tools."""
from unittest.mock import patch, MagicMock
import pytest
from bitbucket_mcp.tools import config as _mod
setup_bitbucket = _mod.setup_bitbucket.fn
get_config_status = _mod.get_config_status.fn
from tests.conftest import make_mock_response
class TestSetupBitbucket:
@patch("bitbucket_mcp.tools.config.httpx.Client")
def test_success(self, MockClient, mock_config):
client = MagicMock()
MockClient.return_value.__enter__ = MagicMock(return_value=client)
MockClient.return_value.__exit__ = MagicMock(return_value=False)
client.get.side_effect = [
make_mock_response(200, {"username": "user"}), # /user
make_mock_response(200, {"slug": "ws"}), # /workspaces/ws
]
result = setup_bitbucket("ws", "user@test.com", "token123")
assert "Successfully configured" in result
assert "ws" in result
@patch("bitbucket_mcp.tools.config.httpx.Client")
def test_invalid_credentials(self, MockClient):
client = MagicMock()
MockClient.return_value.__enter__ = MagicMock(return_value=client)
MockClient.return_value.__exit__ = MagicMock(return_value=False)
client.get.return_value = make_mock_response(401)
result = setup_bitbucket("ws", "user@test.com", "bad-token")
assert "Invalid credentials" in result
@patch("bitbucket_mcp.tools.config.httpx.Client")
def test_workspace_not_found(self, MockClient):
client = MagicMock()
MockClient.return_value.__enter__ = MagicMock(return_value=client)
MockClient.return_value.__exit__ = MagicMock(return_value=False)
client.get.side_effect = [
make_mock_response(200, {"username": "user"}),
make_mock_response(404),
]
result = setup_bitbucket("bad-ws", "user@test.com", "token123")
assert "not found" in result
class TestGetConfigStatus:
def test_not_configured(self):
result = get_config_status()
assert result["configured"] is False
def test_configured_from_file(self, saved_config):
result = get_config_status()
assert result["configured"] is True
assert result["workspace"] == "test-workspace"
assert result["username"] == "test@example.com"
assert result["source"] == "config_file"
def test_configured_from_env(self, monkeypatch):
monkeypatch.setenv("BITBUCKET_API_TOKEN", "tok")
monkeypatch.setenv("BITBUCKET_USERNAME", "user")
monkeypatch.setenv("BITBUCKET_WORKSPACE", "ws")
result = get_config_status()
assert result["configured"] is True
assert result["source"] == "environment"