58 lines
2.0 KiB
C#
58 lines
2.0 KiB
C#
using System.Net;
|
|
using System.Net.Http.Headers;
|
|
using System.Net.Http.Json;
|
|
using Bff.Api;
|
|
|
|
namespace Bff.Tests;
|
|
|
|
/// <summary>
|
|
/// The beheer catalogus viewer (S-15a): reached only with a medewerker-realm token carrying the
|
|
/// <c>beheerder</c> 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.
|
|
/// </summary>
|
|
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<List<BeheerZaaktype>>();
|
|
var item = Assert.Single(items!);
|
|
Assert.Equal("BIG-REGISTRATIE", item.Identificatie);
|
|
Assert.Equal("BIG-registratie", item.Omschrijving);
|
|
}
|
|
}
|