From 61f6f5781f19594f7ea5d8351c0415ce7a5e8c39 Mon Sep 17 00:00:00 2001 From: Niek Otten Date: Fri, 24 Jul 2026 11:00:53 +0200 Subject: [PATCH] test(acl): cover ListZaaktypenAsync gateway read (mutation ratchet) (refs #130) --- .../acl/Acl.Tests/OpenZaakGatewayTests.cs | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/services/acl/Acl.Tests/OpenZaakGatewayTests.cs b/services/acl/Acl.Tests/OpenZaakGatewayTests.cs index 081701c..142a318 100644 --- a/services/acl/Acl.Tests/OpenZaakGatewayTests.cs +++ b/services/acl/Acl.Tests/OpenZaakGatewayTests.cs @@ -824,4 +824,51 @@ public class OpenZaakGatewayTests await Assert.ThrowsAnyAsync(() => Gateway(handler).ResolveZaaktypeUrlAsync(" ")); await Assert.ThrowsAnyAsync(() => Gateway(handler).ResolveInformatieobjecttypeUrlAsync(" ")); } + + [Fact] + public async Task Listing_zaaktypen_queries_published_zaaktypen_and_maps_them(/* S-15a */) + { + HttpRequestMessage? seen = null; + var handler = new StubHandler(req => + { + seen = req; + const string json = """ + {"results":[ + {"url":"http://openzaak/catalogi/api/v1/zaaktypen/big","identificatie":"BIG-REGISTRATIE","omschrijving":"BIG-registratie"}, + {"url":"http://openzaak/catalogi/api/v1/zaaktypen/her","identificatie":"BIG-HERREGISTRATIE","omschrijving":"BIG-herregistratie"} + ]} + """; + return Task.FromResult(new HttpResponseMessage(HttpStatusCode.OK) + { + Content = new StringContent(json, Encoding.UTF8, "application/json"), + }); + }); + + var zaaktypen = await Gateway(handler).ListZaaktypenAsync(); + + // Only the published zaaktypen collection is queried (status=definitief excludes concepts). + Assert.Contains("/catalogi/api/v1/zaaktypen", seen!.RequestUri!.ToString()); + Assert.Contains("status=definitief", seen.RequestUri!.ToString()); + // Authenticated like the other catalogi reads. + Assert.Equal("Bearer", seen.Headers.Authorization!.Scheme); + // Each result maps to a public-safe summary (identificatie + omschrijving + url). + Assert.Equal(2, zaaktypen.Count); + Assert.Equal("BIG-REGISTRATIE", zaaktypen[0].Identificatie); + Assert.Equal("BIG-registratie", zaaktypen[0].Omschrijving); + Assert.Equal(new Uri("http://openzaak/catalogi/api/v1/zaaktypen/big"), zaaktypen[0].Url); + Assert.Equal("BIG-HERREGISTRATIE", zaaktypen[1].Identificatie); + } + + [Fact] + public async Task Listing_zaaktypen_returns_empty_when_the_catalogus_has_none() + { + var handler = new StubHandler(_ => Task.FromResult(new HttpResponseMessage(HttpStatusCode.OK) + { + Content = new StringContent("""{"results":[]}""", Encoding.UTF8, "application/json"), + })); + + var zaaktypen = await Gateway(handler).ListZaaktypenAsync(); + + Assert.Empty(zaaktypen); + } }