@@ -169,7 +169,8 @@ describe('project.controller', () => {
169
169
170
170
it ( 'returns 201 with id of created sketch' , ( done ) => {
171
171
const request = {
172
- user : { _id : 'abc123' } ,
172
+ user : { _id : 'abc123' , username : 'alice' } ,
173
+ params : { username : 'alice' } ,
173
174
body : {
174
175
name : 'My sketch' ,
175
176
files : { }
@@ -211,7 +212,8 @@ describe('project.controller', () => {
211
212
212
213
it ( 'fails if slug is not unique' , ( done ) => {
213
214
const request = {
214
- user : { _id : 'abc123' } ,
215
+ user : { _id : 'abc123' , username : 'alice' } ,
216
+ params : { username : 'alice' } ,
215
217
body : {
216
218
name : 'My sketch' ,
217
219
slug : 'a-slug' ,
@@ -254,9 +256,50 @@ describe('project.controller', () => {
254
256
promise . then ( expectations , expectations ) . catch ( expectations ) ;
255
257
} ) ;
256
258
259
+ it ( 'fails if user does not have permission' , ( done ) => {
260
+ const request = {
261
+ user : { _id : 'abc123' , username : 'alice' } ,
262
+ params : {
263
+ username : 'dana' ,
264
+ } ,
265
+ body : {
266
+ name : 'My sketch' ,
267
+ slug : 'a-slug' ,
268
+ files : { }
269
+ }
270
+ } ;
271
+ const response = new Response ( ) ;
272
+
273
+ const result = {
274
+ _id : 'abc123' ,
275
+ id : 'abc123' ,
276
+ name : 'Project name' ,
277
+ serveSecure : false ,
278
+ files : [ ]
279
+ } ;
280
+
281
+ ProjectInstanceMock . expects ( 'isSlugUnique' )
282
+ . resolves ( { isUnique : true , conflictingIds : [ ] } ) ;
283
+
284
+ ProjectInstanceMock . expects ( 'save' )
285
+ . resolves ( new Project ( result ) ) ;
286
+
287
+ const promise = apiCreateProject ( request , response ) ;
288
+
289
+ function expectations ( ) {
290
+ expect ( response . status ) . toHaveBeenCalledWith ( 401 ) ;
291
+ expect ( response . json ) . toHaveBeenCalled ( ) ;
292
+
293
+ done ( ) ;
294
+ }
295
+
296
+ promise . then ( expectations , expectations ) . catch ( expectations ) ;
297
+ } ) ;
298
+
257
299
it ( 'returns validation errors on files input' , ( done ) => {
258
300
const request = {
259
- user : { } ,
301
+ user : { username : 'alice' } ,
302
+ params : { username : 'alice' } ,
260
303
body : {
261
304
name : 'My sketch' ,
262
305
files : {
@@ -291,7 +334,8 @@ describe('project.controller', () => {
291
334
292
335
it ( 'rejects file parameters not in object format' , ( done ) => {
293
336
const request = {
294
- user : { _id : 'abc123' } ,
337
+ user : { _id : 'abc123' , username : 'alice' } ,
338
+ params : { username : 'alice' } ,
295
339
body : {
296
340
name : 'Wriggly worm' ,
297
341
files : [ { name : 'file.js' , content : 'var hello = true;' } ]
@@ -318,7 +362,8 @@ describe('project.controller', () => {
318
362
319
363
it ( 'rejects if files object in not provided' , ( done ) => {
320
364
const request = {
321
- user : { _id : 'abc123' } ,
365
+ user : { _id : 'abc123' , username : 'alice' } ,
366
+ params : { username : 'alice' } ,
322
367
body : {
323
368
name : 'Wriggly worm' ,
324
369
// files: {} is missing
0 commit comments