1
1
'use strict' ;
2
2
3
- describe ( 'ParseLiveQuery' , function ( ) {
3
+ describe ( 'ParseLiveQuery' , function ( ) {
4
4
it ( 'can subscribe to query' , async done => {
5
5
await reconfigureServer ( {
6
6
liveQuery : {
@@ -24,6 +24,97 @@ describe('ParseLiveQuery', function() {
24
24
await object . save ( ) ;
25
25
} ) ;
26
26
27
+ it ( 'can handle beforeConnect / beforeSubscribe hooks' , async done => {
28
+ await reconfigureServer ( {
29
+ liveQuery : {
30
+ classNames : [ 'TestObject' ] ,
31
+ } ,
32
+ startLiveQueryServer : true ,
33
+ verbose : false ,
34
+ silent : true ,
35
+ } ) ;
36
+ const object = new TestObject ( ) ;
37
+ await object . save ( ) ;
38
+
39
+ Parse . Cloud . beforeSubscribe ( 'TestObject' , req => {
40
+ expect ( req . op ) . toBe ( 'subscribe' ) ;
41
+ expect ( req . requestId ) . toBe ( 1 ) ;
42
+ expect ( req . query ) . toBeDefined ( ) ;
43
+ expect ( req . user ) . toBeUndefined ( ) ;
44
+ } ) ;
45
+
46
+ Parse . Cloud . beforeConnect ( req => {
47
+ expect ( req . event ) . toBe ( 'connect' ) ;
48
+ expect ( req . clients ) . toBe ( 0 ) ;
49
+ expect ( req . subscriptions ) . toBe ( 0 ) ;
50
+ expect ( req . useMasterKey ) . toBe ( false ) ;
51
+ expect ( req . installationId ) . toBeDefined ( ) ;
52
+ expect ( req . user ) . toBeUndefined ( ) ;
53
+ expect ( req . sessionToken ) . toBeUndefined ( ) ;
54
+ expect ( req . client ) . toBeDefined ( ) ;
55
+ } ) ;
56
+ const query = new Parse . Query ( TestObject ) ;
57
+ query . equalTo ( 'objectId' , object . id ) ;
58
+ const subscription = await query . subscribe ( ) ;
59
+ subscription . on ( 'update' , async object => {
60
+ expect ( object . get ( 'foo' ) ) . toBe ( 'bar' ) ;
61
+ done ( ) ;
62
+ } ) ;
63
+ object . set ( { foo : 'bar' } ) ;
64
+ await object . save ( ) ;
65
+ } ) ;
66
+
67
+ it ( 'can handle beforeConnect error' , async done => {
68
+ await reconfigureServer ( {
69
+ liveQuery : {
70
+ classNames : [ 'TestObject' ] ,
71
+ } ,
72
+ startLiveQueryServer : true ,
73
+ verbose : false ,
74
+ silent : true ,
75
+ } ) ;
76
+ const object = new TestObject ( ) ;
77
+ await object . save ( ) ;
78
+
79
+ Parse . Cloud . beforeConnect ( ( ) => {
80
+ throw new Error ( 'You shall not pass!' ) ;
81
+ } ) ;
82
+ Parse . LiveQuery . on ( 'error' , error => {
83
+ expect ( error ) . toBe ( 'You shall not pass!' ) ;
84
+ done ( ) ;
85
+ } ) ;
86
+ const query = new Parse . Query ( TestObject ) ;
87
+ query . equalTo ( 'objectId' , object . id ) ;
88
+ await query . subscribe ( ) ;
89
+ } ) ;
90
+
91
+ it ( 'can handle beforeSubscribe error' , async done => {
92
+ await reconfigureServer ( {
93
+ liveQuery : {
94
+ classNames : [ 'TestObject' ] ,
95
+ } ,
96
+ startLiveQueryServer : true ,
97
+ verbose : false ,
98
+ silent : true ,
99
+ } ) ;
100
+ const object = new TestObject ( ) ;
101
+ await object . save ( ) ;
102
+
103
+ Parse . Cloud . beforeSubscribe ( TestObject , ( ) => {
104
+ throw new Error ( 'You shall not subscribe!' ) ;
105
+ } ) ;
106
+ Parse . LiveQuery . on ( 'error' , error => {
107
+ expect ( error ) . toBe ( 'You shall not subscribe!' ) ;
108
+ } ) ;
109
+ const query = new Parse . Query ( TestObject ) ;
110
+ query . equalTo ( 'objectId' , object . id ) ;
111
+ const subscription = await query . subscribe ( ) ;
112
+ subscription . on ( 'error' , error => {
113
+ expect ( error ) . toBe ( 'You shall not subscribe!' ) ;
114
+ done ( ) ;
115
+ } ) ;
116
+ } ) ;
117
+
27
118
it ( 'handle invalid websocket payload length' , async done => {
28
119
await reconfigureServer ( {
29
120
liveQuery : {
@@ -61,7 +152,7 @@ describe('ParseLiveQuery', function() {
61
152
} , 1000 ) ;
62
153
} ) ;
63
154
64
- afterEach ( async function ( done ) {
155
+ afterEach ( async function ( done ) {
65
156
const client = await Parse . CoreManager . getLiveQueryController ( ) . getDefaultLiveQueryClient ( ) ;
66
157
client . close ( ) ;
67
158
// Wait for live query client to disconnect
0 commit comments