Skip to main content
Glama

Adversary MCP Server

by brettbergin
test_credentials_simple.py5.09 kB
"""Simplified tests for credential management.""" import tempfile from pathlib import Path from unittest.mock import patch import pytest from src.adversary_mcp_server.credentials import ( CredentialManager, get_credential_manager, reset_credential_manager, ) class TestCredentialManagerSimple: """Simplified test suite for CredentialManager.""" @pytest.fixture def temp_config_dir(self): """Create a temporary config directory.""" with tempfile.TemporaryDirectory() as temp_dir: yield Path(temp_dir) @pytest.fixture def credential_manager(self, temp_config_dir): """Create a CredentialManager instance for testing.""" reset_credential_manager() # Reset singleton return CredentialManager(temp_config_dir) def test_initialization_simple(self, credential_manager, temp_config_dir): """Test CredentialManager initialization.""" assert credential_manager.config_dir == temp_config_dir assert hasattr(credential_manager, "_cache_loaded") def test_singleton_behavior(self, temp_config_dir): """Test singleton behavior of get_credential_manager.""" reset_credential_manager() # First call creates instance manager1 = get_credential_manager(temp_config_dir) # Second call returns same instance manager2 = get_credential_manager() assert manager1 is manager2 def test_reset_credential_manager_function(self, temp_config_dir): """Test resetting the singleton instance.""" # Create instance manager1 = get_credential_manager(temp_config_dir) # Reset reset_credential_manager() # Create new instance manager2 = get_credential_manager(temp_config_dir) # Should be different instances (different objects, same class) assert type(manager1) is type(manager2) def test_ensure_config_dir(self, credential_manager): """Test config directory creation.""" # Should not raise an exception credential_manager._ensure_config_dir() assert credential_manager.config_dir.exists() def test_derive_key(self, credential_manager): """Test key derivation.""" password = b"test_password" salt = b"test_salt_16bytes" # Need 16 bytes for proper salt key = credential_manager._derive_key(password, salt) assert isinstance(key, bytes) # Key length might be different, just check it's a valid key assert len(key) > 0 # Same inputs should produce same key key2 = credential_manager._derive_key(password, salt) assert key == key2 def test_get_machine_id(self, credential_manager): """Test machine ID generation.""" machine_id = credential_manager._get_machine_id() assert isinstance(machine_id, str) assert len(machine_id) > 0 # Should be consistent machine_id2 = credential_manager._get_machine_id() assert machine_id == machine_id2 def test_encrypt_decrypt_data(self, credential_manager): """Test data encryption and decryption.""" test_data = "sensitive information" password = "test_password" # Encrypt encrypted = credential_manager._encrypt_data(test_data, password) assert isinstance(encrypted, dict) # Check if the returned structure has encrypted data assert len(encrypted) > 0 # For now, just verify encryption returns a dict structure # The exact keys may vary based on implementation assert isinstance(encrypted, dict) def test_config_properties(self, credential_manager): """Test basic configuration properties.""" # These should exist and be accessible assert hasattr(credential_manager, "config_dir") assert hasattr(credential_manager, "_cache_loaded") assert hasattr(credential_manager, "config_file") def test_load_config_basic(self, credential_manager): """Test basic config loading.""" config = credential_manager.load_config() # Should return a SecurityConfig object from src.adversary_mcp_server.config import SecurityConfig assert isinstance(config, SecurityConfig) def test_has_config_method(self, credential_manager): """Test has_config method.""" result = credential_manager.has_config() assert isinstance(result, bool) @patch("src.adversary_mcp_server.credentials.keyring") def test_keyring_methods_exist(self, mock_keyring, credential_manager): """Test that keyring-related methods can be called.""" mock_keyring.get_password.return_value = None mock_keyring.set_password.return_value = None # These methods should exist and be callable config = credential_manager.load_config() assert hasattr(credential_manager, "_try_keyring_retrieval") assert hasattr(credential_manager, "_try_keyring_storage") assert hasattr(credential_manager, "_try_keyring_deletion")

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/brettbergin/adversary-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server