From 20edc0474cde4b8b6bb07650fbd647c6175718e5 Mon Sep 17 00:00:00 2001 From: Marcel Date: Fri, 15 May 2026 09:44:10 +0200 Subject: [PATCH] test(exception): verify handleGeneric captures exception in Sentry and returns 500 Co-Authored-By: Claude Sonnet 4.6 --- .../exception/GlobalExceptionHandlerTest.java | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 backend/src/test/java/org/raddatz/familienarchiv/exception/GlobalExceptionHandlerTest.java diff --git a/backend/src/test/java/org/raddatz/familienarchiv/exception/GlobalExceptionHandlerTest.java b/backend/src/test/java/org/raddatz/familienarchiv/exception/GlobalExceptionHandlerTest.java new file mode 100644 index 00000000..a12933b8 --- /dev/null +++ b/backend/src/test/java/org/raddatz/familienarchiv/exception/GlobalExceptionHandlerTest.java @@ -0,0 +1,33 @@ +package org.raddatz.familienarchiv.exception; + +import io.sentry.Sentry; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.MockedStatic; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.http.ResponseEntity; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mockStatic; + +@ExtendWith(MockitoExtension.class) +class GlobalExceptionHandlerTest { + + @InjectMocks + private GlobalExceptionHandler handler; + + @Test + void handleGeneric_captures_exception_in_sentry_and_returns_500() { + RuntimeException ex = new RuntimeException("unexpected failure"); + + try (MockedStatic sentryMock = mockStatic(Sentry.class)) { + ResponseEntity response = handler.handleGeneric(ex); + + sentryMock.verify(() -> Sentry.captureException(ex)); + assertThat(response.getStatusCode().value()).isEqualTo(500); + assertThat(response.getBody()).isNotNull(); + assertThat(response.getBody().code()).isEqualTo(ErrorCode.INTERNAL_ERROR); + } + } +}