@@ -907,13 +907,11 @@ describe('Parse.User testing', () => {
907907 } ) ) ;
908908 } ) ;
909909
910- // Note that this mocks out client-side Facebook action rather than
911- // server-side.
912- var getMockFacebookProvider = function ( ) {
910+ var getMockFacebookProviderWithIdToken = function ( id , token ) {
913911 return {
914912 authData : {
915- id : "8675309" ,
916- access_token : "jenny" ,
913+ id : id ,
914+ access_token : token ,
917915 expiration_date : new Date ( ) . toJSON ( ) ,
918916 } ,
919917 shouldError : false ,
@@ -951,6 +949,12 @@ describe('Parse.User testing', () => {
951949 this . restoreAuthentication ( null ) ;
952950 }
953951 } ;
952+ }
953+
954+ // Note that this mocks out client-side Facebook action rather than
955+ // server-side.
956+ var getMockFacebookProvider = function ( ) {
957+ return getMockFacebookProviderWithIdToken ( '8675309' , 'jenny' ) ;
954958 } ;
955959
956960 var getMockMyOauthProvider = function ( ) {
@@ -1025,6 +1029,40 @@ describe('Parse.User testing', () => {
10251029 } ) ;
10261030 } ) ;
10271031
1032+ it_exclude_dbs ( [ 'postgres' ] ) ( "log in with provider and update token" , ( done ) => {
1033+ var provider = getMockFacebookProvider ( ) ;
1034+ var secondProvider = getMockFacebookProviderWithIdToken ( '8675309' , 'jenny_valid_token' ) ;
1035+ var errorHandler = function ( err ) {
1036+ fail ( 'should not fail' ) ;
1037+ done ( ) ;
1038+ }
1039+ Parse . User . _registerAuthenticationProvider ( provider ) ;
1040+ Parse . User . _logInWith ( "facebook" , {
1041+ success : ( model ) => {
1042+ Parse . User . _registerAuthenticationProvider ( secondProvider ) ;
1043+ return Parse . User . logOut ( ) . then ( ( ) => {
1044+ Parse . User . _logInWith ( "facebook" , {
1045+ success : ( model ) => {
1046+ expect ( secondProvider . synchronizedAuthToken ) . toEqual ( 'jenny_valid_token' ) ;
1047+ // Make sure we can login with the new token again
1048+ Parse . User . logOut ( ) . then ( ( ) => {
1049+ Parse . User . _logInWith ( "facebook" , {
1050+ success : done ,
1051+ error : errorHandler
1052+ } ) ;
1053+ } ) ;
1054+ } ,
1055+ error : errorHandler
1056+ } ) ;
1057+ } )
1058+ } ,
1059+ error : errorHandler
1060+ } ) . catch ( ( err ) => {
1061+ errorHandler ( err ) ;
1062+ done ( ) ;
1063+ } ) ;
1064+ } ) ;
1065+
10281066 it_exclude_dbs ( [ 'postgres' ] ) ( 'returns authData when authed and logged in with provider (regression test for #1498)' , done => {
10291067 Parse . Object . enableSingleInstance ( ) ;
10301068 let provider = getMockFacebookProvider ( ) ;
@@ -1428,6 +1466,47 @@ describe('Parse.User testing', () => {
14281466 } ) ;
14291467 } ) ;
14301468
1469+ it_exclude_dbs ( [ 'postgres' ] ) ( "link multiple providers and updates token" , ( done ) => {
1470+ var provider = getMockFacebookProvider ( ) ;
1471+ var secondProvider = getMockFacebookProviderWithIdToken ( '8675309' , 'jenny_valid_token' ) ;
1472+
1473+ var errorHandler = function ( model , error ) {
1474+ console . error ( error ) ;
1475+ fail ( 'Should not fail' ) ;
1476+ done ( ) ;
1477+ }
1478+ var mockProvider = getMockMyOauthProvider ( ) ;
1479+ Parse . User . _registerAuthenticationProvider ( provider ) ;
1480+ Parse . User . _logInWith ( "facebook" , {
1481+ success : function ( model ) {
1482+ Parse . User . _registerAuthenticationProvider ( mockProvider ) ;
1483+ let objectId = model . id ;
1484+ model . _linkWith ( "myoauth" , {
1485+ success : function ( model ) {
1486+ Parse . User . _registerAuthenticationProvider ( secondProvider ) ;
1487+ Parse . User . logOut ( ) . then ( ( ) => {
1488+ return Parse . User . _logInWith ( "facebook" , {
1489+ success : ( ) => {
1490+ Parse . User . logOut ( ) . then ( ( ) => {
1491+ return Parse . User . _logInWith ( "myoauth" , {
1492+ success : ( user ) => {
1493+ expect ( user . id ) . toBe ( objectId ) ;
1494+ done ( ) ;
1495+ }
1496+ } )
1497+ } )
1498+ } ,
1499+ error : errorHandler
1500+ } ) ;
1501+ } )
1502+ } ,
1503+ error : errorHandler
1504+ } )
1505+ } ,
1506+ error : errorHandler
1507+ } ) ;
1508+ } ) ;
1509+
14311510 it_exclude_dbs ( [ 'postgres' ] ) ( "link multiple providers and update token" , ( done ) => {
14321511 var provider = getMockFacebookProvider ( ) ;
14331512 var mockProvider = getMockMyOauthProvider ( ) ;
0 commit comments