From f72f6b16c023a8f3dc4ab1de2b59f6720355bbe0 Mon Sep 17 00:00:00 2001 From: emawby Date: Thu, 12 Aug 2021 09:26:57 -0700 Subject: [PATCH] Checking shouldLogUserPrivacyConsentErrorMessage for outcomes --- .../main/java/com/onesignal/OneSignal.java | 8 +++ .../OutcomeEventIntegrationTests.java | 49 +++++++++++++++++++ 2 files changed, 57 insertions(+) diff --git a/OneSignalSDK/onesignal/src/main/java/com/onesignal/OneSignal.java b/OneSignalSDK/onesignal/src/main/java/com/onesignal/OneSignal.java index 9bf020dcaa..a939deec26 100644 --- a/OneSignalSDK/onesignal/src/main/java/com/onesignal/OneSignal.java +++ b/OneSignalSDK/onesignal/src/main/java/com/onesignal/OneSignal.java @@ -3304,6 +3304,10 @@ public void run() { return; } + if (shouldLogUserPrivacyConsentErrorMessageForMethodName("sendOutcome()")) { + return; + } + outcomeEventsController.sendOutcomeEvent(name, callback); } @@ -3329,6 +3333,10 @@ public void run() { return; } + if (shouldLogUserPrivacyConsentErrorMessageForMethodName("sendUniqueOutcome()")) { + return; + } + outcomeEventsController.sendUniqueOutcomeEvent(name, callback); } diff --git a/OneSignalSDK/unittest/src/test/java/com/test/onesignal/OutcomeEventIntegrationTests.java b/OneSignalSDK/unittest/src/test/java/com/test/onesignal/OutcomeEventIntegrationTests.java index 172abb2aed..bbd6a80411 100644 --- a/OneSignalSDK/unittest/src/test/java/com/test/onesignal/OutcomeEventIntegrationTests.java +++ b/OneSignalSDK/unittest/src/test/java/com/test/onesignal/OutcomeEventIntegrationTests.java @@ -1141,6 +1141,55 @@ public void testDelayOutcomes() throws Exception { assertMeasureAtIndex(1, ONESIGNAL_OUTCOME_NAME); } + @Test + public void testSendOutcomesFailWhenRequiresUserPrivacyConsent() throws Exception { + // Enable IAM v2 + preferences = new MockOSSharedPreferences(); + trackerFactory = new OSTrackerFactory(preferences, logger, time); + sessionManager = new MockSessionManager(sessionListener, trackerFactory, logger); + preferences.saveBool(preferences.getPreferencesName(), preferences.getOutcomesV2KeyName(), true); + OneSignal_setSharedPreferences(preferences); + + OneSignalInit(); + threadAndTaskWait(); + assertRestCalls(2); + OneSignal.setRequiresUserPrivacyConsent(true); + + // Make sure session is UNATTRIBUTED + assertNotificationChannelUnattributedInfluence(); + + // Send unique outcome event + OneSignal.sendUniqueOutcome(ONESIGNAL_OUTCOME_NAME); + threadAndTaskWait(); + + // Check that the task has been queued until consent is given + assertRestCalls(2); + + // Send outcome event + OneSignal.sendOutcome(ONESIGNAL_OUTCOME_NAME); + threadAndTaskWait(); + + // Ensure still only 2 requests have been made + assertRestCalls(2); + + OneSignal.provideUserConsent(true); + threadAndTaskWait(); + + // Send unique outcome event + OneSignal.sendUniqueOutcome(ONESIGNAL_OUTCOME_NAME); + threadAndTaskWait(); + + // Send outcome event + OneSignal.sendOutcome(ONESIGNAL_OUTCOME_NAME); + threadAndTaskWait(); + + // Make sure session is UNATTRIBUTED + assertNotificationChannelUnattributedInfluence(); + + // Check measure end point was most recent request and contains received notification + assertMeasureOnV2AtIndex(3, ONESIGNAL_OUTCOME_NAME, null, null, null, null); + } + private void foregroundAppAfterClickingNotification() throws Exception { OneSignalInit(); threadAndTaskWait();