Files
OSIT-AE-API-FastAPI/tests
Scott Idem 6ca79e9a02 chore(api): stabilize SQL core and enhance searchability
- Refactor SQL CRUD to use engine.connect() context managers for thread safety
- Optimize connection pooling in lib_sql_core
- Clean up app/routers/api.py to fix duplicate definitions and OpenAPI KeyError
- Add 'default_qry_str' to searchable_fields for Event, Session, Presentation, Presenter, Badge, and Journal
- Add 'event_location_name' to searchable_fields for Event Session
- Verified 20/20 E2E success via repro_intermittent_errors.py
2026-01-21 15:23:04 -05:00
..

Aether API Test Suite

This directory contains the automated and manual test scripts for the Aether FastAPI backend. The suite is organized by execution environment and scope to ensure a reliable development workflow.

📁 Directory Structure

  • unit/: Isolated logic tests. These use heavy mocking to bypass database and network requirements. Fast and safe to run in any environment.
  • integration/: Local environment tests. These require a connection to the local MariaDB/Redis instance and verify how components interact.
  • e2e/ (End-to-End): Network-based API tests. these use the requests library to call the live API endpoints at https://dev-api.oneskyit.com.
  • tools/: Utility scripts for administrative tasks like registry generation or Docker exploration.
  • archive/: Legacy or deprecated scripts kept for historical reference.

🛠️ Shared Helpers

  • mock_config_helper.py: A critical utility that mocks app.config.settings before other modules are imported. Use this in unit tests to prevent the application from trying to load real configuration files during import.

📜 Script Inventory

Unit Tests (tests/unit/)

Script Description
test_unit_email.py Unit tests for email logic with full SMTP mocking.
test_unit_email_safe.py Secondary safe-mode email verification logic.
test_unit_errors.py Verifies the regex-based SQL error string cleanup logic.
test_unit_filtering.py Ensures virtual/view fields are correctly marked for DB exclusion.
test_unit_models.py Validates custom Pydantic validators (e.g., Person given_name).
test_unit_payload_sanitization.py Primary Logic Test: Verifies payload stripping and ID resolution.
test_unit_router_stripping.py Simulates automatic removal of random IDs during updates.
test_unit_schema_logic.py Verifies V3 schema metadata extraction logic with mocked DB rows.

Integration Tests (tests/integration/)

Script Description
test_int_boot_diagnosis.py Progressively imports modules to identify circular dependency traps.
test_int_db_connectivity.py Direct SQLAlchemy connectivity test (bypasses app config).
test_int_email_live.py Live SMTP connection test (non-mocked).
test_int_import_verification.py Basic check that all V3 routers are reachable.
test_int_schema_v3.py Verifies the enhanced schema discovery output against the real DB.
test_int_v3_auth_security.py Uses TestClient to verify auth bypass rules (Site vs Account).

E2E Tests (tests/e2e/)

Script Description
test_e2e_agent_bridge.py Verifies the /agent diagnostics and log streaming endpoints.
test_e2e_jwt_guest_auth.py Security Test: Verifies safe guest token minting and whitelisted access.
test_e2e_legacy_remote_schema.py Remote check for legacy schema compatibility.
test_e2e_site_bootstrap.py Verifies the unauthenticated FQDN lookup for site initialization.
test_e2e_v3_accounts.py CRUD verification for the Account object via network.
test_e2e_v3_extra_filters.py Tests complex filtering (enabled/all) on User and Site objects.
test_e2e_v3_schema.py Validates the V3 /schema endpoint over the network.
test_e2e_v3_search.py Primary API Test: Verifies all search operators and JWT auth.
test_e2e_v3_security_exceptions.py Validates that restricted routes correctly return 403 Forbidden.

Tools (tests/tools/)

Script Description
tool_generate_registry.py Exports the Aether object registry (obj_type_kv_li) as JSON.
tool_mcp_docker_explorer.py Model Context Protocol tool for Docker container inspection.

🚀 How to Run

./environment/bin/python3 tests/unit/test_unit_payload_sanitization.py

Path Requirements

Always run test scripts from the project root directory. Most scripts include sys.path.append(os.getcwd()) to ensure local imports work correctly.