1
1
var request = require ( 'request' ) ;
2
2
var dd = require ( 'deep-diff' ) ;
3
+ var hasAllPODobject = ( ) => {
4
+ var obj = new Parse . Object ( 'HasAllPOD' ) ;
5
+ obj . set ( 'aNumber' , 5 ) ;
6
+ obj . set ( 'aString' , 'string' ) ;
7
+ obj . set ( 'aBool' , true ) ;
8
+ obj . set ( 'aDate' , new Date ( ) ) ;
9
+ obj . set ( 'aObject' , { k1 : 'value' , k2 : true , k3 : 5 } ) ;
10
+ obj . set ( 'aArray' , [ 'contents' , true , 5 ] ) ;
11
+ obj . set ( 'aGeoPoint' , new Parse . GeoPoint ( { latitude : 0 , longitude : 0 } ) ) ;
12
+ obj . set ( 'aFile' , new Parse . File ( 'f.txt' , { base64 : 'V29ya2luZyBhdCBQYXJzZSBpcyBncmVhdCE=' } ) ) ;
13
+ var objACL = new Parse . ACL ( ) ;
14
+ objACL . setPublicWriteAccess ( false ) ;
15
+ obj . setACL ( objACL ) ;
16
+ return obj ;
17
+ }
18
+
19
+ var expectedResponseForHasAllPOD = {
20
+ className : 'HasAllPOD' ,
21
+ fields : {
22
+ //Default fields
23
+ ACL : { type : 'ACL' } ,
24
+ createdAt : { type : 'Date' } ,
25
+ updatedAt : { type : 'Date' } ,
26
+ objectId : { type : 'String' } ,
27
+ //Custom fields
28
+ aNumber : { type : 'Number' } ,
29
+ aString : { type : 'String' } ,
30
+ aBool : { type : 'Boolean' } ,
31
+ aDate : { type : 'Date' } ,
32
+ aObject : { type : 'Object' } ,
33
+ aArray : { type : 'Array' } ,
34
+ aGeoPoint : { type : 'GeoPoint' } ,
35
+ aFile : { type : 'File' }
36
+ } ,
37
+ } ;
38
+
39
+ var expectedResponseforHasPointersAndRelations = {
40
+ className : 'HasPointersAndRelations' ,
41
+ fields : {
42
+ //Default fields
43
+ ACL : { type : 'ACL' } ,
44
+ createdAt : { type : 'Date' } ,
45
+ updatedAt : { type : 'Date' } ,
46
+ objectId : { type : 'String' } ,
47
+ //Custom fields
48
+ aPointer : {
49
+ type : 'Pointer' ,
50
+ targetClass : 'HasAllPOD' ,
51
+ } ,
52
+ aRelation : {
53
+ type : 'Relation' ,
54
+ targetClass : 'HasAllPOD' ,
55
+ } ,
56
+ } ,
57
+ }
3
58
4
59
describe ( 'schemas' , ( ) => {
5
60
it ( 'requires the master key to get all schemas' , ( done ) => {
@@ -17,6 +72,21 @@ describe('schemas', () => {
17
72
} ) ;
18
73
} ) ;
19
74
75
+ it ( 'requires the master key to get one schema' , ( done ) => {
76
+ request . get ( {
77
+ url : 'http://localhost:8378/1/schemas/SomeSchema' ,
78
+ json : true ,
79
+ headers : {
80
+ 'X-Parse-Application-Id' : 'test' ,
81
+ 'X-Parse-REST-API-Key' : 'rest' ,
82
+ } ,
83
+ } , ( error , response , body ) => {
84
+ expect ( response . statusCode ) . toEqual ( 401 ) ;
85
+ expect ( body . error ) . toEqual ( 'unauthorized' ) ;
86
+ done ( ) ;
87
+ } ) ;
88
+ } ) ;
89
+
20
90
it ( 'responds with empty list when there are no schemas' , done => {
21
91
request . get ( {
22
92
url : 'http://localhost:8378/1/schemas' ,
@@ -32,79 +102,66 @@ describe('schemas', () => {
32
102
} ) ;
33
103
34
104
it ( 'responds with a list of schemas after creating objects' , done => {
35
- var obj1 = new Parse . Object ( 'HasAllPOD' ) ;
36
- obj1 . set ( 'aNumber' , 5 ) ;
37
- obj1 . set ( 'aString' , 'string' ) ;
38
- obj1 . set ( 'aBool' , true ) ;
39
- obj1 . set ( 'aDate' , new Date ( ) ) ;
40
- obj1 . set ( 'aObject' , { k1 : 'value' , k2 : true , k3 : 5 } ) ;
41
- obj1 . set ( 'aArray' , [ 'contents' , true , 5 ] ) ;
42
- obj1 . set ( 'aGeoPoint' , new Parse . GeoPoint ( { latitude : 0 , longitude : 0 } ) ) ;
43
- obj1 . set ( 'aFile' , new Parse . File ( 'f.txt' , { base64 : 'V29ya2luZyBhdCBQYXJzZSBpcyBncmVhdCE=' } ) ) ;
44
- var obj1ACL = new Parse . ACL ( ) ;
45
- obj1ACL . setPublicWriteAccess ( false ) ;
46
- obj1 . setACL ( obj1ACL ) ;
105
+ var obj1 = hasAllPODobject ( ) ;
106
+ obj1 . save ( ) . then ( savedObj1 => {
107
+ var obj2 = new Parse . Object ( 'HasPointersAndRelations' ) ;
108
+ obj2 . set ( 'aPointer' , savedObj1 ) ;
109
+ var relation = obj2 . relation ( 'aRelation' ) ;
110
+ relation . add ( obj1 ) ;
111
+ return obj2 . save ( ) ;
112
+ } ) . then ( ( ) => {
113
+ request . get ( {
114
+ url : 'http://localhost:8378/1/schemas' ,
115
+ json : true ,
116
+ headers : {
117
+ 'X-Parse-Application-Id' : 'test' ,
118
+ 'X-Parse-Master-Key' : 'test' ,
119
+ } ,
120
+ } , ( error , response , body ) => {
121
+ var expected = {
122
+ results : [ expectedResponseForHasAllPOD , expectedResponseforHasPointersAndRelations ]
123
+ } ;
124
+ expect ( body ) . toEqual ( expected ) ;
125
+ done ( ) ;
126
+ } )
127
+ } ) ;
128
+ } ) ;
47
129
48
- obj1 . save ( ) . then ( savedObj1 => {
49
- var obj2 = new Parse . Object ( 'HasPointersAndRelations' ) ;
50
- obj2 . set ( 'aPointer' , savedObj1 ) ;
51
- var relation = obj2 . relation ( 'aRelation' ) ;
52
- relation . add ( obj1 ) ;
53
- return obj2 . save ( ) ;
54
- } ) . then ( ( ) => {
55
- request . get ( {
56
- url : 'http://localhost:8378/1/schemas' ,
57
- json : true ,
58
- headers : {
59
- 'X-Parse-Application-Id' : 'test' ,
60
- 'X-Parse-Master-Key' : 'test' ,
61
- } ,
62
- } , ( error , response , body ) => {
63
- var expected = {
64
- results : [
65
- {
66
- className : 'HasAllPOD' ,
67
- fields : {
68
- //Default fields
69
- ACL : { type : 'ACL' } ,
70
- createdAt : { type : 'Date' } ,
71
- updatedAt : { type : 'Date' } ,
72
- objectId : { type : 'String' } ,
73
- //Custom fields
74
- aNumber : { type : 'Number' } ,
75
- aString : { type : 'String' } ,
76
- aBool : { type : 'Boolean' } ,
77
- aDate : { type : 'Date' } ,
78
- aObject : { type : 'Object' } ,
79
- aArray : { type : 'Array' } ,
80
- aGeoPoint : { type : 'GeoPoint' } ,
81
- aFile : { type : 'File' }
82
- } ,
83
- } ,
84
- {
85
- className : 'HasPointersAndRelations' ,
86
- fields : {
87
- //Default fields
88
- ACL : { type : 'ACL' } ,
89
- createdAt : { type : 'Date' } ,
90
- updatedAt : { type : 'Date' } ,
91
- objectId : { type : 'String' } ,
92
- //Custom fields
93
- aPointer : {
94
- type : 'Pointer' ,
95
- targetClass : 'HasAllPOD' ,
96
- } ,
97
- aRelation : {
98
- type : 'Relation' ,
99
- targetClass : 'HasAllPOD' ,
100
- } ,
101
- } ,
102
- }
103
- ]
104
- } ;
105
- expect ( body ) . toEqual ( expected ) ;
106
- done ( ) ;
107
- } )
130
+ it ( 'responds with a single schema' , done => {
131
+ var obj = hasAllPODobject ( ) ;
132
+ obj . save ( ) . then ( ( ) => {
133
+ request . get ( {
134
+ url : 'http://localhost:8378/1/schemas/HasAllPOD' ,
135
+ json : true ,
136
+ headers : {
137
+ 'X-Parse-Application-Id' : 'test' ,
138
+ 'X-Parse-Master-Key' : 'test' ,
139
+ } ,
140
+ } , ( error , response , body ) => {
141
+ expect ( body ) . toEqual ( expectedResponseForHasAllPOD ) ;
142
+ done ( ) ;
108
143
} ) ;
144
+ } ) ;
145
+ } ) ;
146
+
147
+ it ( 'treats class names case sensitively' , done => {
148
+ var obj = hasAllPODobject ( ) ;
149
+ obj . save ( ) . then ( ( ) => {
150
+ request . get ( {
151
+ url : 'http://localhost:8378/1/schemas/HASALLPOD' ,
152
+ json : true ,
153
+ headers : {
154
+ 'X-Parse-Application-Id' : 'test' ,
155
+ 'X-Parse-Master-Key' : 'test' ,
156
+ } ,
157
+ } , ( error , response , body ) => {
158
+ expect ( response . statusCode ) . toEqual ( 400 ) ;
159
+ expect ( body ) . toEqual ( {
160
+ code : 103 ,
161
+ error : 'class HASALLPOD does not exist' ,
162
+ } ) ;
163
+ done ( ) ;
164
+ } ) ;
165
+ } ) ;
109
166
} ) ;
110
167
} ) ;
0 commit comments