mirror of
https://github.com/wiremock/WireMock.Net.git
synced 2026-05-24 23:59:11 +02:00
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
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
// Copyright © WireMock.Net
|
||||
|
||||
using WireMock.Matchers.Request;
|
||||
|
||||
namespace WireMock.Admin.Mappings;
|
||||
|
||||
/// <summary>
|
||||
@@ -61,9 +63,15 @@ public class RequestModel
|
||||
/// Gets or sets the Params.
|
||||
/// </summary>
|
||||
public IList<ParamModel>? Params { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the body.
|
||||
/// </summary>
|
||||
public BodyModel? Body { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Type of the request matcher to return an immediate mismatch during mapping processing.
|
||||
/// Optional.
|
||||
/// </summary>
|
||||
public RequestMatcherType? EarlyMatcherType { get; set; }
|
||||
}
|
||||
@@ -7,6 +7,11 @@ namespace WireMock.Matchers.Request;
|
||||
/// </summary>
|
||||
public interface IRequestMatcher
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets the request matcher's type.
|
||||
/// </summary>
|
||||
public RequestMatcherType Type { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Determines whether the specified RequestMessage is match.
|
||||
/// </summary>
|
||||
|
||||
@@ -0,0 +1,84 @@
|
||||
// Copyright © WireMock.Net
|
||||
|
||||
namespace WireMock.Matchers.Request;
|
||||
|
||||
/// <summary>
|
||||
/// List of predefined request matcher types.
|
||||
/// </summary>
|
||||
public enum RequestMatcherType
|
||||
{
|
||||
/// <summary>
|
||||
/// RequestMessageBodyMatcher
|
||||
/// </summary>
|
||||
Body = 0,
|
||||
|
||||
/// <summary>
|
||||
/// RequestMessageBodyMatcher{T}
|
||||
/// </summary>
|
||||
BodyOfT = 1,
|
||||
|
||||
/// <summary>
|
||||
/// RequestMessageClientIPMatcher
|
||||
/// </summary>
|
||||
ClientIP = 2,
|
||||
|
||||
/// <summary>
|
||||
/// RequestMessageCookieMatcher
|
||||
/// </summary>
|
||||
Cookie = 3,
|
||||
|
||||
/// <summary>
|
||||
/// RequestMessageGraphQLMatcher
|
||||
/// </summary>
|
||||
GraphQL = 4,
|
||||
|
||||
/// <summary>
|
||||
/// RequestMessageHeaderMatcher
|
||||
/// </summary>
|
||||
Header = 5,
|
||||
|
||||
/// <summary>
|
||||
/// RequestMessageHttpVersionMatcher
|
||||
/// </summary>
|
||||
HttpVersion = 6,
|
||||
|
||||
/// <summary>
|
||||
/// RequestMessageMethodMatcher
|
||||
/// </summary>
|
||||
Method = 7,
|
||||
|
||||
/// <summary>
|
||||
/// RequestMessageMultiPartMatcher
|
||||
/// </summary>
|
||||
MultiPart = 8,
|
||||
|
||||
/// <summary>
|
||||
/// RequestMessageParamMatcher
|
||||
/// </summary>
|
||||
Param = 9,
|
||||
|
||||
/// <summary>
|
||||
/// RequestMessagePathMatcher
|
||||
/// </summary>
|
||||
Path = 10,
|
||||
|
||||
/// <summary>
|
||||
/// RequestMessageProtoBufMatcher
|
||||
/// </summary>
|
||||
ProtoBuf = 11,
|
||||
|
||||
/// <summary>
|
||||
/// RequestMessageScenarioAndStateMatcher
|
||||
/// </summary>
|
||||
ScenarioAndState = 12,
|
||||
|
||||
/// <summary>
|
||||
/// RequestMessageUrlMatcher
|
||||
/// </summary>
|
||||
Url = 13,
|
||||
|
||||
/// <summary>
|
||||
/// RequestMessageCompositeMatcher
|
||||
/// </summary>
|
||||
Composite = 14
|
||||
}
|
||||
Reference in New Issue
Block a user