Skip to content

Commit 424337a

Browse files
committed
apply formatting and add more test cases
1 parent 70d5447 commit 424337a

File tree

1 file changed

+85
-58
lines changed

1 file changed

+85
-58
lines changed

test/unit/upgradeDBTest.js

+85-58
Original file line numberDiff line numberDiff line change
@@ -548,18 +548,24 @@ describe('Upgrade DB Tests', () => {
548548
})
549549
})
550550

551-
describe(`updateFunction4 - Create default roles`, () => {
551+
describe(`updateFunction4 - Create default roles with permissions and update user groups`, () => {
552552
const upgradeFunc = originalUpgradeFuncs[4].func
553553

554+
beforeEach(async () => {
555+
await RoleModel.deleteMany({})
556+
await UserModel.deleteMany({})
557+
})
558+
554559
afterEach(async () => {
555560
await RoleModel.deleteMany({})
561+
await UserModel.deleteMany({})
556562
})
557563

558564
it('should create default roles if they do not exist', async () => {
559565
await upgradeFunc()
560566

561567
const roles = await RoleModel.find()
562-
roles.length.should.be.exactly(4)
568+
roles.length.should.be.exactly(3)
563569

564570
const roleNames = roles.map(r => r.name)
565571
roleNames.should.containEql('manager')
@@ -568,8 +574,7 @@ describe('Upgrade DB Tests', () => {
568574
})
569575

570576
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()
573578

574579
await upgradeFunc()
575580

@@ -583,92 +588,114 @@ describe('Upgrade DB Tests', () => {
583588
it('should set correct permissions for each role', async () => {
584589
await upgradeFunc()
585590

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'})
589594

590595
// Helper function to check permissions
591596
const checkPermissions = (role, expectedPermissions) => {
597+
console.log(`Checking permissions for role: ${role.name}`)
592598
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)
598600
})
599601
}
600602

601603
// Admin role permissions
602604
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
614616
// Add other admin permissions as needed
615617
})
616618

617619
// Manager role permissions
618620
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
629631
// Add other manager permissions as needed
630632
})
631633

632634
// Operator role permissions
633635
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
638640
// Add other operator permissions as needed
639641
})
640642

641643
// 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()
644646
})
645647

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()
653656

654657
await upgradeFunc()
655658

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'])
658661
})
659662

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()))
663691

664692
await upgradeFunc()
665693

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
672699
})
673700
})
674-
})
701+
})

0 commit comments

Comments
 (0)