@@ -2257,12 +2257,14 @@ describe('Parse.User testing', () => {
2257
2257
} )
2258
2258
} ) ;
2259
2259
2260
- it ( ' should cleanup null authData keys ParseUser update (regression test for #1198)', ( done ) => {
2260
+ it_exclude_dbs ( [ 'postgres' ] ) ( ' should cleanup null authData keys ParseUser update (regression test for #1198, #2252 )', ( done ) => {
2261
2261
Parse . Cloud . beforeSave ( '_User' , ( req , res ) => {
2262
2262
req . object . set ( 'foo' , 'bar' ) ;
2263
2263
res . success ( ) ;
2264
2264
} ) ;
2265
-
2265
+
2266
+ let originalSessionToken ;
2267
+ let originalUserId ;
2266
2268
// Simulate anonymous user save
2267
2269
new Promise ( ( resolve , reject ) => {
2268
2270
request . post ( {
@@ -2280,6 +2282,8 @@ describe('Parse.User testing', () => {
2280
2282
}
2281
2283
} ) ;
2282
2284
} ) . then ( ( user ) => {
2285
+ originalSessionToken = user . sessionToken ;
2286
+ originalUserId = user . objectId ;
2283
2287
// Simulate registration
2284
2288
return new Promise ( ( resolve , reject ) => {
2285
2289
request . put ( {
@@ -2291,7 +2295,7 @@ describe('Parse.User testing', () => {
2291
2295
} ,
2292
2296
json : {
2293
2297
authData : { anonymous : null } ,
2294
- user : 'user' ,
2298
+ username : 'user' ,
2295
2299
password : 'password' ,
2296
2300
}
2297
2301
} , ( err , res , body ) => {
@@ -2305,8 +2309,84 @@ describe('Parse.User testing', () => {
2305
2309
} ) . then ( ( user ) => {
2306
2310
expect ( typeof user ) . toEqual ( 'object' ) ;
2307
2311
expect ( user . authData ) . toBeUndefined ( ) ;
2312
+ expect ( user . sessionToken ) . not . toBeUndefined ( ) ;
2313
+ // Session token should have changed
2314
+ expect ( user . sessionToken ) . not . toEqual ( originalSessionToken ) ;
2315
+ // test that the sessionToken is valid
2316
+ return new Promise ( ( resolve , reject ) => {
2317
+ request . get ( {
2318
+ url : 'http://localhost:8378/1/users/me' ,
2319
+ headers : {
2320
+ 'X-Parse-Application-Id' : Parse . applicationId ,
2321
+ 'X-Parse-Session-Token' : user . sessionToken ,
2322
+ 'X-Parse-REST-API-Key' : 'rest' ,
2323
+ } ,
2324
+ json : true
2325
+ } , ( err , res , body ) => {
2326
+ expect ( body . username ) . toEqual ( user . username ) ;
2327
+ expect ( body . objectId ) . toEqual ( originalUserId ) ;
2328
+ if ( err ) {
2329
+ reject ( err ) ;
2330
+ } else {
2331
+ resolve ( body ) ;
2332
+ }
2333
+ done ( ) ;
2334
+ } ) ;
2335
+ } ) ;
2336
+ } ) . catch ( ( err ) => {
2337
+ fail ( 'no request should fail: ' + JSON . stringify ( err ) ) ;
2338
+ done ( ) ;
2339
+ } ) ;
2340
+ } ) ;
2341
+
2342
+ it_exclude_dbs ( [ 'postgres' ] ) ( 'should send email when upgrading from anon' , ( done ) => {
2343
+
2344
+ let emailCalled = false ;
2345
+ let emailOptions ;
2346
+ var emailAdapter = {
2347
+ sendVerificationEmail : ( options ) => {
2348
+ emailOptions = options ;
2349
+ emailCalled = true ;
2350
+ } ,
2351
+ sendPasswordResetEmail : ( ) => Promise . resolve ( ) ,
2352
+ sendMail : ( ) => Promise . resolve ( )
2353
+ }
2354
+ reconfigureServer ( {
2355
+ appName : 'unused' ,
2356
+ verifyUserEmails : true ,
2357
+ emailAdapter : emailAdapter ,
2358
+ publicServerURL : "http://localhost:8378/1"
2359
+ } )
2360
+ // Simulate anonymous user save
2361
+ return rp . post ( {
2362
+ url : 'http://localhost:8378/1/classes/_User' ,
2363
+ headers : {
2364
+ 'X-Parse-Application-Id' : Parse . applicationId ,
2365
+ 'X-Parse-REST-API-Key' : 'rest' ,
2366
+ } ,
2367
+ json : { authData : { anonymous : { id : '00000000-0000-0000-0000-000000000001' } } }
2368
+ } ) . then ( ( user ) => {
2369
+ return rp . put ( {
2370
+ url : 'http://localhost:8378/1/classes/_User/' + user . objectId ,
2371
+ headers : {
2372
+ 'X-Parse-Application-Id' : Parse . applicationId ,
2373
+ 'X-Parse-Session-Token' : user . sessionToken ,
2374
+ 'X-Parse-REST-API-Key' : 'rest' ,
2375
+ } ,
2376
+ json : {
2377
+ authData : { anonymous : null } ,
2378
+ username : 'user' ,
2379
+
2380
+ password : 'password' ,
2381
+ }
2382
+ } ) ;
2383
+ } ) . then ( ( ) => {
2384
+ expect ( emailCalled ) . toBe ( true ) ;
2385
+ expect ( emailOptions ) . not . toBeUndefined ( ) ;
2386
+ expect ( emailOptions . user . get ( 'email' ) ) . toEqual ( '[email protected] ' ) ;
2308
2387
done ( ) ;
2309
2388
} ) . catch ( ( err ) => {
2389
+ console . error ( err ) ;
2310
2390
fail ( 'no request should fail: ' + JSON . stringify ( err ) ) ;
2311
2391
done ( ) ;
2312
2392
} ) ;
@@ -2471,9 +2551,16 @@ describe('Parse.User testing', () => {
2471
2551
user . set ( 'password' , 'password' ) ;
2472
2552
return user . save ( )
2473
2553
} )
2554
+ . then ( ( ) => {
2555
+ // Session token should have been recycled
2556
+ expect ( body . sessionToken ) . not . toEqual ( user . getSessionToken ( ) ) ;
2557
+ } )
2474
2558
. then ( ( ) => obj . fetch ( ) )
2559
+ . then ( ( res ) => {
2560
+ done ( ) ;
2561
+ } )
2475
2562
. catch ( error => {
2476
- expect ( error . code ) . toEqual ( Parse . Error . INVALID_SESSION_TOKEN ) ;
2563
+ fail ( 'should not fail' )
2477
2564
done ( ) ;
2478
2565
} ) ;
2479
2566
} )
0 commit comments