@@ -15,35 +15,18 @@ describe('ParseServerRESTController', () => {
15
15
) ;
16
16
} ) ;
17
17
18
- it ( 'should handle a get request' , done => {
19
- RESTController . request ( 'GET' , '/classes/MyObject' ) . then (
20
- res => {
21
- expect ( res . results . length ) . toBe ( 0 ) ;
22
- done ( ) ;
23
- } ,
24
- err => {
25
- console . log ( err ) ;
26
- jfail ( err ) ;
27
- done ( ) ;
28
- }
29
- ) ;
18
+ it ( 'should handle a get request' , async ( ) => {
19
+ const res = await RESTController . request ( 'GET' , '/classes/MyObject' ) ;
20
+ expect ( res . results . length ) . toBe ( 0 ) ;
30
21
} ) ;
31
22
32
- it ( 'should handle a get request with full serverURL mount path' , done => {
33
- RESTController . request ( 'GET' , '/1/classes/MyObject' ) . then (
34
- res => {
35
- expect ( res . results . length ) . toBe ( 0 ) ;
36
- done ( ) ;
37
- } ,
38
- err => {
39
- jfail ( err ) ;
40
- done ( ) ;
41
- }
42
- ) ;
23
+ it ( 'should handle a get request with full serverURL mount path' , async ( ) => {
24
+ const res = await RESTController . request ( 'GET' , '/1/classes/MyObject' ) ;
25
+ expect ( res . results . length ) . toBe ( 0 ) ;
43
26
} ) ;
44
27
45
- it ( 'should handle a POST batch without transaction' , done => {
46
- RESTController . request ( 'POST' , 'batch' , {
28
+ it ( 'should handle a POST batch without transaction' , async ( ) => {
29
+ const res = await RESTController . request ( 'POST' , 'batch' , {
47
30
requests : [
48
31
{
49
32
method : 'GET' ,
@@ -59,20 +42,12 @@ describe('ParseServerRESTController', () => {
59
42
path : '/classes/MyObject' ,
60
43
} ,
61
44
] ,
62
- } ) . then (
63
- res => {
64
- expect ( res . length ) . toBe ( 3 ) ;
65
- done ( ) ;
66
- } ,
67
- err => {
68
- jfail ( err ) ;
69
- done ( ) ;
70
- }
71
- ) ;
45
+ } ) ;
46
+ expect ( res . length ) . toBe ( 3 ) ;
72
47
} ) ;
73
48
74
- it ( 'should handle a POST batch with transaction=false' , done => {
75
- RESTController . request ( 'POST' , 'batch' , {
49
+ it ( 'should handle a POST batch with transaction=false' , async ( ) => {
50
+ const res = await RESTController . request ( 'POST' , 'batch' , {
76
51
requests : [
77
52
{
78
53
method : 'GET' ,
@@ -89,16 +64,8 @@ describe('ParseServerRESTController', () => {
89
64
} ,
90
65
] ,
91
66
transaction : false ,
92
- } ) . then (
93
- res => {
94
- expect ( res . length ) . toBe ( 3 ) ;
95
- done ( ) ;
96
- } ,
97
- err => {
98
- jfail ( err ) ;
99
- done ( ) ;
100
- }
101
- ) ;
67
+ } ) ;
68
+ expect ( res . length ) . toBe ( 3 ) ;
102
69
} ) ;
103
70
104
71
it ( 'should handle response status' , async ( ) => {
@@ -168,7 +135,8 @@ describe('ParseServerRESTController', () => {
168
135
process . env . MONGODB_STORAGE_ENGINE === 'wiredTiger' ) ||
169
136
process . env . PARSE_SERVER_TEST_DB === 'postgres'
170
137
) {
171
- describe ( 'transactions' , ( ) => {
138
+ // Randomly fails in CI for Postgres, disabling for now
139
+ describe_only_db ( 'mongo' ) ( 'transactions' , ( ) => {
172
140
beforeEach ( async ( ) => {
173
141
await TestUtils . destroyAllDataPermanently ( true ) ;
174
142
if (
@@ -186,54 +154,43 @@ describe('ParseServerRESTController', () => {
186
154
}
187
155
} ) ;
188
156
189
- it ( 'should handle a batch request with transaction = true' , async done => {
190
- await reconfigureServer ( ) ;
157
+ it ( 'should handle a batch request with transaction = true' , async ( ) => {
191
158
const myObject = new Parse . Object ( 'MyObject' ) ; // This is important because transaction only works on pre-existing collections
192
- myObject
193
- . save ( )
194
- . then ( ( ) => {
195
- return myObject . destroy ( ) ;
196
- } )
197
- . then ( ( ) => {
198
- spyOn ( databaseAdapter , 'createObject' ) . and . callThrough ( ) ;
199
-
200
- return RESTController . request ( 'POST' , 'batch' , {
201
- requests : [
202
- {
203
- method : 'POST' ,
204
- path : '/1/classes/MyObject' ,
205
- body : { key : 'value1' } ,
206
- } ,
207
- {
208
- method : 'POST' ,
209
- path : '/1/classes/MyObject' ,
210
- body : { key : 'value2' } ,
211
- } ,
212
- ] ,
213
- transaction : true ,
214
- } ) . then ( response => {
215
- expect ( response . length ) . toEqual ( 2 ) ;
216
- expect ( response [ 0 ] . success . objectId ) . toBeDefined ( ) ;
217
- expect ( response [ 0 ] . success . createdAt ) . toBeDefined ( ) ;
218
- expect ( response [ 1 ] . success . objectId ) . toBeDefined ( ) ;
219
- expect ( response [ 1 ] . success . createdAt ) . toBeDefined ( ) ;
220
- const query = new Parse . Query ( 'MyObject' ) ;
221
- return query . find ( ) . then ( results => {
222
- expect ( databaseAdapter . createObject . calls . count ( ) % 2 ) . toBe ( 0 ) ;
223
- for ( let i = 0 ; i + 1 < databaseAdapter . createObject . calls . length ; i = i + 2 ) {
224
- expect ( databaseAdapter . createObject . calls . argsFor ( i ) [ 3 ] ) . toBe (
225
- databaseAdapter . createObject . calls . argsFor ( i + 1 ) [ 3 ]
226
- ) ;
227
- }
228
- expect ( results . map ( result => result . get ( 'key' ) ) . sort ( ) ) . toEqual ( [
229
- 'value1' ,
230
- 'value2' ,
231
- ] ) ;
232
- done ( ) ;
233
- } ) ;
234
- } ) ;
235
- } )
236
- . catch ( done . fail ) ;
159
+ await myObject . save ( ) ;
160
+ await myObject . destroy ( ) ;
161
+ spyOn ( databaseAdapter , 'createObject' ) . and . callThrough ( ) ;
162
+ const response = await RESTController . request ( 'POST' , 'batch' , {
163
+ requests : [
164
+ {
165
+ method : 'POST' ,
166
+ path : '/1/classes/MyObject' ,
167
+ body : { key : 'value1' } ,
168
+ } ,
169
+ {
170
+ method : 'POST' ,
171
+ path : '/1/classes/MyObject' ,
172
+ body : { key : 'value2' } ,
173
+ } ,
174
+ ] ,
175
+ transaction : true ,
176
+ } ) ;
177
+ expect ( response . length ) . toEqual ( 2 ) ;
178
+ expect ( response [ 0 ] . success . objectId ) . toBeDefined ( ) ;
179
+ expect ( response [ 0 ] . success . createdAt ) . toBeDefined ( ) ;
180
+ expect ( response [ 1 ] . success . objectId ) . toBeDefined ( ) ;
181
+ expect ( response [ 1 ] . success . createdAt ) . toBeDefined ( ) ;
182
+ const query = new Parse . Query ( 'MyObject' ) ;
183
+ const results = await query . find ( ) ;
184
+ expect ( databaseAdapter . createObject . calls . count ( ) % 2 ) . toBe ( 0 ) ;
185
+ for ( let i = 0 ; i + 1 < databaseAdapter . createObject . calls . length ; i = i + 2 ) {
186
+ expect ( databaseAdapter . createObject . calls . argsFor ( i ) [ 3 ] ) . toBe (
187
+ databaseAdapter . createObject . calls . argsFor ( i + 1 ) [ 3 ]
188
+ ) ;
189
+ }
190
+ expect ( results . map ( result => result . get ( 'key' ) ) . sort ( ) ) . toEqual ( [
191
+ 'value1' ,
192
+ 'value2' ,
193
+ ] ) ;
237
194
} ) ;
238
195
239
196
it ( 'should not save anything when one operation fails in a transaction' , async ( ) => {
@@ -560,21 +517,11 @@ describe('ParseServerRESTController', () => {
560
517
} ) ;
561
518
}
562
519
563
- it ( 'should handle a POST request' , done => {
564
- RESTController . request ( 'POST' , '/classes/MyObject' , { key : 'value' } )
565
- . then ( ( ) => {
566
- return RESTController . request ( 'GET' , '/classes/MyObject' ) ;
567
- } )
568
- . then ( res => {
569
- expect ( res . results . length ) . toBe ( 1 ) ;
570
- expect ( res . results [ 0 ] . key ) . toEqual ( 'value' ) ;
571
- done ( ) ;
572
- } )
573
- . catch ( err => {
574
- console . log ( err ) ;
575
- jfail ( err ) ;
576
- done ( ) ;
577
- } ) ;
520
+ it ( 'should handle a POST request' , async ( ) => {
521
+ await RESTController . request ( 'POST' , '/classes/MyObject' , { key : 'value' } ) ;
522
+ const res = await RESTController . request ( 'GET' , '/classes/MyObject' ) ;
523
+ expect ( res . results . length ) . toBe ( 1 ) ;
524
+ expect ( res . results [ 0 ] . key ) . toEqual ( 'value' ) ;
578
525
} ) ;
579
526
580
527
it ( 'should handle a POST request with context' , async ( ) => {
@@ -593,125 +540,76 @@ describe('ParseServerRESTController', () => {
593
540
) ;
594
541
} ) ;
595
542
596
- it ( 'ensures sessionTokens are properly handled' , done => {
597
- let userId ;
598
- Parse . User . signUp ( 'user' , 'pass' )
599
- . then ( user => {
600
- userId = user . id ;
601
- const sessionToken = user . getSessionToken ( ) ;
602
- return RESTController . request ( 'GET' , '/users/me' , undefined , {
603
- sessionToken,
604
- } ) ;
605
- } )
606
- . then ( res => {
607
- // Result is in JSON format
608
- expect ( res . objectId ) . toEqual ( userId ) ;
609
- done ( ) ;
610
- } )
611
- . catch ( err => {
612
- console . log ( err ) ;
613
- jfail ( err ) ;
614
- done ( ) ;
615
- } ) ;
543
+ it ( 'ensures sessionTokens are properly handled' , async ( ) => {
544
+ const user = await Parse . User . signUp ( 'user' , 'pass' ) ;
545
+ const sessionToken = user . getSessionToken ( ) ;
546
+ const res = await RESTController . request ( 'GET' , '/users/me' , undefined , {
547
+ sessionToken,
548
+ } ) ;
549
+ // Result is in JSON format
550
+ expect ( res . objectId ) . toEqual ( user . id ) ;
616
551
} ) ;
617
552
618
- it ( 'ensures masterKey is properly handled' , done => {
619
- let userId ;
620
- Parse . User . signUp ( 'user' , 'pass' )
621
- . then ( user => {
622
- userId = user . id ;
623
- return Parse . User . logOut ( ) . then ( ( ) => {
624
- return RESTController . request ( 'GET' , '/classes/_User' , undefined , {
625
- useMasterKey : true ,
626
- } ) ;
627
- } ) ;
628
- } )
629
- . then (
630
- res => {
631
- expect ( res . results . length ) . toBe ( 1 ) ;
632
- expect ( res . results [ 0 ] . objectId ) . toEqual ( userId ) ;
633
- done ( ) ;
634
- } ,
635
- err => {
636
- jfail ( err ) ;
637
- done ( ) ;
638
- }
639
- ) ;
553
+ it ( 'ensures masterKey is properly handled' , async ( ) => {
554
+ const user = await Parse . User . signUp ( 'user' , 'pass' ) ;
555
+ const userId = user . id ;
556
+ await Parse . User . logOut ( ) ;
557
+ const res = await RESTController . request ( 'GET' , '/classes/_User' , undefined , {
558
+ useMasterKey : true ,
559
+ } ) ;
560
+ expect ( res . results . length ) . toBe ( 1 ) ;
561
+ expect ( res . results [ 0 ] . objectId ) . toEqual ( userId ) ;
640
562
} ) ;
641
563
642
- it ( 'ensures no user is created when passing an empty username' , done => {
643
- RESTController . request ( 'POST' , '/classes/_User' , {
644
- username : '' ,
645
- password : 'world' ,
646
- } ) . then (
647
- ( ) => {
648
- jfail ( new Error ( 'Success callback should not be called when passing an empty username.' ) ) ;
649
- done ( ) ;
650
- } ,
651
- err => {
652
- expect ( err . code ) . toBe ( Parse . Error . USERNAME_MISSING ) ;
653
- expect ( err . message ) . toBe ( 'bad or missing username' ) ;
654
- done ( ) ;
655
- }
656
- ) ;
564
+ it ( 'ensures no user is created when passing an empty username' , async ( ) => {
565
+ try {
566
+ await RESTController . request ( 'POST' , '/classes/_User' , {
567
+ username : '' ,
568
+ password : 'world' ,
569
+ } ) ;
570
+ fail ( 'Success callback should not be called when passing an empty username.' ) ;
571
+ } catch ( err ) {
572
+ expect ( err . code ) . toBe ( Parse . Error . USERNAME_MISSING ) ;
573
+ expect ( err . message ) . toBe ( 'bad or missing username' ) ;
574
+ }
657
575
} ) ;
658
576
659
- it ( 'ensures no user is created when passing an empty password' , done => {
660
- RESTController . request ( 'POST' , '/classes/_User' , {
661
- username : 'hello' ,
662
- password : '' ,
663
- } ) . then (
664
- ( ) => {
665
- jfail ( new Error ( 'Success callback should not be called when passing an empty password.' ) ) ;
666
- done ( ) ;
667
- } ,
668
- err => {
669
- expect ( err . code ) . toBe ( Parse . Error . PASSWORD_MISSING ) ;
670
- expect ( err . message ) . toBe ( 'password is required' ) ;
671
- done ( ) ;
672
- }
673
- ) ;
577
+ it ( 'ensures no user is created when passing an empty password' , async ( ) => {
578
+ try {
579
+ await RESTController . request ( 'POST' , '/classes/_User' , {
580
+ username : 'hello' ,
581
+ password : '' ,
582
+ } ) ;
583
+ fail ( 'Success callback should not be called when passing an empty password.' ) ;
584
+ } catch ( err ) {
585
+ expect ( err . code ) . toBe ( Parse . Error . PASSWORD_MISSING ) ;
586
+ expect ( err . message ) . toBe ( 'password is required' ) ;
587
+ }
674
588
} ) ;
675
589
676
- it ( 'ensures no session token is created on creating users' , done => {
677
- RESTController . request ( 'POST' , '/classes/_User' , {
590
+ it ( 'ensures no session token is created on creating users' , async ( ) => {
591
+ const user = await RESTController . request ( 'POST' , '/classes/_User' , {
678
592
username : 'hello' ,
679
593
password : 'world' ,
680
- } )
681
- . then ( user => {
682
- expect ( user . sessionToken ) . toBeUndefined ( ) ;
683
- const query = new Parse . Query ( '_Session' ) ;
684
- return query . find ( { useMasterKey : true } ) ;
685
- } )
686
- . then ( sessions => {
687
- expect ( sessions . length ) . toBe ( 0 ) ;
688
- done ( ) ;
689
- } , done . fail ) ;
594
+ } ) ;
595
+ expect ( user . sessionToken ) . toBeUndefined ( ) ;
596
+ const query = new Parse . Query ( '_Session' ) ;
597
+ const sessions = await query . find ( { useMasterKey : true } ) ;
598
+ expect ( sessions . length ) . toBe ( 0 ) ;
690
599
} ) ;
691
600
692
- it ( 'ensures a session token is created when passing installationId != cloud' , done => {
693
- RESTController . request (
601
+ it ( 'ensures a session token is created when passing installationId != cloud' , async ( ) => {
602
+ const user = await RESTController . request (
694
603
'POST' ,
695
604
'/classes/_User' ,
696
605
{ username : 'hello' , password : 'world' } ,
697
606
{ installationId : 'my-installation' }
698
- )
699
- . then ( user => {
700
- expect ( user . sessionToken ) . not . toBeUndefined ( ) ;
701
- const query = new Parse . Query ( '_Session' ) ;
702
- return query . find ( { useMasterKey : true } ) ;
703
- } )
704
- . then (
705
- sessions => {
706
- expect ( sessions . length ) . toBe ( 1 ) ;
707
- expect ( sessions [ 0 ] . get ( 'installationId' ) ) . toBe ( 'my-installation' ) ;
708
- done ( ) ;
709
- } ,
710
- err => {
711
- jfail ( err ) ;
712
- done ( ) ;
713
- }
714
- ) ;
607
+ ) ;
608
+ expect ( user . sessionToken ) . not . toBeUndefined ( ) ;
609
+ const query = new Parse . Query ( '_Session' ) ;
610
+ const sessions = await query . find ( { useMasterKey : true } ) ;
611
+ expect ( sessions . length ) . toBe ( 1 ) ;
612
+ expect ( sessions [ 0 ] . get ( 'installationId' ) ) . toBe ( 'my-installation' ) ;
715
613
} ) ;
716
614
717
615
it ( 'ensures logIn is saved with installationId' , async ( ) => {
0 commit comments