From fa191b5c05d17c04179168a957f33ef73990b11a Mon Sep 17 00:00:00 2001 From: Marcel Date: Fri, 15 May 2026 09:43:08 +0200 Subject: [PATCH] test(config): unit-test SentryConfig blank-DSN no-op and non-blank init paths Co-Authored-By: Claude Sonnet 4.6 --- .../config/SentryConfigTest.java | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 backend/src/test/java/org/raddatz/familienarchiv/config/SentryConfigTest.java diff --git a/backend/src/test/java/org/raddatz/familienarchiv/config/SentryConfigTest.java b/backend/src/test/java/org/raddatz/familienarchiv/config/SentryConfigTest.java new file mode 100644 index 00000000..022a1b63 --- /dev/null +++ b/backend/src/test/java/org/raddatz/familienarchiv/config/SentryConfigTest.java @@ -0,0 +1,53 @@ +package org.raddatz.familienarchiv.config; + +import io.sentry.Sentry; +import org.junit.jupiter.api.Test; +import org.mockito.MockedStatic; +import org.springframework.test.util.ReflectionTestUtils; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mockStatic; +import static org.mockito.Mockito.times; + +class SentryConfigTest { + + @Test + void init_does_not_call_sentry_when_dsn_is_blank() { + SentryConfig config = new SentryConfig(); + ReflectionTestUtils.setField(config, "dsn", ""); + ReflectionTestUtils.setField(config, "environment", "test"); + ReflectionTestUtils.setField(config, "tracesSampleRate", 1.0); + + try (MockedStatic sentryMock = mockStatic(Sentry.class)) { + config.init(); + sentryMock.verifyNoInteractions(); + } + } + + @Test + void init_calls_sentry_init_when_dsn_is_set() { + SentryConfig config = new SentryConfig(); + ReflectionTestUtils.setField(config, "dsn", "https://key@glitchtip.example.com/1"); + ReflectionTestUtils.setField(config, "environment", "test"); + ReflectionTestUtils.setField(config, "tracesSampleRate", 0.5); + + try (MockedStatic sentryMock = mockStatic(Sentry.class)) { + config.init(); + sentryMock.verify(() -> Sentry.init(any(Sentry.OptionsConfiguration.class)), times(1)); + } + } + + @Test + void init_does_not_call_sentry_when_dsn_is_null() { + SentryConfig config = new SentryConfig(); + ReflectionTestUtils.setField(config, "dsn", null); + ReflectionTestUtils.setField(config, "environment", "test"); + ReflectionTestUtils.setField(config, "tracesSampleRate", 1.0); + + try (MockedStatic sentryMock = mockStatic(Sentry.class)) { + config.init(); + sentryMock.verifyNoInteractions(); + } + } +}