@@ -1407,6 +1407,111 @@ class KitManagerImplTest {
14071407 verify(runnable).run ()
14081408 }
14091409
1410+ @Test
1411+ fun testConfirmHashedEmail_When_HashedEmailUserIdentityType_Is_Other3 (){
1412+ var runnable: Runnable = mock(Runnable ::class .java)
1413+ var user: MParticleUser = mock(MParticleUser ::class .java)
1414+ val instance = MockMParticle ()
1415+ val sideloadedKit = mock(MPSideloadedKit ::class .java)
1416+ val kitId = 6000000
1417+
1418+ val configJSONObj = JSONObject ().apply {
1419+ put(" id" , kitId)
1420+ }
1421+ val mockedKitConfig = KitConfiguration .createKitConfiguration(configJSONObj)
1422+
1423+ `when `(mockedKitConfig.hashedEmailUserIdentityType).thenReturn(" Other3" )
1424+ `when `(sideloadedKit.configuration).thenReturn(mockedKitConfig)
1425+ val identityApi = mock(IdentityApi ::class .java)
1426+ val oldHashedEmail = " hashed_old@example.com"
1427+ val mockTask = mock(MParticleTask ::class .java) as MParticleTask <IdentityApiResult >
1428+ `when `(identityApi.identify(any())).thenReturn(mockTask)
1429+ val identities: MutableMap <MParticle .IdentityType , String > = HashMap ()
1430+ identities.put(MParticle .IdentityType .Other , oldHashedEmail)
1431+ `when `(user.userIdentities).thenReturn(identities)
1432+ instance.setIdentityApi(identityApi)
1433+ val settingsMap = hashMapOf(
1434+ " placementAttributesMapping" to """
1435+ [
1436+ // add placement attributes here if needed
1437+ ]
1438+ """ .trimIndent(),
1439+ " hashedEmailUserIdentityType" to " Other3"
1440+ )
1441+ val field = KitConfiguration ::class .java.getDeclaredField(" settings" )
1442+ field.isAccessible = true
1443+ field.set(mockedKitConfig, settingsMap)
1444+
1445+ val options = MParticleOptions .builder(MockContext ())
1446+ .sideloadedKits(mutableListOf (sideloadedKit) as List <SideloadedKit >).build()
1447+ val manager: KitManagerImpl = MockKitManagerImpl (options)
1448+ val method: Method = KitManagerImpl ::class .java.getDeclaredMethod(
1449+ " confirmEmail" ,
1450+ String ::class .java,
1451+ String ::class .java,
1452+ MParticleUser ::class .java,
1453+ IdentityApi ::class .java,
1454+ KitConfiguration ::class .java,
1455+ Runnable ::class .java
1456+ )
1457+ method.isAccessible = true
1458+ val result = method.invoke(manager, " " , " hashed_Test@gmail.com" , user, identityApi, mockedKitConfig, runnable)
1459+ verify(mockTask).addSuccessListener(any())
1460+ }
1461+
1462+
1463+ @Test
1464+ fun testConfirmHashedEmail_When_HashedEmailUserIdentityType_Is_UNASSIGNED (){
1465+ var runnable: Runnable = mock(Runnable ::class .java)
1466+ var user: MParticleUser = mock(MParticleUser ::class .java)
1467+ val instance = MockMParticle ()
1468+ val sideloadedKit = mock(MPSideloadedKit ::class .java)
1469+ val kitId = 6000000
1470+
1471+ val configJSONObj = JSONObject ().apply {
1472+ put(" id" , kitId)
1473+ }
1474+ val mockedKitConfig = KitConfiguration .createKitConfiguration(configJSONObj)
1475+
1476+ `when `(mockedKitConfig.hashedEmailUserIdentityType).thenReturn(" UNASSIGNED" )
1477+ `when `(sideloadedKit.configuration).thenReturn(mockedKitConfig)
1478+ val identityApi = mock(IdentityApi ::class .java)
1479+ val oldHashedEmail = " hashed_old@example.com"
1480+ val mockTask = mock(MParticleTask ::class .java) as MParticleTask <IdentityApiResult >
1481+ `when `(identityApi.identify(any())).thenReturn(mockTask)
1482+ val identities: MutableMap <MParticle .IdentityType , String > = HashMap ()
1483+ identities.put(MParticle .IdentityType .Other , oldHashedEmail)
1484+ `when `(user.userIdentities).thenReturn(identities)
1485+ instance.setIdentityApi(identityApi)
1486+ val settingsMap = hashMapOf(
1487+ " placementAttributesMapping" to """
1488+ [
1489+ // add placement attributes here if needed
1490+ ]
1491+ """ .trimIndent(),
1492+ " hashedEmailUserIdentityType" to " UNASSIGNED"
1493+ )
1494+ val field = KitConfiguration ::class .java.getDeclaredField(" settings" )
1495+ field.isAccessible = true
1496+ field.set(mockedKitConfig, settingsMap)
1497+
1498+ val options = MParticleOptions .builder(MockContext ())
1499+ .sideloadedKits(mutableListOf (sideloadedKit) as List <SideloadedKit >).build()
1500+ val manager: KitManagerImpl = MockKitManagerImpl (options)
1501+ val method: Method = KitManagerImpl ::class .java.getDeclaredMethod(
1502+ " confirmEmail" ,
1503+ String ::class .java,
1504+ String ::class .java,
1505+ MParticleUser ::class .java,
1506+ IdentityApi ::class .java,
1507+ KitConfiguration ::class .java,
1508+ Runnable ::class .java
1509+ )
1510+ method.isAccessible = true
1511+ val result = method.invoke(manager, " " , " hashed_Test@gmail.com" , user, identityApi, mockedKitConfig, runnable)
1512+ verify(mockTask).addSuccessListener(any())
1513+ }
1514+
14101515 @Test
14111516 fun testGetValueIgnoreCase_keyExistsDifferentCase () {
14121517 val sideloadedKit = mock(MPSideloadedKit ::class .java)
0 commit comments