Fix StaticMappingsPath in WireMockContainerBuilder (#1187)

* Fix StaticMappingsPath in WireMockContainerBuilder

* .
This commit is contained in:
Stef Heyenrath
2024-10-01 17:39:59 +02:00
committed by GitHub
parent 76ae1466cc
commit f56ecf943d
3 changed files with 22 additions and 6 deletions

View File

@@ -118,7 +118,7 @@ internal class Program
}
else
{
builder = builder.WithMappings("./examples/WireMock.Net.Console.NET6/__admin/mappings");
builder = builder.WithMappings("/workspaces/WireMock.Net/examples/WireMock.Net.Console.NET6/__admin/mappings");
}
if (image != null)

View File

@@ -1,5 +1,6 @@
// Copyright © WireMock.Net
using System;
using Docker.DotNet.Models;
using DotNet.Testcontainers.Builders;
using DotNet.Testcontainers.Configurations;
@@ -16,6 +17,8 @@ public sealed class WireMockConfiguration : ContainerConfiguration
public string? Password { get; }
public string? StaticMappingsPath { get; private set; }
public bool HasBasicAuthentication => !string.IsNullOrEmpty(Username) && !string.IsNullOrEmpty(Password);
public WireMockConfiguration(string? username = null, string? password = null)
@@ -61,5 +64,17 @@ public sealed class WireMockConfiguration : ContainerConfiguration
{
Username = BuildConfiguration.Combine(oldValue.Username, newValue.Username);
Password = BuildConfiguration.Combine(oldValue.Password, newValue.Password);
StaticMappingsPath = BuildConfiguration.Combine(oldValue.StaticMappingsPath, newValue.StaticMappingsPath);
}
/// <summary>
/// Set the StaticMappingsPath.
/// </summary>
/// <param name="path">The path which contains the StaticMappings.</param>
/// <returns><see cref="WireMockConfiguration"/> </returns>
public WireMockConfiguration WithStaticMappingsPath(string path)
{
StaticMappingsPath = path;
return this;
}
}

View File

@@ -40,7 +40,6 @@ public sealed class WireMockContainerBuilder : ContainerBuilder<WireMockContaine
});
private OSPlatform? _imageOS;
private string? _staticMappingsPath;
/// <summary>
/// Initializes a new instance of the <see cref="ContainerBuilder" /> class.
@@ -143,9 +142,11 @@ public sealed class WireMockContainerBuilder : ContainerBuilder<WireMockContaine
[PublicAPI]
public WireMockContainerBuilder WithMappings(string path, bool includeSubDirectories = false)
{
_staticMappingsPath = Guard.NotNullOrEmpty(path);
Guard.NotNullOrEmpty(path);
return WithReadStaticMappings().WithCommand($"--WatchStaticMappingsInSubdirectories {includeSubDirectories}");
return Merge(DockerResourceConfiguration, DockerResourceConfiguration.WithStaticMappingsPath(path))
.WithReadStaticMappings()
.WithCommand($"--WatchStaticMappingsInSubdirectories {includeSubDirectories}");
}
private WireMockContainerBuilder(WireMockConfiguration dockerResourceConfiguration) : base(dockerResourceConfiguration)
@@ -178,9 +179,9 @@ public sealed class WireMockContainerBuilder : ContainerBuilder<WireMockContaine
_imageOS = builder.DockerResourceConfiguration.Image.FullName.IndexOf("windows", StringComparison.OrdinalIgnoreCase) >= 0 ? OSPlatform.Windows : OSPlatform.Linux;
}
if (!string.IsNullOrEmpty(_staticMappingsPath))
if (!string.IsNullOrEmpty(builder.DockerResourceConfiguration.StaticMappingsPath))
{
builder = builder.WithBindMount(_staticMappingsPath, _info[_imageOS.Value].MappingsPath);
builder = builder.WithBindMount(builder.DockerResourceConfiguration.StaticMappingsPath, _info[_imageOS.Value].MappingsPath);
}
builder.Validate();