Skip to main content
Glama
test_credentials.py3.83 kB
"""Tests for credential management.""" import os import pytest from unittest.mock import patch, MagicMock from ssh_mcp_server.credentials import ( EnvironmentProvider, MacOSKeychainProvider, CredentialManager ) class TestEnvironmentProvider: """Test environment variable credential provider.""" def test_get_credentials_success(self): """Test successful credential retrieval from environment.""" provider = EnvironmentProvider() with patch.dict(os.environ, { 'SSH_USERNAME_VOCUS_LOCAL': 'testuser', 'SSH_PASSWORD_VOCUS_LOCAL': 'testpass' }): credentials = provider.get_credentials('vocus.local') assert credentials == ('testuser', 'testpass') def test_get_credentials_missing(self): """Test credential retrieval when variables are missing.""" provider = EnvironmentProvider() credentials = provider.get_credentials('nonexistent.domain') assert credentials is None def test_test_credentials_available(self): """Test credential availability check.""" provider = EnvironmentProvider() with patch.dict(os.environ, { 'SSH_USERNAME_VOCUS_LOCAL': 'testuser', 'SSH_PASSWORD_VOCUS_LOCAL': 'testpass' }): assert provider.test_credentials_available('host.vocus.local') is True assert provider.test_credentials_available('host.other.domain') is False class TestMacOSKeychainProvider: """Test macOS Keychain credential provider.""" def test_get_domain_from_hostname(self): """Test domain extraction from hostname.""" assert MacOSKeychainProvider.get_domain_from_hostname('host.vocus.local') == 'vocus.local' assert MacOSKeychainProvider.get_domain_from_hostname('server.retail.local') == 'retail.local' assert MacOSKeychainProvider.get_domain_from_hostname('simple') == 'simple' @patch('subprocess.run') def test_get_credentials_success(self, mock_run): """Test successful credential retrieval from keychain.""" provider = MacOSKeychainProvider() # Mock successful subprocess calls mock_run.side_effect = [ MagicMock(returncode=0, stdout='testuser\n'), # username MagicMock(returncode=0, stdout='testpass\n') # password ] credentials = provider.get_credentials('vocus.local') assert credentials == ('testuser', 'testpass') @patch('subprocess.run') def test_get_credentials_failure(self, mock_run): """Test credential retrieval failure.""" provider = MacOSKeychainProvider() # Mock failed subprocess call mock_run.return_value = MagicMock(returncode=1) credentials = provider.get_credentials('vocus.local') assert credentials is None class TestCredentialManager: """Test credential manager.""" def test_initialization(self): """Test credential manager initialization.""" manager = CredentialManager() assert len(manager.providers) >= 1 # At least environment provider @patch.dict(os.environ, { 'SSH_USERNAME_VOCUS_LOCAL': 'testuser', 'SSH_PASSWORD_VOCUS_LOCAL': 'testpass' }) def test_get_credentials(self): """Test credential retrieval through manager.""" manager = CredentialManager() credentials = manager.get_credentials('vocus.local') assert credentials == ('testuser', 'testpass') def test_get_credentials_none_available(self): """Test credential retrieval when none available.""" manager = CredentialManager() credentials = manager.get_credentials('nonexistent.domain') assert credentials is None

Latest Blog Posts

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/rorymcmahon/ssh-mcp-server'

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