@@ -907,13 +907,11 @@ describe('Parse.User testing', () => {
907
907
} ) ) ;
908
908
} ) ;
909
909
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 ) {
913
911
return {
914
912
authData : {
915
- id : "8675309" ,
916
- access_token : "jenny" ,
913
+ id : id ,
914
+ access_token : token ,
917
915
expiration_date : new Date ( ) . toJSON ( ) ,
918
916
} ,
919
917
shouldError : false ,
@@ -951,6 +949,12 @@ describe('Parse.User testing', () => {
951
949
this . restoreAuthentication ( null ) ;
952
950
}
953
951
} ;
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' ) ;
954
958
} ;
955
959
956
960
var getMockMyOauthProvider = function ( ) {
@@ -1025,6 +1029,40 @@ describe('Parse.User testing', () => {
1025
1029
} ) ;
1026
1030
} ) ;
1027
1031
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
+
1028
1066
it_exclude_dbs ( [ 'postgres' ] ) ( 'returns authData when authed and logged in with provider (regression test for #1498)' , done => {
1029
1067
Parse . Object . enableSingleInstance ( ) ;
1030
1068
let provider = getMockFacebookProvider ( ) ;
@@ -1428,6 +1466,47 @@ describe('Parse.User testing', () => {
1428
1466
} ) ;
1429
1467
} ) ;
1430
1468
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
+
1431
1510
it_exclude_dbs ( [ 'postgres' ] ) ( "link multiple providers and update token" , ( done ) => {
1432
1511
var provider = getMockFacebookProvider ( ) ;
1433
1512
var mockProvider = getMockMyOauthProvider ( ) ;
0 commit comments