Skip to main content
Glama
test_server.py5.81 kB
"""Tests for src/server.py validation functions.""" import os import pytest from src.server import validate_limit from src.settings import CommitStatusState, MergeStrategy, PRState, Settings, clear_settings_cache class TestValidateLimit: """Tests for validate_limit function.""" def test_valid_limit_within_range(self): """Valid limit within range should be returned unchanged.""" assert validate_limit(50) == 50 assert validate_limit(1) == 1 assert validate_limit(100) == 100 def test_limit_below_minimum(self): """Limit below 1 should be clamped to 1.""" assert validate_limit(0) == 1 assert validate_limit(-1) == 1 assert validate_limit(-100) == 1 def test_limit_above_maximum(self): """Limit above max should be clamped to max.""" assert validate_limit(101) == 100 assert validate_limit(1000) == 100 assert validate_limit(999999) == 100 def test_custom_max_limit(self): """Custom max_limit should be respected.""" assert validate_limit(50, max_limit=25) == 25 assert validate_limit(10, max_limit=25) == 10 assert validate_limit(0, max_limit=25) == 1 class TestPRStateEnum: """Tests for PRState enum validation.""" def test_valid_states(self): """Valid PR states should be accepted.""" assert PRState("OPEN").value == "OPEN" assert PRState("MERGED").value == "MERGED" assert PRState("DECLINED").value == "DECLINED" assert PRState("SUPERSEDED").value == "SUPERSEDED" def test_invalid_state_raises(self): """Invalid PR state should raise ValueError.""" with pytest.raises(ValueError): PRState("INVALID") def test_case_sensitivity(self): """PR state should be case sensitive.""" with pytest.raises(ValueError): PRState("open") class TestMergeStrategyEnum: """Tests for MergeStrategy enum validation.""" def test_valid_strategies(self): """Valid merge strategies should be accepted.""" assert MergeStrategy("merge_commit").value == "merge_commit" assert MergeStrategy("squash").value == "squash" assert MergeStrategy("fast_forward").value == "fast_forward" def test_invalid_strategy_raises(self): """Invalid merge strategy should raise ValueError.""" with pytest.raises(ValueError): MergeStrategy("invalid") def test_case_sensitivity(self): """Merge strategy should be case sensitive.""" with pytest.raises(ValueError): MergeStrategy("MERGE_COMMIT") class TestCommitStatusStateEnum: """Tests for CommitStatusState enum validation.""" def test_valid_states(self): """Valid commit status states should be accepted.""" assert CommitStatusState("SUCCESSFUL").value == "SUCCESSFUL" assert CommitStatusState("FAILED").value == "FAILED" assert CommitStatusState("INPROGRESS").value == "INPROGRESS" assert CommitStatusState("STOPPED").value == "STOPPED" def test_invalid_state_raises(self): """Invalid commit status state should raise ValueError.""" with pytest.raises(ValueError): CommitStatusState("INVALID") def test_case_sensitivity(self): """Commit status state should be case sensitive.""" with pytest.raises(ValueError): CommitStatusState("successful") class TestSettingsValidation: """Tests for Settings validation.""" def test_api_timeout_default(self): """Default API timeout should be 30 seconds.""" settings = Settings( bitbucket_workspace="test", bitbucket_email="test@example.com", bitbucket_api_token="token", ) assert settings.api_timeout == 30 def test_api_timeout_custom(self): """Custom API timeout should be accepted.""" settings = Settings( bitbucket_workspace="test", bitbucket_email="test@example.com", bitbucket_api_token="token", api_timeout=60, ) assert settings.api_timeout == 60 def test_api_timeout_clamped_max(self): """API timeout should be clamped to 300 max.""" settings = Settings( bitbucket_workspace="test", bitbucket_email="test@example.com", bitbucket_api_token="token", api_timeout=500, ) assert settings.api_timeout == 300 def test_api_timeout_clamped_min(self): """API timeout should be clamped to 1 min.""" settings = Settings( bitbucket_workspace="test", bitbucket_email="test@example.com", bitbucket_api_token="token", api_timeout=0, ) assert settings.api_timeout == 1 def test_max_retries_default(self): """Default max retries should be 3.""" settings = Settings( bitbucket_workspace="test", bitbucket_email="test@example.com", bitbucket_api_token="token", ) assert settings.max_retries == 3 def test_max_retries_clamped_max(self): """Max retries should be clamped to 10.""" settings = Settings( bitbucket_workspace="test", bitbucket_email="test@example.com", bitbucket_api_token="token", max_retries=20, ) assert settings.max_retries == 10 def test_max_retries_clamped_min(self): """Max retries should be clamped to 0 minimum.""" settings = Settings( bitbucket_workspace="test", bitbucket_email="test@example.com", bitbucket_api_token="token", max_retries=-5, ) assert settings.max_retries == 0

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/JaviMaligno/mcp-server-bitbucket'

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