Commit Graph

2 Commits

  • refactor(backend): phase 3 - expand integration tests for Codex and MCP sync
    Expand test suite from 3 to 11 integration tests, adding comprehensive coverage
    for Codex dual-file atomicity and bidirectional MCP synchronization:
    
    New Codex sync tests:
    - sync_codex_provider_writes_auth_and_config: validates atomic write of auth.json
      and config.toml, plus SSOT backfill of latest toml content
    - sync_enabled_to_codex_writes_enabled_servers: MCP projection to config.toml
    - sync_enabled_to_codex_removes_servers_when_none_enabled: cleanup when all disabled
    - sync_enabled_to_codex_returns_error_on_invalid_toml: error handling for malformed TOML
    
    New Codex MCP import tests:
    - import_from_codex_adds_servers_from_mcp_servers_table: imports new servers from live config
    - import_from_codex_merges_into_existing_entries: smart merge preserving SSOT server configs
    
    New Claude MCP tests:
    - sync_claude_enabled_mcp_projects_to_user_config: enabled/disabled filtering for .claude.json
    - import_from_claude_merges_into_config: intelligent merge preserving existing configurations
    
    Expand lib.rs API exports:
    - Codex paths: get_codex_auth_path, get_codex_config_path
    - Claude MCP: get_claude_mcp_path
    - MCP sync: sync_enabled_to_claude, sync_enabled_to_codex
    - MCP import: import_from_claude, import_from_codex
    - Error type: AppError (for test assertions)
    
    Test infrastructure improvements:
    - Enhanced reset_test_fs() to clean .claude.json
    - All tests use isolated HOME directory with sequential execution via mutex
    
    Test results: 11/11 passed
    Files changed: 3 (+394/-6 lines)
    
    Next steps: Command layer integration tests and error recovery scenarios
  • refactor(backend): phase 3 - add integration tests for config sync (partial)
    Add integration test suite with isolated test environment:
    - New test file: tests/import_export_sync.rs (149 lines, 3 test cases)
      * sync_claude_provider_writes_live_settings: validates SSOT sync to live settings
      * create_backup_skips_missing_file: edge case handling for missing config
      * create_backup_generates_snapshot_file: verifies backup snapshot creation
    - Test infrastructure:
      * OnceLock-based isolated HOME directory in temp folder
      * Mutex guard to ensure sequential test execution (avoid file system race)
      * Automatic cleanup between test runs
    
    Export core APIs for testing (lib.rs):
    - AppType, MultiAppConfig, Provider (data structures)
    - get_claude_settings_path, read_json_file (config utilities)
    - create_backup, sync_current_providers_to_live (sync operations)
    - update_settings, AppSettings (settings management)
    
    Adjust visibility:
    - import_export::sync_current_providers_to_live: fn -> pub fn
    
    Update documentation:
    - Mark Phase 3 as in-progress (🚧) in BACKEND_REFACTOR_PLAN.md
    - Document current test coverage scope and pending scenarios
    
    Test results: 7/7 passed (4 unit + 3 integration)
    Build time: 0.16s
    
    Next steps:
    - Add Codex sync tests (auth.json + config.toml atomic writes)
    - Add MCP sync integration tests
    - Add end-to-end provider switching tests