52 lines
2.1 KiB
C#
52 lines
2.1 KiB
C#
using System.Net;
|
|
using System.Net.Http.Json;
|
|
using Acl.Application;
|
|
using Acl.Infrastructure;
|
|
|
|
namespace Acl.Tests;
|
|
|
|
public class OpenZaakGatewayTests
|
|
{
|
|
private sealed class StubHandler(Func<HttpRequestMessage, Task<HttpResponseMessage>> onSend)
|
|
: HttpMessageHandler
|
|
{
|
|
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken ct)
|
|
=> onSend(request);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task Posts_zaak_to_openzaak_with_bearer_and_default_fields_and_returns_url()
|
|
{
|
|
HttpRequestMessage? seen = null;
|
|
string? body = null;
|
|
var handler = new StubHandler(async req =>
|
|
{
|
|
seen = req;
|
|
body = await req.Content!.ReadAsStringAsync();
|
|
return new HttpResponseMessage(HttpStatusCode.Created)
|
|
{
|
|
Content = JsonContent.Create(new { url = "http://openzaak/zaken/api/v1/zaken/xyz" }),
|
|
};
|
|
});
|
|
var gateway = new OpenZaakGateway(
|
|
new HttpClient(handler),
|
|
new OpenZaakOptions { BaseUrl = new("http://openzaak"), ClientId = "cid", Secret = "sec" });
|
|
var request = new ZaakRequest(
|
|
"517439943", "517439943", "openbaar",
|
|
new("http://openzaak/catalogi/api/v1/zaaktypen/big"), new DateOnly(2026, 6, 4));
|
|
|
|
var url = await gateway.OpenZaakAsync(request);
|
|
|
|
Assert.Equal("http://openzaak/zaken/api/v1/zaken/xyz", url.ToString());
|
|
Assert.Equal(HttpMethod.Post, seen!.Method);
|
|
Assert.Equal("http://openzaak/zaken/api/v1/zaken", seen.RequestUri!.ToString());
|
|
Assert.Equal("Bearer", seen.Headers.Authorization!.Scheme);
|
|
Assert.False(string.IsNullOrWhiteSpace(seen.Headers.Authorization.Parameter));
|
|
Assert.Contains("\"bronorganisatie\":\"517439943\"", body);
|
|
Assert.Contains("\"verantwoordelijkeOrganisatie\":\"517439943\"", body);
|
|
Assert.Contains("\"vertrouwelijkheidaanduiding\":\"openbaar\"", body);
|
|
Assert.Contains("\"startdatum\":\"2026-06-04\"", body);
|
|
Assert.Contains("\"zaaktype\":\"http://openzaak/catalogi/api/v1/zaaktypen/big\"", body);
|
|
}
|
|
}
|