diff --git a/sdk/src/test/java/com/uid2/UID2ClientTest.kt b/sdk/src/test/java/com/uid2/UID2ClientTest.kt index 4d24b56..93c55c8 100644 --- a/sdk/src/test/java/com/uid2/UID2ClientTest.kt +++ b/sdk/src/test/java/com/uid2/UID2ClientTest.kt @@ -220,6 +220,29 @@ class UID2ClientTest { assertEquals(expectedIdentity, response.identity) } + @Test + fun `test generate opt-out`() = runTest(testDispatcher) { + val client = withClient() + + // Configure the network request to return a status which indicates the user has opted-out. + val unencrypted = JSONObject(TestData.REFRESH_TOKEN_OPT_OUT_DECRYPTED) + every { dataEnvelope.decrypt(any(), any(), any()) }.returns( + unencrypted.toString().toByteArray(), + ) + every { networkSession.loadData(any(), any()) }.returns(NetworkResponse(200, "some data")) + + val response = client.generateIdentity( + IdentityRequest.Email("test@test.com"), + SUBSCRIPTION_ID, + PUBLIC_KEY, + ) + assertNotNull(response) + + // Verify that we don't receive any identity but the status explicitly tells us that they have opted-out. + assertNull(response.identity) + assertEquals(IdentityStatus.OPT_OUT, response.status) + } + //endregion //region refreshIdentity diff --git a/sdk/src/test/java/com/uid2/UID2ManagerTest.kt b/sdk/src/test/java/com/uid2/UID2ManagerTest.kt index 3a71b49..32baba1 100644 --- a/sdk/src/test/java/com/uid2/UID2ManagerTest.kt +++ b/sdk/src/test/java/com/uid2/UID2ManagerTest.kt @@ -197,6 +197,29 @@ class UID2ManagerTest { assertTrue(result is GenerateIdentityResult.Error) } + @Test + fun `generates for opt-out identity`() = runTest(testDispatcher) { + val subscriptionId = "sub" + val publicKey = "pub" + + val request = IdentityRequest.Email("test@test.com") + coEvery { client.generateIdentity(request, subscriptionId, publicKey) }.returns( + ResponsePackage(null, OPT_OUT, ""), + ) + + // Request a new identity should be generated. + var result: GenerateIdentityResult? = null + manager.generateIdentity(request, subscriptionId, publicKey) { result = it } + testDispatcher.scheduler.advanceUntilIdle() + + // Verify that after generating the identity, there is no current identity but the expected OPT_OUT status. + assertNull(manager.currentIdentity) + assertEquals(OPT_OUT, manager.currentIdentityStatus) + + // Verify that the result callback was invoked. + assertTrue(result is GenerateIdentityResult.Success) + } + @Test fun `resets identity`() = runTest(testDispatcher) { // Verify that the initial state of the manager reflects the restored Identity.