@@ -548,18 +548,24 @@ describe('Upgrade DB Tests', () => {
548
548
} )
549
549
} )
550
550
551
- describe ( `updateFunction4 - Create default roles` , ( ) => {
551
+ describe ( `updateFunction4 - Create default roles with permissions and update user groups ` , ( ) => {
552
552
const upgradeFunc = originalUpgradeFuncs [ 4 ] . func
553
553
554
+ beforeEach ( async ( ) => {
555
+ await RoleModel . deleteMany ( { } )
556
+ await UserModel . deleteMany ( { } )
557
+ } )
558
+
554
559
afterEach ( async ( ) => {
555
560
await RoleModel . deleteMany ( { } )
561
+ await UserModel . deleteMany ( { } )
556
562
} )
557
563
558
564
it ( 'should create default roles if they do not exist' , async ( ) => {
559
565
await upgradeFunc ( )
560
566
561
567
const roles = await RoleModel . find ( )
562
- roles . length . should . be . exactly ( 4 )
568
+ roles . length . should . be . exactly ( 3 )
563
569
564
570
const roleNames = roles . map ( r => r . name )
565
571
roleNames . should . containEql ( 'manager' )
@@ -568,8 +574,7 @@ describe('Upgrade DB Tests', () => {
568
574
} )
569
575
570
576
it ( 'should not create duplicate roles if they already exist' , async ( ) => {
571
- // Create an existing role
572
- await new RoleModel ( { name : 'admin' } ) . save ( )
577
+ await new RoleModel ( { name : 'admin' , permissions : { } } ) . save ( )
573
578
574
579
await upgradeFunc ( )
575
580
@@ -583,92 +588,114 @@ describe('Upgrade DB Tests', () => {
583
588
it ( 'should set correct permissions for each role' , async ( ) => {
584
589
await upgradeFunc ( )
585
590
586
- const managerRole = await RoleModel . findOne ( { name : 'manager' } )
587
- const adminRole = await RoleModel . findOne ( { name : 'admin' } )
588
- const operatorRole = await RoleModel . findOne ( { name : 'operator' } )
591
+ const managerRole = await RoleModel . findOne ( { name : 'manager' } )
592
+ const adminRole = await RoleModel . findOne ( { name : 'admin' } )
593
+ const operatorRole = await RoleModel . findOne ( { name : 'operator' } )
589
594
590
595
// Helper function to check permissions
591
596
const checkPermissions = ( role , expectedPermissions ) => {
597
+ console . log ( `Checking permissions for role: ${ role . name } ` )
592
598
Object . entries ( expectedPermissions ) . forEach ( ( [ key , value ] ) => {
593
- if ( typeof value === 'boolean' ) {
594
- should ( role . permissions [ key ] ) . equal ( value )
595
- } else if ( Array . isArray ( value ) ) {
596
- should ( role . permissions [ key ] ) . deepEqual ( value )
597
- }
599
+ should ( role . permissions [ key ] ) . equal ( value )
598
600
} )
599
601
}
600
602
601
603
// Admin role permissions
602
604
checkPermissions ( adminRole , {
603
- " channel-view-all" : true ,
604
- " channel-manage-all" : true ,
605
- " client-view-all" : true ,
606
- " client-manage-all" : true ,
607
- " transaction-view-all" : true ,
608
- " transaction-view-body-all" : true ,
609
- " transaction-rerun-all" : true ,
610
- " user-view" : true ,
611
- " user-manage" : true ,
612
- " visualizer-manage" : true ,
613
- " visualizer-view" : true
605
+ ' channel-view-all' : true ,
606
+ ' channel-manage-all' : true ,
607
+ ' client-view-all' : true ,
608
+ ' client-manage-all' : true ,
609
+ ' transaction-view-all' : true ,
610
+ ' transaction-view-body-all' : true ,
611
+ ' transaction-rerun-all' : true ,
612
+ ' user-view' : true ,
613
+ ' user-manage' : true ,
614
+ ' visualizer-manage' : true ,
615
+ ' visualizer-view' : true
614
616
// Add other admin permissions as needed
615
617
} )
616
618
617
619
// Manager role permissions
618
620
checkPermissions ( managerRole , {
619
- " channel-view-all" : true ,
620
- " channel-manage-all" : true ,
621
- " client-view-all" : true ,
622
- " client-manage-all" : true ,
623
- " transaction-view-all" : true ,
624
- " transaction-view-body-all" : true ,
625
- " transaction-rerun-all" : true ,
626
- " user-view" : true ,
627
- " visualizer-manage" : true ,
628
- " visualizer-view" : true
621
+ ' channel-view-all' : true ,
622
+ ' channel-manage-all' : true ,
623
+ ' client-view-all' : true ,
624
+ ' client-manage-all' : true ,
625
+ ' transaction-view-all' : true ,
626
+ ' transaction-view-body-all' : true ,
627
+ ' transaction-rerun-all' : true ,
628
+ ' user-view' : true ,
629
+ ' visualizer-manage' : true ,
630
+ ' visualizer-view' : true
629
631
// Add other manager permissions as needed
630
632
} )
631
633
632
634
// Operator role permissions
633
635
checkPermissions ( operatorRole , {
634
- " channel-view-all" : true ,
635
- " transaction-view-all" : true ,
636
- " transaction-view-body-all" : true ,
637
- " transaction-rerun-all" : true
636
+ ' channel-view-all' : true ,
637
+ ' transaction-view-all' : true ,
638
+ ' transaction-view-body-all' : true ,
639
+ ' transaction-rerun-all' : true
638
640
// Add other operator permissions as needed
639
641
} )
640
642
641
643
// Check that operator doesn't have certain permissions
642
- should ( operatorRole . permissions [ " user-manage" ] ) . be . false ( )
643
- should ( operatorRole . permissions [ " client-manage-all" ] ) . be . false ( )
644
+ should ( operatorRole . permissions [ ' user-manage' ] ) . be . false ( )
645
+ should ( operatorRole . permissions [ ' client-manage-all' ] ) . be . false ( )
644
646
} )
645
647
646
- it ( 'should not create roles if they all already exist' , async ( ) => {
647
- // Create all default roles beforehand
648
- await Promise . all ( [
649
- new RoleModel ( { name : 'admin' } ) . save ( ) ,
650
- new RoleModel ( { name : 'manager' } ) . save ( ) ,
651
- new RoleModel ( { name : 'operator' } ) . save ( )
652
- ] )
648
+ it ( 'should update user groups to admin for superUsers' , async ( ) => {
649
+ const superUser = new UserModel ( {
650
+
651
+ groups : [ 'admin' ] ,
652
+ firstname : 'Super' ,
653
+ surname : 'User'
654
+ } )
655
+ await superUser . save ( )
653
656
654
657
await upgradeFunc ( )
655
658
656
- const roles = await RoleModel . find ( )
657
- roles . length . should . be . exactly ( 3 )
659
+ const updatedUser = await UserModel . findOne ( { email : '[email protected] ' } )
660
+ updatedUser . groups . should . eql ( [ 'admin' ] )
658
661
} )
659
662
660
- it ( 'should handle partial existing roles' , async ( ) => {
661
- // Create only one default role beforehand
662
- await new RoleModel ( { name : 'admin' } ) . save ( )
663
+ it ( 'should handle mixed user types correctly' , async ( ) => {
664
+ const users = [
665
+ new UserModel ( {
666
+
667
+ groups : [ 'user' ] ,
668
+ firstname : 'Regular' ,
669
+ surname : 'User'
670
+ } ) ,
671
+ new UserModel ( {
672
+
673
+ groups : [ 'user' , 'admin' ] ,
674
+ firstname : 'Admin' ,
675
+ surname : 'User'
676
+ } ) ,
677
+ new UserModel ( {
678
+
679
+ groups : [ 'admin' ] ,
680
+ firstname : 'Super' ,
681
+ surname : 'User'
682
+ } ) ,
683
+ new UserModel ( {
684
+
685
+ groups : [ 'operator' ] ,
686
+ firstname : 'Another' ,
687
+ surname : 'User'
688
+ } )
689
+ ]
690
+ await Promise . all ( users . map ( user => user . save ( ) ) )
663
691
664
692
await upgradeFunc ( )
665
693
666
- const roles = await RoleModel . find ( )
667
- roles . length . should . be . exactly ( 3 )
668
- const roleNames = roles . map ( r => r . name )
669
- roleNames . should . containEql ( 'admin' )
670
- roleNames . should . containEql ( 'manager' )
671
- roleNames . should . containEql ( 'operator' )
694
+ const updatedUsers = await UserModel . find ( ) . sort ( 'email' )
695
+ updatedUsers [ 0 ] . groups . should . eql ( [ 'admin' ] ) // admin@test .org
696
+ updatedUsers [ 1 ] . groups . should . eql ( [ 'manager' ] ) // another@test .org
697
+ updatedUsers [ 2 ] . groups . should . eql ( [ 'manager' ] ) // regular@test .org
698
+ updatedUsers [ 3 ] . groups . should . eql ( [ 'admin' ] ) // super@test .org
672
699
} )
673
700
} )
674
- } )
701
+ } )
0 commit comments