feat(openzaak): per-document-type confidentialiteit config (WP-59)
Drives the DRC upload's vertrouwelijkheidaanduiding from a new stamdata table instead of the hardcoded "openbaar", following the existing config-as-code pattern (ADR-0004). Adds the referential-integrity check StamdataValidationTests was missing for the new table.
This commit is contained in:
@@ -58,6 +58,23 @@ public class OpenZaakDocumentSourceTests
|
||||
Assert.Contains("123443210", body); // bronorganisatie
|
||||
Assert.Contains("paspoort.pdf", body);
|
||||
Assert.Contains(Convert.ToBase64String("%PDF-1.4 fake"u8.ToArray()), body); // inhoud
|
||||
// WP-59: "identiteit" is mapped to "vertrouwelijk" in the confidentialiteit stamdata.
|
||||
Assert.Contains("\"vertrouwelijkheidaanduiding\":\"vertrouwelijk\"", body);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Upload_falls_back_to_openbaar_for_a_category_absent_from_the_confidentialiteit_table()
|
||||
{
|
||||
var options = Options();
|
||||
options.InformatieobjecttypeUrls["org-logo"] = InformatieobjecttypeUrl;
|
||||
var handler = new ZgwStubHandler(url =>
|
||||
"""{ "url": "https://oz.example/documenten/api/v1/enkelvoudiginformatieobjecten/eio-2" }""");
|
||||
var source = new OpenZaakDocumentSource(new HttpClient(handler), new ZgwTokenProvider(options), options);
|
||||
|
||||
source.Upload("local-2", "org-logo", "org-template", "logo.png", "image/png", [1, 2, 3], Caller);
|
||||
|
||||
var body = handler.BodyOf($"{DrcBase}/enkelvoudiginformatieobjecten");
|
||||
Assert.Contains("\"vertrouwelijkheidaanduiding\":\"openbaar\"", body);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using BigRegister.Api.Data;
|
||||
using BigRegister.Domain.Diplomas;
|
||||
using BigRegister.Domain.Documents;
|
||||
using BigRegister.Stamdata;
|
||||
|
||||
namespace BigRegister.Tests;
|
||||
@@ -22,6 +23,14 @@ public class StamdataValidationTests
|
||||
private static readonly IReadOnlySet<string> BeroepCodes =
|
||||
StamdataFile.Load<Beroep>("beroepen").Select(b => b.Code).ToHashSet(StringComparer.Ordinal);
|
||||
|
||||
// Every document category id that exists across any wizard (WP-59's confidentialiteit
|
||||
// table points at these) — "org-logo" resolves too, even though it's deliberately absent
|
||||
// from the confidentialiteit table itself (falls back to "openbaar").
|
||||
private static readonly IReadOnlySet<string> DocumentCategoryIds = new[] { "registratie", "herregistratie", "org-template" }
|
||||
.SelectMany(DocumentRules.AllCategoriesFor)
|
||||
.Select(c => c.CategoryId)
|
||||
.ToHashSet(StringComparer.Ordinal);
|
||||
|
||||
private static readonly IReadOnlyList<StamdataRef> References = new[]
|
||||
{
|
||||
new StamdataRef(
|
||||
@@ -38,6 +47,12 @@ public class StamdataValidationTests
|
||||
"Specialisme.beroep → beroepen.code",
|
||||
StamdataFile.Load<Specialisme>("specialismen").Select(s => s.Beroep),
|
||||
key => BeroepCodes.Contains(key)),
|
||||
// WP-59: a confidentialiteit row for a category that no wizard ever asks for is dead
|
||||
// config — fail the build rather than let it silently rot.
|
||||
new StamdataRef(
|
||||
"DocumentConfidentialiteit.CategoryId → a real document category",
|
||||
StamdataFile.Load<DocumentConfidentialiteit>("documentconfidentialiteit").Select(d => d.CategoryId),
|
||||
key => DocumentCategoryIds.Contains(key)),
|
||||
};
|
||||
|
||||
[Fact]
|
||||
|
||||
Reference in New Issue
Block a user