@@ -357,6 +357,32 @@ public void identifyUserSkippedWithEmptyMap() throws InterruptedException {
357357 logbackVerifier .expectMessage (Level .DEBUG , "ODP identify event is not dispatched (fewer than 2 valid identifiers)." );
358358 }
359359
360+ @ Test
361+ public void identifyUserSendsWhenCommonIdentifiersProvideSecondIdentifier () throws InterruptedException {
362+ ODPEventManager eventManager = spy (new ODPEventManager (mockApiManager ));
363+ ArgumentCaptor <ODPEvent > captor = ArgumentCaptor .forClass (ODPEvent .class );
364+
365+ // VUID is set as a common identifier (e.g., vuid enabled in ODPManager)
366+ Map <String , String > commonIdentifiers = new HashMap <>();
367+ commonIdentifiers .put ("vuid" , "vuid_abc123" );
368+ eventManager .setUserCommonIdentifiers (commonIdentifiers );
369+
370+ // createUserContext passes only fs_user_id — a single identifier in the call
371+ Map <String , String > identifiers = new HashMap <>();
372+ identifiers .put ("fs_user_id" , "test-user" );
373+ eventManager .identifyUser (identifiers );
374+
375+ // Should NOT be dropped: common identifiers provide the second identifier (vuid),
376+ // making this a valid identify event with 2 identifiers total.
377+ verify (eventManager , times (1 )).sendEvent (captor .capture ());
378+
379+ ODPEvent event = captor .getValue ();
380+ Map <String , String > eventIdentifiers = event .getIdentifiers ();
381+ assertEquals (2 , eventIdentifiers .size ());
382+ assertEquals ("test-user" , eventIdentifiers .get ("fs_user_id" ));
383+ assertEquals ("vuid_abc123" , eventIdentifiers .get ("vuid" ));
384+ }
385+
360386 @ Test
361387 public void identifyUserSendsWithThreeIdentifiers () throws InterruptedException {
362388 ODPEventManager eventManager = spy (new ODPEventManager (mockApiManager ));
0 commit comments