Files
WireMock.Net/test/WireMock.Net.Tests/Serialization/MappingConverterTests.ToCSharpCode.cs
Степан f8d3b51fbc Feature/early mismatch (#1451)
* feat(request matchers): Add support for early mismatch in mapping processing

* test(request matchers): Add unit test for early mismatch functionality

* test(grpc): Add test for grpc requests early mismatch and error logging (Issue #1442)

* feat(request matchers): RequestMatcherType

Add `RequestMatcherType` to request matchers for improved type
identification

Closes #1442

* refactor(request matchers): Request

Replace `EarlyMatcherSelector` with `EarlyMatcherType` for improved
clarity and consistency

Closes #1442

* feat(request): conversion

Add EarlyMatcherType support in request models and mapping conversion

Closes #1442

* test(mapping): new tests

add unit tests for EarlyMatcherType in mapping conversion and
serialization

Closes #1442

* refactor(request matchers): RequestMessageEarlyMatcher

Replaced inline `EarlyMatcherType` logic with the new
`RequestMessageEarlyMatcher` class to support cases when several
matchers of the same type are present. For instance - Header, Cookie,
Param

Closes #1442

* test(request matchers): Early Mismatch

add unit tests for early mismatch scenarios with several matchers of
same type. Currently, headers and parameters

Closes #1442

* refactor(mapping): RequestModel.EarlyMatcherType

use fully qualified enum for EarlyMatcherType in serialization

Closes #1442

* style(review): fixes

- removed unused method
- added missing curly brackets

Closes #1442
2026-05-03 09:27:19 +02:00

139 lines
3.3 KiB
C#

// Copyright © WireMock.Net
using WireMock.Matchers.Request;
using WireMock.Net.Tests.VerifyExtensions;
using WireMock.RequestBuilders;
using WireMock.ResponseBuilders;
using WireMock.Serialization;
using WireMock.Types;
namespace WireMock.Net.Tests.Serialization;
public partial class MappingConverterTests
{
private static readonly VerifySettings VerifySettings = new();
static MappingConverterTests()
{
VerifySettings.Init();
}
[Fact]
public Task ToCSharpCode_With_Builder_And_AddStartIsTrue()
{
// Assign
var mapping = CreateMapping();
// Act
var code = _sut.ToCSharpCode(mapping, new MappingConverterSettings
{
AddStart = true,
ConverterType = MappingConverterType.Builder
});
// Assert
code.Should().NotBeEmpty();
// Verify
return Verify(code, VerifySettings);
}
[Fact]
public Task ToCSharpCode_With_Builder_And_AddStartIsFalse()
{
// Assign
var mapping = CreateMapping();
// Act
var code = _sut.ToCSharpCode(mapping, new MappingConverterSettings
{
AddStart = false,
ConverterType = MappingConverterType.Builder
});
// Assert
code.Should().NotBeEmpty();
// Verify
return Verify(code, VerifySettings);
}
[Fact]
public Task ToCSharpCode_With_Server_And_AddStartIsTrue()
{
// Assign
var mapping = CreateMapping();
// Act
var code = _sut.ToCSharpCode(mapping, new MappingConverterSettings
{
AddStart = true,
ConverterType = MappingConverterType.Server
});
// Assert
code.Should().NotBeEmpty();
// Verify
return Verify(code, VerifySettings);
}
[Fact]
public Task ToCSharpCode_With_Server_And_AddStartIsFalse()
{
// Assign
var mapping = CreateMapping();
// Act
var code = _sut.ToCSharpCode(mapping, new MappingConverterSettings
{
AddStart = false,
ConverterType = MappingConverterType.Server
});
// Assert
code.Should().NotBeEmpty();
// Verify
return Verify(code, VerifySettings);
}
private IMapping CreateMapping()
{
var guid = new Guid("8e7b9ab7-e18e-4502-8bc9-11e6679811cc");
var request = Request.Create()
.UsingGet()
.WithEarlyMismatch(RequestMatcherType.Method)
.WithPath("/test_path")
.WithParam("q", "42")
.WithClientIP("112.123.100.99")
.WithHeader("h-key", "h-value")
.WithCookie("c-key", "c-value")
.WithBody("b");
var response = Response.Create()
.WithHeader("Keep-Alive", "test")
.WithBody("bbb")
.WithDelay(12345)
.WithTransformer();
return new Mapping
(
guid,
_updatedAt,
string.Empty,
string.Empty,
null,
_settings,
request,
response,
42,
null,
null,
null,
null,
null,
false,
null,
data: null
).WithProbability(0.3);
}
}