mirror of
https://github.com/wiremock/WireMock.Net.git
synced 2026-01-14 14:23:34 +01:00
* UseFireAndForget * ... * delay * async * updated code accorsing to proposal * Change nuget to package reference for WireMock.Net.Console.Net472.Classic, move the new FireAndForget into the main mapping, out of individual webhook mappings making it all or nothing, update tests, change Middleware to await or not the firing of all webhooks. Update models as needed. (#804) Co-authored-by: Matt Philmon <Matt_Philmon@carmax.com> * small update * Tweak middleware and fix bug in example (#806) Co-authored-by: Matt Philmon <Matt_Philmon@carmax.com> * .ConfigureAwait(false) Co-authored-by: mattisking <mattisking@gmail.com> Co-authored-by: Matt Philmon <Matt_Philmon@carmax.com>
145 lines
4.8 KiB
C#
145 lines
4.8 KiB
C#
using System.Collections.Generic;
|
|
using FluentAssertions;
|
|
using WireMock.Admin.Mappings;
|
|
using WireMock.Models;
|
|
using WireMock.Serialization;
|
|
using WireMock.Types;
|
|
using WireMock.Util;
|
|
using Xunit;
|
|
|
|
namespace WireMock.Net.Tests.Serialization;
|
|
|
|
public class WebhookMapperTests
|
|
{
|
|
[Fact]
|
|
public void WebhookMapper_Map_WebhookModel_BodyAsString_And_UseTransformerIsFalse()
|
|
{
|
|
// Assign
|
|
var model = new WebhookModel
|
|
{
|
|
Request = new WebhookRequestModel
|
|
{
|
|
Url = "https://localhost",
|
|
Method = "get",
|
|
Headers = new Dictionary<string, string>
|
|
{
|
|
{ "x", "y" }
|
|
},
|
|
Body = "test",
|
|
UseTransformer = false
|
|
}
|
|
};
|
|
|
|
var result = WebhookMapper.Map(model);
|
|
|
|
result.Request.Url.Should().Be("https://localhost");
|
|
result.Request.Method.Should().Be("get");
|
|
result.Request.Headers.Should().HaveCount(1);
|
|
result.Request.BodyData!.BodyAsJson.Should().BeNull();
|
|
result.Request.BodyData.BodyAsString.Should().Be("test");
|
|
result.Request.BodyData.DetectedBodyType.Should().Be(BodyType.String);
|
|
result.Request.UseTransformer.Should().BeNull();
|
|
}
|
|
|
|
[Fact]
|
|
public void WebhookMapper_Map_WebhookModel_BodyAsString_And_UseTransformerIsTrue()
|
|
{
|
|
// Assign
|
|
var model = new WebhookModel
|
|
{
|
|
Request = new WebhookRequestModel
|
|
{
|
|
Url = "https://localhost",
|
|
Method = "get",
|
|
Headers = new Dictionary<string, string>
|
|
{
|
|
{ "x", "y" }
|
|
},
|
|
Body = "test",
|
|
UseTransformer = true
|
|
}
|
|
};
|
|
|
|
var result = WebhookMapper.Map(model);
|
|
|
|
result.Request.Url.Should().Be("https://localhost");
|
|
result.Request.Method.Should().Be("get");
|
|
result.Request.Headers.Should().HaveCount(1);
|
|
result.Request.BodyData!.BodyAsJson.Should().BeNull();
|
|
result.Request.BodyData.BodyAsString.Should().Be("test");
|
|
result.Request.BodyData.DetectedBodyType.Should().Be(BodyType.String);
|
|
result.Request.UseTransformer.Should().BeTrue();
|
|
result.Request.TransformerType.Should().Be(TransformerType.Handlebars);
|
|
}
|
|
|
|
[Fact]
|
|
public void WebhookMapper_Map_WebhookModel_BodyAsJson()
|
|
{
|
|
// Assign
|
|
var model = new WebhookModel
|
|
{
|
|
Request = new WebhookRequestModel
|
|
{
|
|
Url = "https://localhost",
|
|
Method = "get",
|
|
Headers = new Dictionary<string, string>
|
|
{
|
|
{ "x", "y" }
|
|
},
|
|
BodyAsJson = new { n = 12345 },
|
|
Delay = 4,
|
|
MinimumRandomDelay = 5,
|
|
MaximumRandomDelay = 6
|
|
},
|
|
};
|
|
|
|
var result = WebhookMapper.Map(model);
|
|
|
|
result.Request.Url.Should().Be("https://localhost");
|
|
result.Request.Method.Should().Be("get");
|
|
result.Request.Headers.Should().HaveCount(1);
|
|
result.Request.BodyData!.BodyAsString.Should().BeNull();
|
|
result.Request.BodyData.BodyAsJson.Should().NotBeNull();
|
|
result.Request.BodyData.DetectedBodyType.Should().Be(BodyType.Json);
|
|
result.Request.Delay.Should().Be(4);
|
|
result.Request.MinimumRandomDelay.Should().Be(5);
|
|
result.Request.MaximumRandomDelay.Should().Be(6);
|
|
}
|
|
|
|
[Fact]
|
|
public void WebhookMapper_Map_Webhook_To_Model()
|
|
{
|
|
// Assign
|
|
var webhook = new Webhook
|
|
{
|
|
Request = new WebhookRequest
|
|
{
|
|
Url = "https://localhost",
|
|
Method = "get",
|
|
Headers = new Dictionary<string, WireMockList<string>>
|
|
{
|
|
{ "x", new WireMockList<string>("y") }
|
|
},
|
|
BodyData = new BodyData
|
|
{
|
|
BodyAsJson = new { n = 12345 },
|
|
DetectedBodyType = BodyType.Json,
|
|
DetectedBodyTypeFromContentType = BodyType.Json
|
|
},
|
|
Delay = 4,
|
|
MinimumRandomDelay = 5,
|
|
MaximumRandomDelay = 6
|
|
}
|
|
};
|
|
|
|
var result = WebhookMapper.Map(webhook);
|
|
|
|
result.Request.Url.Should().Be("https://localhost");
|
|
result.Request.Method.Should().Be("get");
|
|
result.Request.Headers.Should().HaveCount(1);
|
|
result.Request.BodyAsJson.Should().NotBeNull();
|
|
result.Request.Delay.Should().Be(4);
|
|
result.Request.MinimumRandomDelay.Should().Be(5);
|
|
result.Request.MaximumRandomDelay.Should().Be(6);
|
|
}
|
|
} |