@@ -5,6 +5,7 @@ var Config = require('../src/Config');
5
5
var Parse = require ( 'parse/node' ) . Parse ;
6
6
var rest = require ( '../src/rest' ) ;
7
7
var request = require ( 'request' ) ;
8
+ var rp = require ( 'request-promise' ) ;
8
9
9
10
let config ;
10
11
let database ;
@@ -498,6 +499,99 @@ describe('rest create', () => {
498
499
expect ( error . code ) . toEqual ( 119 ) ;
499
500
done ( ) ;
500
501
} )
502
+ } ) ;
503
+
504
+ it ( 'locks down session' , ( done ) => {
505
+ let currentUser ;
506
+ Parse . User . signUp ( 'foo' , 'bar' ) . then ( ( user ) => {
507
+ currentUser = user ;
508
+ const sessionToken = user . getSessionToken ( ) ;
509
+ var headers = {
510
+ 'Content-Type' : 'application/octet-stream' ,
511
+ 'X-Parse-Application-Id' : 'test' ,
512
+ 'X-Parse-REST-API-Key' : 'rest' ,
513
+ 'X-Parse-Session-Token' : sessionToken ,
514
+ } ;
515
+ let sessionId ;
516
+ return rp . get ( {
517
+ headers : headers ,
518
+ url : 'http://localhost:8378/1/sessions/me' ,
519
+ json : true ,
520
+ } ) . then ( body => {
521
+ sessionId = body . objectId ;
522
+ return rp . put ( {
523
+ headers,
524
+ url : 'http://localhost:8378/1/sessions/' + sessionId ,
525
+ json : {
526
+ installationId : 'yolo'
527
+ }
528
+ } )
529
+ } ) . then ( done . fail , ( res ) => {
530
+ expect ( res . statusCode ) . toBe ( 400 ) ;
531
+ expect ( res . error . code ) . toBe ( 105 ) ;
532
+ return rp . put ( {
533
+ headers,
534
+ url : 'http://localhost:8378/1/sessions/' + sessionId ,
535
+ json : {
536
+ sessionToken : 'yolo'
537
+ }
538
+ } )
539
+ } ) . then ( done . fail , ( res ) => {
540
+ expect ( res . statusCode ) . toBe ( 400 ) ;
541
+ expect ( res . error . code ) . toBe ( 105 ) ;
542
+ return Parse . User . signUp ( 'other' , 'user' ) ;
543
+ } ) . then ( ( otherUser ) => {
544
+ const user = new Parse . User ( ) ;
545
+ user . id = otherUser . id ;
546
+ return rp . put ( {
547
+ headers,
548
+ url : 'http://localhost:8378/1/sessions/' + sessionId ,
549
+ json : {
550
+ user : Parse . _encode ( user )
551
+ }
552
+ } )
553
+ } ) . then ( done . fail , ( res ) => {
554
+ expect ( res . statusCode ) . toBe ( 400 ) ;
555
+ expect ( res . error . code ) . toBe ( 105 ) ;
556
+ const user = new Parse . User ( ) ;
557
+ user . id = currentUser . id ;
558
+ return rp . put ( {
559
+ headers,
560
+ url : 'http://localhost:8378/1/sessions/' + sessionId ,
561
+ json : {
562
+ user : Parse . _encode ( user )
563
+ }
564
+ } )
565
+ } ) . then ( done ) . catch ( done . fail ) ;
566
+ } ) . catch ( done . fail ) ;
567
+ } ) ;
568
+
569
+ it ( 'sets current user in new sessions' , ( done ) => {
570
+ let currentUser ;
571
+ Parse . User . signUp ( 'foo' , 'bar' )
572
+ . then ( ( user ) => {
573
+ currentUser = user ;
574
+ const sessionToken = user . getSessionToken ( ) ;
575
+ const headers = {
576
+ 'X-Parse-Application-Id' : 'test' ,
577
+ 'X-Parse-REST-API-Key' : 'rest' ,
578
+ 'X-Parse-Session-Token' : sessionToken ,
579
+ } ;
580
+ return rp . post ( {
581
+ headers,
582
+ url : 'http://localhost:8378/1/sessions' ,
583
+ json : true ,
584
+ body : { 'user' : { '__type' : 'Pointer' , 'className' :'_User' , 'objectId' : 'fakeId' } } ,
585
+ } )
586
+ } )
587
+ . then ( ( body ) => {
588
+ if ( body . user . objectId === currentUser . id ) {
589
+ return done ( ) ;
590
+ } else {
591
+ return done . fail ( ) ;
592
+ }
593
+ } )
594
+ . catch ( done . fail ) ;
501
595
} )
502
596
} ) ;
503
597
0 commit comments