roleUtils.test.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import { describe, test, it, expect } from 'vitest'
  2. import RoleUtils from "~/services/rights/roleUtils";
  3. describe('isA', () => {
  4. test('has role', () => {
  5. const roles = ['ROLE_PEDAGOGICS_MANAGER', 'ROLE_TEACHER_CORE', 'ROLE_OTHER']
  6. expect(RoleUtils.isA('teacher', roles)).toBeTruthy()
  7. })
  8. test('has not role', () => {
  9. const roles = ['ROLE_PEDAGOGICS_MANAGER', 'ROLE_TEACHER_CORE', 'ROLE_OTHER']
  10. expect(RoleUtils.isA('financial_manager', roles)).toBeFalsy()
  11. })
  12. test('invalid profile name', () => {
  13. expect(() => RoleUtils.isA('profile-123', [])).toThrowError('invalid role name')
  14. })
  15. test('unknown profile name', () => {
  16. const roles = ['ROLE_PEDAGOGICS_MANAGER', 'ROLE_TEACHER_CORE', 'ROLE_OTHER']
  17. expect(RoleUtils.isA('unknown', roles)).toBeFalsy()
  18. })
  19. })
  20. describe('filterFunctionRoles', () => {
  21. test('exclude roles', () => {
  22. const roles = ['ROLE_EVENTS', 'ROLE_COURSES', 'ROLE_TEACHER_CORE', 'ROLE_OTHER']
  23. expect(RoleUtils.filterFunctionRoles(roles)).toEqual(['ROLE_EVENTS', 'ROLE_COURSES'])
  24. })
  25. });
  26. describe('transformUnderscoreToHyphen', () => {
  27. })
  28. describe('rolesToAbilities', () => {
  29. test('exclude roles', () => {
  30. const roles = ['ROLE_EVENTS_VIEW', 'ROLE_COURSES', 'ROLE_TEACHER_CORE', 'ROLE_OTHER']
  31. const expected = [
  32. { subject: 'events', action: 'read' },
  33. { subject: 'courses', action: 'manage' },
  34. { subject: 'other', action: 'manage' },
  35. ]
  36. expect(RoleUtils.rolesToAbilities(roles)).toEqual(expected)
  37. })
  38. })