# Testcontainers Integration (.NET xUnit) ## Module __Tests ## Status VERIFIED ## Description Testcontainers used for Postgres integration fixtures, router chaos testing, and OCI registry testing with multiple container types. ## Implementation Details - **PostgreSQL Integration Fixture**: `src/__Tests/__Libraries/StellaOps.Infrastructure.Postgres.Testing/PostgresIntegrationFixture.cs` -- Testcontainers-based PostgreSQL fixture that spins up an ephemeral Postgres container for integration tests; manages connection strings, schema migrations, and container lifecycle. - **Migration Test Attribute**: `src/__Tests/__Libraries/StellaOps.Infrastructure.Postgres.Testing/MigrationTestAttribute.cs` -- xUnit attribute that marks tests requiring a database container, ensuring proper fixture setup and teardown. - **OCI Distribution Registry Container**: `src/__Tests/__Libraries/StellaOps.Infrastructure.Registry.Testing/DistributionRegistryContainer.cs` -- Testcontainers wrapper for the Docker Distribution (registry:2) container used in OCI push/pull integration tests. - **Zot Registry Container**: `src/__Tests/__Libraries/StellaOps.Infrastructure.Registry.Testing/ZotRegistryContainer.cs` -- Testcontainers wrapper for the Zot OCI registry, testing compatibility with alternative registry implementations. - **Harbor Registry Container**: `src/__Tests/__Libraries/StellaOps.Infrastructure.Registry.Testing/HarborRegistryContainer.cs` -- Testcontainers wrapper for Harbor registry, testing enterprise registry features (replication, scanning, RBAC). - **Schema Evolution Test Base**: `src/__Tests/__Libraries/StellaOps.Testing.SchemaEvolution/PostgresSchemaEvolutionTestBase.cs` -- abstract test base that uses Testcontainers PostgreSQL for running schema migration forward/backward compatibility tests. - **Network Isolated Test Base**: `src/__Tests/__Libraries/StellaOps.Testing.AirGap/NetworkIsolatedTestBase.cs` -- Testcontainers-based test base that creates network-isolated containers for air-gap scenario testing. ## E2E Test Plan - [ ] Start a `PostgresIntegrationFixture`, run a migration, insert test data, query it back, and verify the container is properly cleaned up after the test completes - [ ] Start a `DistributionRegistryContainer`, push an OCI image, pull it back, and verify the image digest matches - [ ] Start a `ZotRegistryContainer`, push an OCI artifact, and verify Zot-specific API compatibility (catalog, tags list) - [ ] Start a `HarborRegistryContainer`, push an image, and verify Harbor-specific endpoints (projects, repositories) are accessible - [ ] Run a `PostgresSchemaEvolutionTestBase` subclass, apply migrations forward and backward, and verify the Testcontainers Postgres instance is properly provisioned and torn down - [ ] Run two Testcontainers-based tests in parallel (e.g., Postgres + OCI registry) and verify no port conflicts or container name collisions occur - [ ] Verify `NetworkIsolatedTestBase` creates a container with no external network access by attempting an outbound HTTP request and confirming it fails ## Verification - Verified on 2026-02-13 via `run-001`. - Tier 0: Source files confirmed present on disk. - Tier 1: `dotnet build` passed (0 errors); 266/266 tests passed across Chaos.Tests, Evidence.Tests, Replay.Tests, FixtureTests. - Tier 2d: `docs/qa/feature-checks/runs/tests/testcontainers-integration/run-001/tier2-integration-check.json`