@@ -8,13 +8,14 @@ import models from '../../models';
8
8
import util from '../../util' ;
9
9
import server from '../../app' ;
10
10
import testUtil from '../../tests/util' ;
11
+ import { USER_ROLE } from '../../constants' ;
11
12
12
13
const should = chai . should ( ) ;
13
14
14
15
describe ( 'Project Members create' , ( ) => {
15
16
let project1 ;
16
17
let project2 ;
17
- before ( ( done ) => {
18
+ beforeEach ( ( done ) => {
18
19
testUtil . clearDb ( )
19
20
. then ( ( ) => {
20
21
models . Project . create ( {
@@ -246,5 +247,232 @@ describe('Project Members create', () => {
246
247
}
247
248
} ) ;
248
249
} ) ;
250
+
251
+ it ( 'should return 400 for trying to add customers as manager' , ( done ) => {
252
+ const mockHttpClient = _ . merge ( testUtil . mockHttpClient , {
253
+ get : ( ) => Promise . resolve ( {
254
+ status : 200 ,
255
+ data : {
256
+ id : 'requesterId' ,
257
+ version : 'v3' ,
258
+ result : {
259
+ success : true ,
260
+ status : 200 ,
261
+ content : [ {
262
+ roleName : 'Topcoder User' ,
263
+ } ] ,
264
+ } ,
265
+ } ,
266
+ } ) ,
267
+ } ) ;
268
+ sandbox . stub ( util , 'getHttpClient' , ( ) => mockHttpClient ) ;
269
+ request ( server )
270
+ . post ( `/v4/projects/${ project1 . id } /members/` )
271
+ . set ( {
272
+ Authorization : `Bearer ${ testUtil . jwts . manager } ` ,
273
+ } )
274
+ . send ( {
275
+ param : {
276
+ userId : 3 ,
277
+ role : 'manager' ,
278
+ } ,
279
+ } )
280
+ . expect ( 'Content-Type' , / j s o n / )
281
+ . expect ( 400 )
282
+ . end ( ( err , res ) => {
283
+ if ( err ) {
284
+ done ( err ) ;
285
+ } else {
286
+ const resJson = res . body . result . content ;
287
+ should . exist ( resJson ) ;
288
+ const errorMessage = _ . get ( resJson , 'message' , '' ) ;
289
+ sinon . assert . match ( errorMessage , / .* c a n ' t b e a d d e d a s a M a n a g e r / ) ;
290
+ done ( ) ;
291
+ }
292
+ } ) ;
293
+ } ) ;
294
+
295
+ it ( 'should return 400 for trying to add copilot as manager' , ( done ) => {
296
+ const mockHttpClient = _ . merge ( testUtil . mockHttpClient , {
297
+ get : ( ) => Promise . resolve ( {
298
+ status : 200 ,
299
+ data : {
300
+ id : 'requesterId' ,
301
+ version : 'v3' ,
302
+ result : {
303
+ success : true ,
304
+ status : 200 ,
305
+ content : [ {
306
+ roleName : USER_ROLE . COPILOT ,
307
+ } ] ,
308
+ } ,
309
+ } ,
310
+ } ) ,
311
+ } ) ;
312
+ sandbox . stub ( util , 'getHttpClient' , ( ) => mockHttpClient ) ;
313
+ request ( server )
314
+ . post ( `/v4/projects/${ project1 . id } /members/` )
315
+ . set ( {
316
+ Authorization : `Bearer ${ testUtil . jwts . manager } ` ,
317
+ } )
318
+ . send ( {
319
+ param : {
320
+ userId : 3 ,
321
+ role : 'manager' ,
322
+ } ,
323
+ } )
324
+ . expect ( 'Content-Type' , / j s o n / )
325
+ . expect ( 400 )
326
+ . end ( ( err , res ) => {
327
+ if ( err ) {
328
+ done ( err ) ;
329
+ } else {
330
+ const resJson = res . body . result . content ;
331
+ should . exist ( resJson ) ;
332
+ done ( ) ;
333
+ }
334
+ } ) ;
335
+ } ) ;
336
+
337
+ it ( 'should return 201 and register Connect Manager as manager' , ( done ) => {
338
+ const mockHttpClient = _ . merge ( testUtil . mockHttpClient , {
339
+ get : ( ) => Promise . resolve ( {
340
+ status : 200 ,
341
+ data : {
342
+ id : 'requesterId' ,
343
+ version : 'v3' ,
344
+ result : {
345
+ success : true ,
346
+ status : 200 ,
347
+ content : [ {
348
+ roleName : USER_ROLE . MANAGER ,
349
+ } ] ,
350
+ } ,
351
+ } ,
352
+ } ) ,
353
+ } ) ;
354
+ sandbox . stub ( util , 'getHttpClient' , ( ) => mockHttpClient ) ;
355
+ request ( server )
356
+ . post ( `/v4/projects/${ project1 . id } /members/` )
357
+ . set ( {
358
+ Authorization : `Bearer ${ testUtil . jwts . manager } ` ,
359
+ } )
360
+ . send ( {
361
+ param : {
362
+ userId : 3 ,
363
+ role : 'manager' ,
364
+ } ,
365
+ } )
366
+ . expect ( 'Content-Type' , / j s o n / )
367
+ . expect ( 201 )
368
+ . end ( ( err , res ) => {
369
+ if ( err ) {
370
+ done ( err ) ;
371
+ } else {
372
+ const resJson = res . body . result . content ;
373
+ should . exist ( resJson ) ;
374
+ resJson . role . should . equal ( 'manager' ) ;
375
+ resJson . isPrimary . should . be . truthy ;
376
+ resJson . projectId . should . equal ( project1 . id ) ;
377
+ resJson . userId . should . equal ( 3 ) ;
378
+ server . services . pubsub . publish . calledWith ( 'project.member.added' ) . should . be . true ;
379
+ done ( ) ;
380
+ }
381
+ } ) ;
382
+ } ) ;
383
+
384
+ it ( 'should return 201 and register Connect Admin as manager' , ( done ) => {
385
+ const mockHttpClient = _ . merge ( testUtil . mockHttpClient , {
386
+ get : ( ) => Promise . resolve ( {
387
+ status : 200 ,
388
+ data : {
389
+ id : 'requesterId' ,
390
+ version : 'v3' ,
391
+ result : {
392
+ success : true ,
393
+ status : 200 ,
394
+ content : [ {
395
+ roleName : USER_ROLE . CONNECT_ADMIN ,
396
+ } ] ,
397
+ } ,
398
+ } ,
399
+ } ) ,
400
+ } ) ;
401
+ sandbox . stub ( util , 'getHttpClient' , ( ) => mockHttpClient ) ;
402
+ request ( server )
403
+ . post ( `/v4/projects/${ project1 . id } /members/` )
404
+ . set ( {
405
+ Authorization : `Bearer ${ testUtil . jwts . manager } ` ,
406
+ } )
407
+ . send ( {
408
+ param : {
409
+ userId : 3 ,
410
+ role : 'manager' ,
411
+ } ,
412
+ } )
413
+ . expect ( 'Content-Type' , / j s o n / )
414
+ . expect ( 201 )
415
+ . end ( ( err , res ) => {
416
+ if ( err ) {
417
+ done ( err ) ;
418
+ } else {
419
+ const resJson = res . body . result . content ;
420
+ should . exist ( resJson ) ;
421
+ resJson . role . should . equal ( 'manager' ) ;
422
+ resJson . isPrimary . should . be . truthy ;
423
+ resJson . projectId . should . equal ( project1 . id ) ;
424
+ resJson . userId . should . equal ( 3 ) ;
425
+ server . services . pubsub . publish . calledWith ( 'project.member.added' ) . should . be . true ;
426
+ done ( ) ;
427
+ }
428
+ } ) ;
429
+ } ) ;
430
+
431
+ it ( 'should return 201 and register Topcoder Admin as manager' , ( done ) => {
432
+ const mockHttpClient = _ . merge ( testUtil . mockHttpClient , {
433
+ get : ( ) => Promise . resolve ( {
434
+ status : 200 ,
435
+ data : {
436
+ id : 'requesterId' ,
437
+ version : 'v3' ,
438
+ result : {
439
+ success : true ,
440
+ status : 200 ,
441
+ content : [ {
442
+ roleName : USER_ROLE . TOPCODER_ADMIN ,
443
+ } ] ,
444
+ } ,
445
+ } ,
446
+ } ) ,
447
+ } ) ;
448
+ sandbox . stub ( util , 'getHttpClient' , ( ) => mockHttpClient ) ;
449
+ request ( server )
450
+ . post ( `/v4/projects/${ project1 . id } /members/` )
451
+ . set ( {
452
+ Authorization : `Bearer ${ testUtil . jwts . manager } ` ,
453
+ } )
454
+ . send ( {
455
+ param : {
456
+ userId : 3 ,
457
+ role : 'manager' ,
458
+ } ,
459
+ } )
460
+ . expect ( 'Content-Type' , / j s o n / )
461
+ . expect ( 201 )
462
+ . end ( ( err , res ) => {
463
+ if ( err ) {
464
+ done ( err ) ;
465
+ } else {
466
+ const resJson = res . body . result . content ;
467
+ should . exist ( resJson ) ;
468
+ resJson . role . should . equal ( 'manager' ) ;
469
+ resJson . isPrimary . should . be . truthy ;
470
+ resJson . projectId . should . equal ( project1 . id ) ;
471
+ resJson . userId . should . equal ( 3 ) ;
472
+ server . services . pubsub . publish . calledWith ( 'project.member.added' ) . should . be . true ;
473
+ done ( ) ;
474
+ }
475
+ } ) ;
476
+ } ) ;
249
477
} ) ;
250
478
} ) ;
0 commit comments