Files
WireMock.Net/src/WireMock.Net.Abstractions/Admin/Mappings/RequestModel.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

77 lines
2.0 KiB
C#

// Copyright © WireMock.Net
using WireMock.Matchers.Request;
namespace WireMock.Admin.Mappings;
/// <summary>
/// RequestModel
/// </summary>
[FluentBuilder.AutoGenerateBuilder]
public class RequestModel
{
/// <summary>
/// Gets or sets the ClientIP. (Can be a string or a ClientIPModel)
/// </summary>
public object? ClientIP { get; set; }
/// <summary>
/// Gets or sets the Path. (Can be a string or a PathModel)
/// </summary>
public object? Path { get; set; }
/// <summary>
/// Gets or sets the Url. (Can be a string or a UrlModel)
/// </summary>
public object? Url { get; set; }
/// <summary>
/// The methods
/// </summary>
public string[]? Methods { get; set; }
/// <summary>
/// The HTTP Version
/// </summary>
public string? HttpVersion { get; set; }
/// <summary>
/// Reject on match for Methods.
/// </summary>
public bool? MethodsRejectOnMatch { get; set; }
/// <summary>
/// The Operator to use when Methods are defined. [Optional]
/// - null = Same as "or".
/// - "or" = Only one method should match.
/// - "and" = All methods should match.
/// - "average" = The average value from all methods.
/// </summary>
public string? MethodsMatchOperator { get; set; }
/// <summary>
/// Gets or sets the Headers.
/// </summary>
public IList<HeaderModel>? Headers { get; set; }
/// <summary>
/// Gets or sets the Cookies.
/// </summary>
public IList<CookieModel>? Cookies { get; set; }
/// <summary>
/// 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; }
}