PermissionsStore.jest.ts 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import { PermissionsStore } from './PermissionsStore';
  2. import { backendSrv } from 'test/mocks/common';
  3. describe('PermissionsStore', () => {
  4. let store;
  5. beforeEach(async () => {
  6. backendSrv.get.mockReturnValue(
  7. Promise.resolve([
  8. { id: 2, dashboardId: 1, role: 'Viewer', permission: 1, permissionName: 'View' },
  9. { id: 3, dashboardId: 1, role: 'Editor', permission: 1, permissionName: 'Edit' },
  10. {
  11. id: 4,
  12. dashboardId: 10,
  13. permission: 1,
  14. permissionName: 'View',
  15. teamId: 1,
  16. teamName: 'MyTestTeam',
  17. },
  18. ])
  19. );
  20. backendSrv.post = jest.fn(() => Promise.resolve({}));
  21. store = PermissionsStore.create(
  22. {
  23. fetching: false,
  24. items: [],
  25. },
  26. {
  27. backendSrv: backendSrv,
  28. }
  29. );
  30. await store.load(1, false, false);
  31. });
  32. it('should save update on permission change', async () => {
  33. expect(store.items[0].permission).toBe(1);
  34. expect(store.items[0].permissionName).toBe('View');
  35. await store.updatePermissionOnIndex(0, 2, 'Edit');
  36. expect(store.items[0].permission).toBe(2);
  37. expect(store.items[0].permissionName).toBe('Edit');
  38. expect(backendSrv.post.mock.calls.length).toBe(1);
  39. expect(backendSrv.post.mock.calls[0][0]).toBe('/api/dashboards/id/1/permissions');
  40. });
  41. it('should save removed permissions automatically', async () => {
  42. expect(store.items.length).toBe(3);
  43. await store.removeStoreItem(2);
  44. expect(store.items.length).toBe(2);
  45. expect(backendSrv.post.mock.calls.length).toBe(1);
  46. expect(backendSrv.post.mock.calls[0][0]).toBe('/api/dashboards/id/1/permissions');
  47. });
  48. describe('when one inherited and one not inherited team permission are added', () => {
  49. beforeEach(async () => {
  50. const overridingItemForChildDashboard = {
  51. team: 'MyTestTeam',
  52. dashboardId: 1,
  53. teamId: 1,
  54. permission: 2,
  55. };
  56. store.resetNewType();
  57. store.newItem.setTeam(overridingItemForChildDashboard.teamId, overridingItemForChildDashboard.team);
  58. store.newItem.setPermission(overridingItemForChildDashboard.permission);
  59. await store.addStoreItem();
  60. });
  61. it('should add new overriding permission', () => {
  62. expect(store.items.length).toBe(4);
  63. });
  64. });
  65. });