Skip to main content
Glama

Adversary MCP Server

by brettbergin
test_separation_of_concerns.py4.6 kB
"""Integration tests for separation of concerns between scanners and validation.""" from datetime import UTC, datetime import pytest from adversary_mcp_server.domain.entities.scan_request import ScanRequest from adversary_mcp_server.domain.interfaces import ValidationError from adversary_mcp_server.domain.value_objects.file_path import FilePath from adversary_mcp_server.domain.value_objects.scan_context import ScanContext from adversary_mcp_server.domain.value_objects.scan_metadata import ScanMetadata class TestSeparationOfConcerns: """Test that scanners and validation can operate independently.""" @pytest.fixture def file_context(self): """Create a test file context.""" file_path = FilePath.from_string("examples/vulnerable_python.py") metadata = ScanMetadata( scan_id="test-scan-separation", scan_type="file", timestamp=datetime.now(UTC), requester="test-separation", ) return ScanContext(target_path=file_path, metadata=metadata) def test_semgrep_only_scan(self, file_context): """Test Semgrep scanning without LLM or validation.""" request = ScanRequest( context=file_context, enable_semgrep=True, enable_llm=False, enable_validation=False, ) assert request.enable_semgrep is True assert request.enable_llm is False assert request.enable_validation is False def test_llm_only_scan(self, file_context): """Test LLM scanning without Semgrep or validation.""" request = ScanRequest( context=file_context, enable_semgrep=False, enable_llm=True, enable_validation=False, ) assert request.enable_semgrep is False assert request.enable_llm is True assert request.enable_validation is False def test_semgrep_with_validation(self, file_context): """Test Semgrep scanning with validation (no LLM scanning).""" # This is the key test - validation should work with Semgrep-only results request = ScanRequest( context=file_context, enable_semgrep=True, enable_llm=False, enable_validation=True, ) assert request.enable_semgrep is True assert request.enable_llm is False assert request.enable_validation is True def test_llm_with_validation(self, file_context): """Test LLM scanning with validation.""" request = ScanRequest( context=file_context, enable_semgrep=False, enable_llm=True, enable_validation=True, ) assert request.enable_semgrep is False assert request.enable_llm is True assert request.enable_validation is True def test_both_scanners_with_validation(self, file_context): """Test both scanners with validation.""" request = ScanRequest( context=file_context, enable_semgrep=True, enable_llm=True, enable_validation=True, ) assert request.enable_semgrep is True assert request.enable_llm is True assert request.enable_validation is True def test_both_scanners_without_validation(self, file_context): """Test both scanners without validation.""" request = ScanRequest( context=file_context, enable_semgrep=True, enable_llm=True, enable_validation=False, ) assert request.enable_semgrep is True assert request.enable_llm is True assert request.enable_validation is False def test_validation_only_configuration_invalid(self, file_context): """Test that validation-only configuration is invalid (no scanners).""" with pytest.raises( ValidationError, match="At least one scanner must be enabled" ): ScanRequest( context=file_context, enable_semgrep=False, enable_llm=False, enable_validation=True, ) def test_no_scanners_no_validation_invalid(self, file_context): """Test that no scanners and no validation is invalid.""" with pytest.raises( ValidationError, match="At least one scanner must be enabled" ): ScanRequest( context=file_context, enable_semgrep=False, enable_llm=False, enable_validation=False, )

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