test(acl): OpenZaak default-fills ZGW fields and posts to OpenZaak (refs #5)
Add the ACL skeleton (Application/Infrastructure/Api per §9) and failing xUnit tests for the single operation: AclService.OpenZaakAsync must default-fill bronorganisatie, verantwoordelijkeOrganisatie, startdatum (clock) and vertrouwelijkheidaanduiding and delegate to the gateway; the OpenZaakGateway must POST the zaak to OpenZaak with a Bearer JWT and the default-filled body. Implementations throw NotImplementedException — red. Also add ADR-0003 (default-fill strategy). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
9
services/acl/Acl.Application/Acl.Application.csproj
Normal file
9
services/acl/Acl.Application/Acl.Application.csproj
Normal file
@@ -0,0 +1,9 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net10.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
10
services/acl/Acl.Application/AclDefaults.cs
Normal file
10
services/acl/Acl.Application/AclDefaults.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
namespace Acl.Application;
|
||||
|
||||
/// <summary>Configured ZGW defaults the ACL fills in (ADR-0003).</summary>
|
||||
public sealed class AclDefaults
|
||||
{
|
||||
public required string Bronorganisatie { get; init; }
|
||||
public required string VerantwoordelijkeOrganisatie { get; init; }
|
||||
public required string Vertrouwelijkheidaanduiding { get; init; }
|
||||
public required Uri ZaaktypeUrl { get; init; }
|
||||
}
|
||||
9
services/acl/Acl.Application/AclService.cs
Normal file
9
services/acl/Acl.Application/AclService.cs
Normal file
@@ -0,0 +1,9 @@
|
||||
namespace Acl.Application;
|
||||
|
||||
/// <summary>The ACL's single operation: open a zaak from a domain payload,
|
||||
/// default-filling the ZGW-mandatory fields (ADR-0003).</summary>
|
||||
public sealed class AclService(IZaakGateway gateway, AclDefaults defaults, IClock clock)
|
||||
{
|
||||
public Task<Uri> OpenZaakAsync(DomainRegistration registration, CancellationToken ct = default)
|
||||
=> throw new NotImplementedException();
|
||||
}
|
||||
4
services/acl/Acl.Application/DomainRegistration.cs
Normal file
4
services/acl/Acl.Application/DomainRegistration.cs
Normal file
@@ -0,0 +1,4 @@
|
||||
namespace Acl.Application;
|
||||
|
||||
/// <summary>Domain-language payload handed to the ACL. No ZGW concepts here.</summary>
|
||||
public sealed record DomainRegistration(string Bsn);
|
||||
7
services/acl/Acl.Application/IClock.cs
Normal file
7
services/acl/Acl.Application/IClock.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
namespace Acl.Application;
|
||||
|
||||
/// <summary>Abstracts "today" so startdatum default-fill is deterministic in tests.</summary>
|
||||
public interface IClock
|
||||
{
|
||||
DateOnly Today { get; }
|
||||
}
|
||||
8
services/acl/Acl.Application/IZaakGateway.cs
Normal file
8
services/acl/Acl.Application/IZaakGateway.cs
Normal file
@@ -0,0 +1,8 @@
|
||||
namespace Acl.Application;
|
||||
|
||||
/// <summary>Port to the ZGW Zaken API. Implemented in Infrastructure — the only
|
||||
/// code that talks to OpenZaak (ADR-0001).</summary>
|
||||
public interface IZaakGateway
|
||||
{
|
||||
Task<Uri> OpenZaakAsync(ZaakRequest request, CancellationToken ct = default);
|
||||
}
|
||||
9
services/acl/Acl.Application/ZaakRequest.cs
Normal file
9
services/acl/Acl.Application/ZaakRequest.cs
Normal file
@@ -0,0 +1,9 @@
|
||||
namespace Acl.Application;
|
||||
|
||||
/// <summary>The fully default-filled zaak the gateway will create in OpenZaak.</summary>
|
||||
public sealed record ZaakRequest(
|
||||
string Bronorganisatie,
|
||||
string VerantwoordelijkeOrganisatie,
|
||||
string Vertrouwelijkheidaanduiding,
|
||||
Uri Zaaktype,
|
||||
DateOnly Startdatum);
|
||||
Reference in New Issue
Block a user