using System; using System.IO; using System.Threading.Tasks; using DotNet.Testcontainers.Containers.Builders; using DotNet.Testcontainers.Containers.Modules; using DotNet.Testcontainers.Containers.WaitStrategies; using Xunit; namespace INetMock.Client.IntegrationTest { public class INetMockServerFixture : IAsyncLifetime { private readonly TestcontainersContainer _inetmockContainer; public INetMockServerFixture() { _inetmockContainer = new TestcontainersBuilder() .WithImage("inetmock-root:latest") .WithCommand("serve") .WithPortBinding(80, true) .WithWaitStrategy(Wait.ForUnixContainer().UntilPortIsAvailable(80)) .WithDockerEndpoint(Environment.GetEnvironmentVariable("DOCKER_HOST") ?? "unix:///var/run/docker.sock") .WithMount(Path.GetTempPath(), "/var/run/inetmock") .WithCleanUp(true) .Build(); } public Uri SocketPath => new ($"unix://{Path.Join(Path.GetTempPath(), "inetmock.sock")}", UriKind.Absolute); public async Task InitializeAsync() { await _inetmockContainer.StartAsync(); } public async Task DisposeAsync() { await _inetmockContainer.StopAsync(); await _inetmockContainer.DisposeAsync(); } } }