using System.Net; using System.Net.Http.Headers; using System.Net.Http.Json; using Bff.Api; namespace Bff.Tests; /// /// The beheer catalogus viewer (S-15a): reached only with a medewerker-realm token carrying the /// beheerder role. A missing token is 401; an authenticated medewerker without the role (e.g. /// a plain behandelaar) is 403; a beheerder gets the read-only list of published zaaktypen. /// public class BeheerEndpointTests { private static HttpRequestMessage Zaaktypen(string? bearer) { var request = new HttpRequestMessage(HttpMethod.Get, "/beheer/catalogi/zaaktypen"); if (bearer is not null) request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", bearer); return request; } [Fact] public async Task Rejects_the_catalogus_without_a_token() { using var factory = new BffFactory(); var response = await factory.CreateClient().SendAsync(Zaaktypen(bearer: null)); Assert.Equal(HttpStatusCode.Unauthorized, response.StatusCode); } [Fact] public async Task Rejects_a_medewerker_without_the_beheerder_role() { using var factory = new BffFactory(); var response = await factory.CreateClient().SendAsync(Zaaktypen(TestTokens.Medewerker("behandelaar"))); Assert.Equal(HttpStatusCode.Forbidden, response.StatusCode); } [Fact] public async Task Serves_the_published_zaaktypen_to_a_beheerder() { using var factory = new BffFactory(); factory.Acl.Zaaktypen.Add(new BeheerZaaktype("BIG-REGISTRATIE", "BIG-registratie")); var response = await factory.CreateClient().SendAsync(Zaaktypen(TestTokens.Medewerker("beheerder"))); Assert.Equal(HttpStatusCode.OK, response.StatusCode); var items = await response.Content.ReadFromJsonAsync>(); var item = Assert.Single(items!); Assert.Equal("BIG-REGISTRATIE", item.Identificatie); Assert.Equal("BIG-registratie", item.Omschrijving); } }