Files
VolcanicCore/tests/VolcanicCore.Tests/WebhookRouterTests.cs

43 lines
1.2 KiB
C#

using VolcanicCore.Core;
namespace VolcanicCore.Tests;
public class WebhookRouterTests
{
[Fact]
public async Task Register_then_Resolve_returns_payload_and_is_first_write_wins()
{
var r = new WebhookRouter();
var id = Guid.NewGuid();
var wait = r.Register(id, TimeSpan.FromSeconds(5));
var first = r.Resolve(id, new WebResponsePayload(202, "hi", "text/plain"));
var second = r.Resolve(id, new WebResponsePayload(500, "no", "text/plain"));
Assert.True(first);
Assert.False(second);
var got = await wait;
Assert.NotNull(got);
Assert.Equal(202, got!.StatusCode);
Assert.Equal("hi", got.Body);
}
[Fact]
public async Task Timeout_resolves_with_null()
{
var r = new WebhookRouter();
var id = Guid.NewGuid();
var wait = r.Register(id, TimeSpan.FromMilliseconds(50));
var got = await wait;
Assert.Null(got);
}
[Fact]
public void Resolve_on_unknown_id_returns_false()
{
var r = new WebhookRouter();
Assert.False(r.Resolve(Guid.NewGuid(), new WebResponsePayload(200, "", "text/plain")));
}
}