mirror of
https://github.com/wiremock/WireMock.Net.git
synced 2026-03-22 17:19:00 +01:00
Add new package WireMock.Net.Extensions.Routing which provides minimal-API-style routing for WireMock.Net (#1344)
* Add new package WireMock.Net.Extensions.Routing * Update documentation for WireMock.Net.Extensions.Routing * Cleanup imports * Add header to all source files inside WireMock.Net.Extensions.Routing * Add header to all source files inside WireMock.Net.Extensions.Routing.Tests * Revert unintended changes * Remove redundant build configurations * Remove incorrect links from documentation * Update nuget package references * Revert unintended changes * Migrate to AwesomeAssertions * Remove redundant project reference * Adjust formatting * Migrate to primary constructor * Refactoring: rename delegate parameter * Abstract over JSON converter * Replace WireMock with WireMock.Net in comments * Move local functions to the bottom of the methods
This commit is contained in:
committed by
GitHub
parent
60eb519ae2
commit
be2ea67b89
@@ -0,0 +1,100 @@
|
||||
// Copyright © WireMock.Net
|
||||
|
||||
using System.Net.Http;
|
||||
using System.Net.Http.Json;
|
||||
using System.Threading.Tasks;
|
||||
using AwesomeAssertions;
|
||||
using WireMock.Net.Extensions.Routing.Extensions;
|
||||
using WireMock.Server;
|
||||
|
||||
namespace WireMock.Net.Extensions.Routing.Tests.Tests;
|
||||
|
||||
public sealed class WireMockRouterTests
|
||||
{
|
||||
private const string DefaultUrlPattern = "/test";
|
||||
|
||||
private readonly WireMockServer _server = WireMockServer.Start();
|
||||
private readonly WireMockRouter _sut;
|
||||
|
||||
public WireMockRouterTests()
|
||||
{
|
||||
_sut = new WireMockRouter(_server);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Map_ShouldReturnResultFromHandler_ForGetMethod()
|
||||
{
|
||||
const int handlerResult = 5;
|
||||
_sut.Map(HttpMethod.Get.ToString(), DefaultUrlPattern, _ => handlerResult);
|
||||
using var client = _server.CreateClient();
|
||||
|
||||
var result = await client.GetFromJsonAsync<int>(DefaultUrlPattern);
|
||||
|
||||
result.Should().Be(handlerResult);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Map_ShouldReturnResultFromAsyncHandler_ForGetMethod()
|
||||
{
|
||||
const int handlerResult = 5;
|
||||
_sut.Map(HttpMethod.Get.ToString(), DefaultUrlPattern, _ => Task.FromResult(handlerResult));
|
||||
using var client = _server.CreateClient();
|
||||
|
||||
var result = await client.GetFromJsonAsync<int>(DefaultUrlPattern);
|
||||
|
||||
result.Should().Be(handlerResult);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Map_ShouldReturnResultFromAsyncHandlerWithAwait_ForGetMethod()
|
||||
{
|
||||
const int handlerResult = 5;
|
||||
_sut.Map(
|
||||
HttpMethod.Get.ToString(),
|
||||
DefaultUrlPattern,
|
||||
async _ => await Task.FromResult(handlerResult));
|
||||
using var client = _server.CreateClient();
|
||||
|
||||
var result = await client.GetFromJsonAsync<int>(DefaultUrlPattern);
|
||||
|
||||
result.Should().Be(handlerResult);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Map_ShouldReturnResultFromAsyncHandlerWithDelayAndAwait_ForGetMethod()
|
||||
{
|
||||
const int handlerResult = 5;
|
||||
|
||||
async Task<object?> HandleRequestAsync()
|
||||
{
|
||||
await Task.Delay(1);
|
||||
return handlerResult;
|
||||
}
|
||||
|
||||
_sut.Map(HttpMethod.Get.ToString(), DefaultUrlPattern, _ => HandleRequestAsync());
|
||||
using var client = _server.CreateClient();
|
||||
|
||||
var result = await client.GetFromJsonAsync<int>(DefaultUrlPattern);
|
||||
|
||||
result.Should().Be(handlerResult);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task MapGet_ShouldReturnResultFromAsyncHandlerWithDelayAwait()
|
||||
{
|
||||
const int handlerResult = 5;
|
||||
|
||||
async Task<object?> HandleRequestAsync()
|
||||
{
|
||||
await Task.Delay(1);
|
||||
return handlerResult;
|
||||
}
|
||||
|
||||
_sut.MapGet(DefaultUrlPattern, _ => HandleRequestAsync());
|
||||
using var client = _server.CreateClient();
|
||||
|
||||
var result = await client.GetFromJsonAsync<int>(DefaultUrlPattern);
|
||||
|
||||
result.Should().Be(handlerResult);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<Authors>Gennadii Saltyshchak</Authors>
|
||||
<TargetFrameworks>net8.0</TargetFrameworks>
|
||||
<Nullable>enable</Nullable>
|
||||
<IsPackable>false</IsPackable>
|
||||
<DebugType>full</DebugType>
|
||||
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
|
||||
<IsTestProject>true</IsTestProject>
|
||||
<SonarQubeExclude>true</SonarQubeExclude>
|
||||
<SignAssembly>true</SignAssembly>
|
||||
<AssemblyOriginatorKeyFile>../../src/WireMock.Net/WireMock.Net.snk</AssemblyOriginatorKeyFile>
|
||||
<PublicSign Condition=" '$(OS)' != 'Windows_NT' ">true</PublicSign>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="AwesomeAssertions" Version="9.1.0" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
|
||||
<PackageReference Include="coverlet.collector" Version="6.0.4">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="xunit" Version="2.9.3" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.3">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\src\WireMock.Net.Extensions.Routing\WireMock.Net.Extensions.Routing.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Using Include="Xunit" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
Reference in New Issue
Block a user