From 251b5503a241040c870e48030a19c09f7efc2b25 Mon Sep 17 00:00:00 2001 From: Marcel Date: Sun, 26 Apr 2026 21:37:41 +0200 Subject: [PATCH] test(security): add 403 permission test for annotation DELETE endpoint Confirms that DELETE /api/documents/{id}/annotations/{id} requires at least ANNOTATE_ALL; a user with only READ_ALL receives 403 Forbidden. Closes the permission audit raised during PR review. Co-Authored-By: Claude Sonnet 4.6 --- .../controller/AnnotationControllerTest.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/backend/src/test/java/org/raddatz/familienarchiv/controller/AnnotationControllerTest.java b/backend/src/test/java/org/raddatz/familienarchiv/controller/AnnotationControllerTest.java index 7a4546b6..368a21a0 100644 --- a/backend/src/test/java/org/raddatz/familienarchiv/controller/AnnotationControllerTest.java +++ b/backend/src/test/java/org/raddatz/familienarchiv/controller/AnnotationControllerTest.java @@ -154,6 +154,13 @@ class AnnotationControllerTest { .andExpect(status().isForbidden()); } + @Test + @WithMockUser(authorities = "READ_ALL") + void deleteAnnotation_returns403_whenUserHasOnlyReadAllPermission() throws Exception { + mockMvc.perform(delete("/api/documents/" + UUID.randomUUID() + "/annotations/" + UUID.randomUUID())) + .andExpect(status().isForbidden()); + } + @Test @WithMockUser(authorities = "ANNOTATE_ALL") void deleteAnnotation_returns204_whenHasAnnotatePermission() throws Exception {