@@ -14,9 +14,10 @@ import {
14
14
PassportModel ,
15
15
UserModel ,
16
16
VisualizerModel ,
17
- RoleModel
17
+ RoleModel ,
18
+ ChannelModel ,
19
+ roles
18
20
} from '../../src/model'
19
-
20
21
describe ( 'Upgrade DB Tests' , ( ) => {
21
22
const originalUpgradeFuncs = [ ...upgradeDB . upgradeFuncs ]
22
23
upgradeDB . upgradeFuncs . length = 0
@@ -548,29 +549,29 @@ describe('Upgrade DB Tests', () => {
548
549
} )
549
550
} )
550
551
551
- describe ( `updateFunction4 - Create default roles with permissions and update user groups ` , ( ) => {
552
+ describe ( `updateFunction4 - Create default roles with permissions` , ( ) => {
552
553
const upgradeFunc = originalUpgradeFuncs [ 4 ] . func
553
554
554
555
beforeEach ( async ( ) => {
555
556
await RoleModel . deleteMany ( { } )
556
- await UserModel . deleteMany ( { } )
557
+ await ChannelModel . deleteMany ( { } )
557
558
} )
558
559
559
560
afterEach ( async ( ) => {
560
561
await RoleModel . deleteMany ( { } )
561
- await UserModel . deleteMany ( { } )
562
+ await ChannelModel . deleteMany ( { } )
562
563
} )
563
564
564
565
it ( 'should create default roles if they do not exist' , async ( ) => {
565
566
await upgradeFunc ( )
566
567
567
- const roles = await RoleModel . find ( )
568
- roles . length . should . be . exactly ( 3 )
568
+ const existingRoles = await RoleModel . find ( )
569
+ existingRoles . length . should . be . exactly ( Object . keys ( roles ) . length )
569
570
570
- const roleNames = roles . map ( r => r . name )
571
- roleNames . should . containEql ( 'manager' )
572
- roleNames . should . containEql ( 'admin' )
573
- roleNames . should . containEql ( 'operator' )
571
+ const roleNames = existingRoles . map ( r => r . name )
572
+ Object . keys ( roles ) . forEach ( roleName => {
573
+ roleNames . should . containEql ( roleName )
574
+ } )
574
575
} )
575
576
576
577
it ( 'should not create duplicate roles if they already exist' , async ( ) => {
@@ -579,123 +580,62 @@ describe('Upgrade DB Tests', () => {
579
580
await upgradeFunc ( )
580
581
581
582
const roles = await RoleModel . find ( )
582
- roles . length . should . be . exactly ( 3 )
583
+ roles . length . should . be . exactly ( Object . keys ( roles ) . length )
583
584
584
585
const adminRoles = roles . filter ( r => r . name === 'admin' )
585
586
adminRoles . length . should . be . exactly ( 1 )
586
587
} )
587
588
588
589
it ( 'should set correct permissions for each role' , async ( ) => {
589
- await upgradeFunc ( )
590
-
591
- const managerRole = await RoleModel . findOne ( { name : 'manager' } )
592
- const adminRole = await RoleModel . findOne ( { name : 'admin' } )
593
- const operatorRole = await RoleModel . findOne ( { name : 'operator' } )
594
-
595
- // Helper function to check permissions
596
- const checkPermissions = ( role , expectedPermissions ) => {
597
- console . log ( `Checking permissions for role: ${ role . name } ` )
598
- Object . entries ( expectedPermissions ) . forEach ( ( [ key , value ] ) => {
599
- should ( role . permissions [ key ] ) . equal ( value )
600
- } )
601
- }
602
-
603
- // Admin role permissions
604
- checkPermissions ( adminRole , {
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
616
- // Add other admin permissions as needed
617
- } )
618
-
619
- // Manager role permissions
620
- checkPermissions ( managerRole , {
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
631
- // Add other manager permissions as needed
632
- } )
633
-
634
- // Operator role permissions
635
- checkPermissions ( operatorRole , {
636
- 'channel-view-all' : true ,
637
- 'transaction-view-all' : true ,
638
- 'transaction-view-body-all' : true ,
639
- 'transaction-rerun-all' : true
640
- // Add other operator permissions as needed
641
- } )
642
-
643
- // Check that operator doesn't have certain permissions
644
- should ( operatorRole . permissions [ 'user-manage' ] ) . be . false ( )
645
- should ( operatorRole . permissions [ 'client-manage-all' ] ) . be . false ( )
646
- } )
647
-
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 ( )
590
+ // Create test channels
591
+ const channel1 = await new ChannelModel ( {
592
+ name : 'Channel 1' ,
593
+ urlPattern : '/channel1' ,
594
+ allow : [ 'admin' , 'manager' ] ,
595
+ txViewAcl : [ 'admin' ] ,
596
+ txRerunAcl : [ 'admin' ] ,
597
+ txViewFullAcl : [ 'admin' ]
598
+ } ) . save ( )
599
+
600
+ const channel2 = await new ChannelModel ( {
601
+ name : 'Channel 2' ,
602
+ urlPattern : '/channel2' ,
603
+ allow : [ 'admin' , 'manager' , 'operator' ] ,
604
+ txViewAcl : [ 'admin' , 'manager' , 'operator' ] ,
605
+ txRerunAcl : [ 'admin' ] ,
606
+ txViewFullAcl : [ 'admin' ]
607
+ } ) . save ( )
656
608
657
609
await upgradeFunc ( )
658
610
659
- const updatedUser = await UserModel . findOne ( { email :
'[email protected] ' } )
660
- updatedUser . groups . should . eql ( [ 'admin' ] )
661
- } )
611
+ const createdRoles = await RoleModel . find ( )
612
+
613
+ for ( const role of createdRoles ) {
614
+ should . exist ( role )
662
615
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 ( ) ) )
691
-
692
- await upgradeFunc ( )
616
+ // Check default permissions
617
+ if ( roles [ role . name ] ) {
618
+ Object . entries ( roles [ role . name ] . permissions ) . forEach ( ( [ key , value ] ) => {
619
+ should ( role . permissions [ key ] ) . eql ( value )
620
+ } )
621
+ }
693
622
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
623
+ // Check channel-specific permissions
624
+ if ( role . name === 'admin' ) {
625
+ role . permissions [ 'transaction-view-specified' ] . should . containEql ( 'Channel 1' )
626
+ role . permissions [ 'transaction-view-specified' ] . should . containEql ( 'Channel 2' )
627
+ role . permissions [ 'transaction-rerun-specified' ] . should . containEql ( 'Channel 1' )
628
+ role . permissions [ 'transaction-rerun-specified' ] . should . containEql ( 'Channel 2' )
629
+ role . permissions [ 'transaction-view-body-specified' ] . should . containEql ( 'Channel 1' )
630
+ role . permissions [ 'transaction-view-body-specified' ] . should . containEql ( 'Channel 2' )
631
+ } else if ( role . name === 'manager' ) {
632
+ role . permissions [ 'transaction-view-specified' ] . should . not . containEql ( 'Channel 1' )
633
+ role . permissions [ 'transaction-view-specified' ] . should . containEql ( 'Channel 2' )
634
+ } else if ( role . name === 'operator' ) {
635
+ role . permissions [ 'transaction-view-specified' ] . should . not . containEql ( 'Channel 1' )
636
+ role . permissions [ 'transaction-view-specified' ] . should . containEql ( 'Channel 2' )
637
+ }
638
+ }
699
639
} )
700
640
} )
701
641
} )
0 commit comments