3.3 KiB
3.3 KiB
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
PostgresSchemaEvolutionTestBasesubclass, 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
NetworkIsolatedTestBasecreates 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 buildpassed (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