43 lines
1.2 KiB
C#
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")));
|
|
}
|
|
}
|