@@ -1457,7 +1457,7 @@ describe('Parse.User testing', () => {
14571457 expect ( result . get ( 'authData' ) . facebook . access_token ) . toBe ( 'jenny' ) ;
14581458 } ) ;
14591459
1460- it ( 'only creates a single session for an installation / user pair (#2885)' , async done => {
1460+ it ( 'only creates a single session for an installation / user pair (#2885)' , async ( ) => {
14611461 Parse . Object . disableSingleInstance ( ) ;
14621462 const provider = getMockFacebookProvider ( ) ;
14631463 Parse . User . _registerAuthenticationProvider ( provider ) ;
@@ -1466,18 +1466,19 @@ describe('Parse.User testing', () => {
14661466 const user = await Parse . User . logInWith ( 'facebook' ) ;
14671467 const sessionToken = user . getSessionToken ( ) ;
14681468 const query = new Parse . Query ( '_Session' ) ;
1469- return query
1470- . find ( { useMasterKey : true } )
1471- . then ( results => {
1472- expect ( results . length ) . toBe ( 1 ) ;
1473- expect ( results [ 0 ] . get ( 'sessionToken' ) ) . toBe ( sessionToken ) ;
1474- expect ( results [ 0 ] . get ( 'createdWith' ) ) . toEqual ( {
1475- action : 'login' ,
1476- authProvider : 'facebook' ,
1477- } ) ;
1478- done ( ) ;
1479- } )
1480- . catch ( done . fail ) ;
1469+ // destroyDuplicatedSessions is fire-and-forget, poll until cleanup completes
1470+ let results ;
1471+ for ( let i = 0 ; i < 10 ; i ++ ) {
1472+ results = await query . find ( { useMasterKey : true } ) ;
1473+ if ( results . length <= 1 ) { break ; }
1474+ await new Promise ( resolve => setTimeout ( resolve , 100 ) ) ;
1475+ }
1476+ expect ( results . length ) . toBe ( 1 ) ;
1477+ expect ( results [ 0 ] . get ( 'sessionToken' ) ) . toBe ( sessionToken ) ;
1478+ expect ( results [ 0 ] . get ( 'createdWith' ) ) . toEqual ( {
1479+ action : 'login' ,
1480+ authProvider : 'facebook' ,
1481+ } ) ;
14811482 } ) ;
14821483
14831484 it ( 'log in with provider with files' , done => {
0 commit comments