| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- import { describe, test, it, expect } from 'vitest'
- import RoleUtils from '~/services/rights/roleUtils'
- describe('isA', () => {
- test('has role', () => {
- const roles = ['ROLE_PEDAGOGICS_MANAGER', 'ROLE_TEACHER_CORE', 'ROLE_OTHER']
- expect(RoleUtils.isA('teacher', roles)).toBeTruthy()
- })
- test('has not role', () => {
- const roles = ['ROLE_PEDAGOGICS_MANAGER', 'ROLE_TEACHER_CORE', 'ROLE_OTHER']
- expect(RoleUtils.isA('financial_manager', roles)).toBeFalsy()
- })
- test('invalid profile name', () => {
- expect(() => RoleUtils.isA('profile-123', [])).toThrowError(
- 'invalid role name',
- )
- })
- test('unknown profile name', () => {
- const roles = ['ROLE_PEDAGOGICS_MANAGER', 'ROLE_TEACHER_CORE', 'ROLE_OTHER']
- expect(RoleUtils.isA('unknown', roles)).toBeFalsy()
- })
- })
- describe('filterFunctionRoles', () => {
- test('exclude roles', () => {
- const roles = [
- 'ROLE_EVENTS',
- 'ROLE_COURSES',
- 'ROLE_TEACHER_CORE',
- 'ROLE_OTHER',
- ]
- expect(RoleUtils.filterFunctionRoles(roles)).toEqual([
- 'ROLE_EVENTS',
- 'ROLE_COURSES',
- ])
- })
- })
- describe('parseRole', () => {
- test('simple call', () => {
- expect(RoleUtils.parseRole('ROLE_MYSUBJECT_VIEW')).toEqual({
- subject: 'MYSUBJECT',
- action: 'VIEW',
- })
- expect(RoleUtils.parseRole('ROLE_MYSUBJECT_CORE')).toEqual({
- subject: 'MYSUBJECT',
- action: 'CORE',
- })
- expect(RoleUtils.parseRole('ROLE_MYSUBJECT_REFERENCE')).toEqual({
- subject: 'MYSUBJECT',
- action: 'REFERENCE',
- })
- expect(RoleUtils.parseRole('ROLE_MYSUBJECT')).toEqual({
- subject: 'MYSUBJECT',
- action: '',
- })
- })
- test('multi-word subject', () => {
- expect(RoleUtils.parseRole('ROLE_MY_SUBJECT_VIEW')).toEqual({
- subject: 'MY-SUBJECT',
- action: 'VIEW',
- })
- expect(RoleUtils.parseRole('ROLE_MY_OTHER_SUBJECT')).toEqual({
- subject: 'MY-OTHER-SUBJECT',
- action: '',
- })
- })
- test('invalid input', () => {
- expect(() => RoleUtils.parseRole('INVALID')).toThrowError(
- 'can not parse role',
- )
- })
- })
- describe('roleToString', () => {
- test('simple calls', () => {
- expect(
- RoleUtils.roleToString({ subject: 'MYSUBJECT', action: '' }),
- ).toEqual('ROLE_MYSUBJECT')
- expect(
- RoleUtils.roleToString({ subject: 'MYSUBJECT', action: 'VIEW' }),
- ).toEqual('ROLE_MYSUBJECT_VIEW')
- expect(
- RoleUtils.roleToString({ subject: 'MY_SUBJECT', action: '' }),
- ).toEqual('ROLE_MY_SUBJECT')
- expect(
- RoleUtils.roleToString({ subject: 'MY_SUBJECT', action: 'VIEW' }),
- ).toEqual('ROLE_MY_SUBJECT_VIEW')
- expect(
- RoleUtils.roleToString({ subject: 'MY-SUBJECT', action: 'VIEW' }),
- ).toEqual('ROLE_MY-SUBJECT_VIEW')
- expect(
- RoleUtils.roleToString({ subject: 'MY-SUBJECT', action: 'VIEW' }),
- ).toEqual('ROLE_MY-SUBJECT_VIEW')
- expect(
- RoleUtils.roleToString({ subject: 'MY_OTHER-SUBJECT', action: '' }),
- ).toEqual('ROLE_MY_OTHER-SUBJECT')
- expect(
- RoleUtils.roleToString({ subject: 'MY_OTHER-SUBJECT', action: 'VIEW' }),
- ).toEqual('ROLE_MY_OTHER-SUBJECT_VIEW')
- })
- })
- describe('roleToAbility', () => {
- test('simple calls', () => {
- expect(
- RoleUtils.roleToAbility({ subject: 'MYSUBJECT', action: '' }),
- ).toEqual({ action: 'manage', subject: 'mysubject' })
- expect(
- RoleUtils.roleToAbility({ subject: 'MYSUBJECT', action: 'VIEW' }),
- ).toEqual({ action: 'read', subject: 'mysubject' })
- expect(
- RoleUtils.roleToAbility({ subject: 'MY-SUBJECT', action: '' }),
- ).toEqual({ action: 'manage', subject: 'my-subject' })
- expect(
- RoleUtils.roleToAbility({ subject: 'MY-SUBJECT', action: 'REFERENCE' }),
- ).toEqual(null)
- expect(
- RoleUtils.roleToAbility({ subject: 'MY-SUBJECT', action: 'CORE' }),
- ).toEqual(null)
- })
- })
- describe('rolesToAbilities', () => {
- test('exclude roles', () => {
- const roles = [
- 'ROLE_EVENTS_VIEW',
- 'ROLE_COURSES',
- 'ROLE_TEACHER_CORE',
- 'ROLE_OTHER',
- ]
- const expected = [
- { subject: 'events', action: 'read' },
- { subject: 'courses', action: 'manage' },
- { subject: 'other', action: 'manage' },
- ]
- expect(RoleUtils.rolesToAbilities(roles)).toEqual(expected)
- })
- })
|