@@ -203,7 +203,10 @@ public void prepareCorrectPayloadForIdentifyUser() throws InterruptedException {
203203 eventManager .updateSettings (odpConfig );
204204 eventManager .start ();
205205 for (int i = 0 ; i < 2 ; i ++) {
206- eventManager .identifyUser ("the-vuid-" + i , "the-fs-user-id-" + i );
206+ Map <String , String > identifiers = new HashMap <>();
207+ identifiers .put ("vuid" , "the-vuid-" + i );
208+ identifiers .put ("fs_user_id" , "the-fs-user-id-" + i );
209+ eventManager .identifyUser (identifiers );
207210 }
208211
209212 Thread .sleep (1500 );
@@ -290,61 +293,88 @@ public void preparePayloadForIdentifyUserWithVariationsOfFsUserId() throws Inter
290293 }
291294
292295 @ Test
293- public void identifyUserWithVuidAndUserId () throws InterruptedException {
296+ public void identifyUserWithMultipleIdentifiers () throws InterruptedException {
294297 ODPEventManager eventManager = spy (new ODPEventManager (mockApiManager ));
295298 ArgumentCaptor <ODPEvent > captor = ArgumentCaptor .forClass (ODPEvent .class );
296299
297- eventManager .identifyUser ("vuid_123" , "test-user" );
300+ Map <String , String > identifiers = new HashMap <>();
301+ identifiers .put ("vuid" , "vuid_123" );
302+ identifiers .put ("fs_user_id" , "test-user" );
303+ eventManager .identifyUser (identifiers );
298304 verify (eventManager , times (1 )).sendEvent (captor .capture ());
299305
300306 ODPEvent event = captor .getValue ();
301- Map <String , String > identifiers = event .getIdentifiers ();
302- assertEquals (identifiers .size (), 2 );
303- assertEquals (identifiers .get ("vuid" ), "vuid_123" );
304- assertEquals (identifiers .get ("fs_user_id" ), "test-user" );
307+ Map <String , String > eventIdentifiers = event .getIdentifiers ();
308+ assertEquals (eventIdentifiers .size (), 2 );
309+ assertEquals (eventIdentifiers .get ("vuid" ), "vuid_123" );
310+ assertEquals (eventIdentifiers .get ("fs_user_id" ), "test-user" );
305311 }
306312
307313 @ Test
308- public void identifyUserWithVuidOnly () throws InterruptedException {
314+ public void identifyUserSkippedWithSingleIdentifier () throws InterruptedException {
309315 ODPEventManager eventManager = spy (new ODPEventManager (mockApiManager ));
310- ArgumentCaptor <ODPEvent > captor = ArgumentCaptor .forClass (ODPEvent .class );
311316
312- eventManager .identifyUser ("vuid_123" , null );
313- verify (eventManager , times (1 )).sendEvent (captor .capture ());
317+ Map <String , String > identifiers = new HashMap <>();
318+ identifiers .put ("fs_user_id" , "test-user" );
319+ eventManager .identifyUser (identifiers );
320+ verify (eventManager , never ()).sendEvent (any (ODPEvent .class ));
321+ logbackVerifier .expectMessage (Level .DEBUG , "ODP identify event is not dispatched (only one identifier provided)." );
322+ }
314323
315- ODPEvent event = captor .getValue ();
316- Map <String , String > identifiers = event .getIdentifiers ();
317- assertEquals (identifiers .size (), 1 );
318- assertEquals (identifiers .get ("vuid" ), "vuid_123" );
324+ @ Test
325+ public void identifyUserSkippedWithEmptyValues () throws InterruptedException {
326+ ODPEventManager eventManager = spy (new ODPEventManager (mockApiManager ));
327+
328+ // Two keys but one has empty value - only 1 valid identifier
329+ Map <String , String > identifiers = new HashMap <>();
330+ identifiers .put ("fs_user_id" , "test-user" );
331+ identifiers .put ("email" , "" );
332+ eventManager .identifyUser (identifiers );
333+ verify (eventManager , never ()).sendEvent (any (ODPEvent .class ));
334+ logbackVerifier .expectMessage (Level .DEBUG , "ODP identify event is not dispatched (only one identifier provided)." );
319335 }
320336
321337 @ Test
322- public void identifyUserWithUserIdOnly () throws InterruptedException {
338+ public void identifyUserSkippedWithNullValues () throws InterruptedException {
323339 ODPEventManager eventManager = spy (new ODPEventManager (mockApiManager ));
324- ArgumentCaptor <ODPEvent > captor = ArgumentCaptor .forClass (ODPEvent .class );
325340
326- eventManager .identifyUser (null , "test-user" );
327- verify (eventManager , times (1 )).sendEvent (captor .capture ());
341+ // Two keys but one has null value - only 1 valid identifier
342+ Map <String , String > identifiers = new HashMap <>();
343+ identifiers .put ("fs_user_id" , "test-user" );
344+ identifiers .put ("vuid" , null );
345+ eventManager .identifyUser (identifiers );
346+ verify (eventManager , never ()).sendEvent (any (ODPEvent .class ));
347+ logbackVerifier .expectMessage (Level .DEBUG , "ODP identify event is not dispatched (only one identifier provided)." );
348+ }
328349
329- ODPEvent event = captor .getValue ();
330- Map <String , String > identifiers = event .getIdentifiers ();
331- assertEquals (identifiers .size (), 1 );
332- assertEquals (identifiers .get ("fs_user_id" ), "test-user" );
350+ @ Test
351+ public void identifyUserSkippedWithEmptyMap () throws InterruptedException {
352+ ODPEventManager eventManager = spy (new ODPEventManager (mockApiManager ));
353+
354+ Map <String , String > identifiers = new HashMap <>();
355+ eventManager .identifyUser (identifiers );
356+ verify (eventManager , never ()).sendEvent (any (ODPEvent .class ));
357+ logbackVerifier .expectMessage (Level .DEBUG , "ODP identify event is not dispatched (only one identifier provided)." );
333358 }
334359
335360 @ Test
336- public void identifyUserWithVuidAsUserId () throws InterruptedException {
361+ public void identifyUserSendsWithThreeIdentifiers () throws InterruptedException {
337362 ODPEventManager eventManager = spy (new ODPEventManager (mockApiManager ));
338363 ArgumentCaptor <ODPEvent > captor = ArgumentCaptor .forClass (ODPEvent .class );
339364
340- eventManager .identifyUser (null , "vuid_123" );
365+ Map <String , String > identifiers = new HashMap <>();
366+ identifiers .put ("vuid" , "vuid_123" );
367+ identifiers .put ("fs_user_id" , "test-user" );
368+ identifiers .put ("email" , "test@example.com" );
369+ eventManager .identifyUser (identifiers );
341370 verify (eventManager , times (1 )).sendEvent (captor .capture ());
342371
343372 ODPEvent event = captor .getValue ();
344- Map <String , String > identifiers = event .getIdentifiers ();
345- assertEquals (identifiers .size (), 1 );
346- // SDK will convert userId to vuid when userId has a valid vuid format.
347- assertEquals (identifiers .get ("vuid" ), "vuid_123" );
373+ Map <String , String > eventIdentifiers = event .getIdentifiers ();
374+ assertEquals (3 , eventIdentifiers .size ());
375+ assertEquals ("vuid_123" , eventIdentifiers .get ("vuid" ));
376+ assertEquals ("test-user" , eventIdentifiers .get ("fs_user_id" ));
377+ assertEquals ("test@example.com" , eventIdentifiers .get ("email" ));
348378 }
349379
350380 @ Test
0 commit comments