diff --git a/backend/src/test/java/org/raddatz/familienarchiv/user/UserControllerTest.java b/backend/src/test/java/org/raddatz/familienarchiv/user/UserControllerTest.java index a31fa4af..80f26119 100644 --- a/backend/src/test/java/org/raddatz/familienarchiv/user/UserControllerTest.java +++ b/backend/src/test/java/org/raddatz/familienarchiv/user/UserControllerTest.java @@ -191,6 +191,16 @@ class UserControllerTest { .andExpect(status().isUnauthorized()); } + @Test + @WithMockUser(username = "user@example.com") + void changePassword_without_csrf_returns_403_CSRF_TOKEN_MISSING() throws Exception { + mockMvc.perform(post("/api/users/me/password") + .contentType(MediaType.APPLICATION_JSON) + .content("{\"currentPassword\":\"old\",\"newPassword\":\"new123!\"}")) + .andExpect(status().isForbidden()) + .andExpect(jsonPath("$.code").value("CSRF_TOKEN_MISSING")); + } + // ─── POST /api/users/{id}/force-logout ──────────────────────────────────── @Test @@ -232,4 +242,12 @@ class UserControllerTest { mockMvc.perform(post("/api/users/" + targetId + "/force-logout").with(csrf())) .andExpect(status().isNotFound()); } + + @Test + @WithMockUser(username = "admin@example.com", authorities = "ADMIN_USER") + void forceLogout_without_csrf_returns_403_CSRF_TOKEN_MISSING() throws Exception { + mockMvc.perform(post("/api/users/" + UUID.randomUUID() + "/force-logout")) + .andExpect(status().isForbidden()) + .andExpect(jsonPath("$.code").value("CSRF_TOKEN_MISSING")); + } }