From 74b671875944bcad7e10e95ab8260485ddfd19c5 Mon Sep 17 00:00:00 2001 From: Manoel Aranda Neto Date: Thu, 12 Dec 2019 12:26:43 -0800 Subject: [PATCH 1/3] throw exception if DSN is not set --- .../io/sentry/android/core/ManifestMetadataReader.java | 9 +++++++-- .../io/sentry/android/core/SentryInitProviderTest.kt | 6 ++---- sentry-core/src/main/java/io/sentry/core/Sentry.java | 4 +++- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/sentry-android-core/src/main/java/io/sentry/android/core/ManifestMetadataReader.java b/sentry-android-core/src/main/java/io/sentry/android/core/ManifestMetadataReader.java index 29f325de7..f9d76483c 100644 --- a/sentry-android-core/src/main/java/io/sentry/android/core/ManifestMetadataReader.java +++ b/sentry-android-core/src/main/java/io/sentry/android/core/ManifestMetadataReader.java @@ -55,10 +55,15 @@ static void applyMetadata(Context context, SentryAndroidOptions options) { options.setAnrTimeoutIntervalMills(anrTimeoutIntervalMills); String dsn = metadata.getString(DSN_KEY, null); - if (dsn != null) { + if (dsn == null) { + logIfNotNull(options.getLogger(), SentryLevel.FATAL, "DSN is required."); + } else if (dsn.isEmpty()) { + logIfNotNull( + options.getLogger(), SentryLevel.DEBUG, "DSN is empty, disabling sentry-android"); + } else { logIfNotNull(options.getLogger(), SentryLevel.DEBUG, "DSN read: %s", dsn); - options.setDsn(dsn); } + options.setDsn(dsn); boolean ndk = metadata.getBoolean(ENABLE_NDK, options.isEnableNdk()); logIfNotNull(options.getLogger(), SentryLevel.DEBUG, "NDK read: %s", ndk); diff --git a/sentry-android-core/src/test/java/io/sentry/android/core/SentryInitProviderTest.kt b/sentry-android-core/src/test/java/io/sentry/android/core/SentryInitProviderTest.kt index 86b53e314..678d9f0a0 100644 --- a/sentry-android-core/src/test/java/io/sentry/android/core/SentryInitProviderTest.kt +++ b/sentry-android-core/src/test/java/io/sentry/android/core/SentryInitProviderTest.kt @@ -80,7 +80,7 @@ class SentryInitProviderTest { } @Test - fun `when applicationId is defined, dsn in meta-data is not set or null, SDK doesnt initialize`() { + fun `when applicationId is defined, dsn in meta-data is not set or null, SDK throws exception`() { val providerInfo = ProviderInfo() assertFalse(Sentry.isEnabled()) @@ -92,9 +92,7 @@ class SentryInitProviderTest { metaData.putString(ManifestMetadataReader.DSN_KEY, null) - sentryInitProvider.attachInfo(mockContext, providerInfo) - - assertFalse(Sentry.isEnabled()) + assertFailsWith { sentryInitProvider.attachInfo(mockContext, providerInfo) } } @Test diff --git a/sentry-core/src/main/java/io/sentry/core/Sentry.java b/sentry-core/src/main/java/io/sentry/core/Sentry.java index 3eca18014..e1088bd68 100644 --- a/sentry-core/src/main/java/io/sentry/core/Sentry.java +++ b/sentry-core/src/main/java/io/sentry/core/Sentry.java @@ -50,7 +50,9 @@ public static void init(@NotNull OptionsConfiguration optionsConf private static synchronized void init(@NotNull T options) { String dsn = options.getDsn(); - if (dsn == null || dsn.isEmpty()) { + if (dsn == null) { + throw new IllegalArgumentException("DSN is required"); + } else if (dsn.isEmpty()) { close(); return; } From 3f81f2340beff339b43ec15bfb7d04f2a3f1dede Mon Sep 17 00:00:00 2001 From: Manoel Aranda Neto <5731772+marandaneto@users.noreply.github.com> Date: Thu, 12 Dec 2019 14:03:31 -0800 Subject: [PATCH 2/3] Update sentry-android-core/src/main/java/io/sentry/android/core/ManifestMetadataReader.java Co-Authored-By: Bruno Garcia --- .../java/io/sentry/android/core/ManifestMetadataReader.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sentry-android-core/src/main/java/io/sentry/android/core/ManifestMetadataReader.java b/sentry-android-core/src/main/java/io/sentry/android/core/ManifestMetadataReader.java index f9d76483c..c7f50cf36 100644 --- a/sentry-android-core/src/main/java/io/sentry/android/core/ManifestMetadataReader.java +++ b/sentry-android-core/src/main/java/io/sentry/android/core/ManifestMetadataReader.java @@ -56,7 +56,7 @@ static void applyMetadata(Context context, SentryAndroidOptions options) { String dsn = metadata.getString(DSN_KEY, null); if (dsn == null) { - logIfNotNull(options.getLogger(), SentryLevel.FATAL, "DSN is required."); + logIfNotNull(options.getLogger(), SentryLevel.FATAL, "DSN is required. Use empty string to disable SDK."); } else if (dsn.isEmpty()) { logIfNotNull( options.getLogger(), SentryLevel.DEBUG, "DSN is empty, disabling sentry-android"); From 124dda63ca65a0d21ee4bf382d3967b74584d252 Mon Sep 17 00:00:00 2001 From: Manoel Aranda Neto <5731772+marandaneto@users.noreply.github.com> Date: Thu, 12 Dec 2019 14:04:36 -0800 Subject: [PATCH 3/3] Update sentry-core/src/main/java/io/sentry/core/Sentry.java --- sentry-core/src/main/java/io/sentry/core/Sentry.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sentry-core/src/main/java/io/sentry/core/Sentry.java b/sentry-core/src/main/java/io/sentry/core/Sentry.java index e1088bd68..19a12d002 100644 --- a/sentry-core/src/main/java/io/sentry/core/Sentry.java +++ b/sentry-core/src/main/java/io/sentry/core/Sentry.java @@ -51,7 +51,7 @@ public static void init(@NotNull OptionsConfiguration optionsConf private static synchronized void init(@NotNull T options) { String dsn = options.getDsn(); if (dsn == null) { - throw new IllegalArgumentException("DSN is required"); + throw new IllegalArgumentException("DSN is required. Use empty string to disable SDK."); } else if (dsn.isEmpty()) { close(); return;