Files
grafana/public/app/stores/PermissionsStore/PermissionsStore.jest.ts

101 lines
2.8 KiB
TypeScript
Raw Normal View History

import { PermissionsStore } from './PermissionsStore';
import { backendSrv } from 'test/mocks/common';
describe('PermissionsStore', () => {
let store;
beforeEach(async () => {
backendSrv.get.mockReturnValue(
Promise.resolve([
{ id: 2, dashboardId: 1, role: 'Viewer', permission: 1, permissionName: 'View' },
{ id: 3, dashboardId: 1, role: 'Editor', permission: 1, permissionName: 'Edit' },
{
id: 4,
2018-04-16 14:30:50 +02:00
dashboardId: 1,
permission: 1,
permissionName: 'View',
teamId: 1,
2018-04-16 14:30:50 +02:00
team: 'MyTestTeam',
},
{
id: 5,
2018-04-16 14:30:50 +02:00
dashboardId: 1,
permission: 1,
permissionName: 'View',
userId: 1,
2018-04-16 14:30:50 +02:00
userLogin: 'MyTestUser',
},
{
id: 6,
2018-04-16 14:30:50 +02:00
dashboardId: 1,
permission: 1,
permissionName: 'Edit',
teamId: 2,
2018-04-16 14:30:50 +02:00
team: 'MyTestTeam2',
},
])
);
backendSrv.post = jest.fn(() => Promise.resolve({}));
store = PermissionsStore.create(
{
fetching: false,
items: [],
},
{
backendSrv: backendSrv,
}
);
await store.load(1, false, false);
});
it('should save update on permission change', async () => {
expect(store.items[0].permission).toBe(1);
2018-04-16 14:30:50 +02:00
expect(store.items[0].permissionName).toBe('Edit');
await store.updatePermissionOnIndex(0, 2, 'Edit');
expect(store.items[0].permission).toBe(2);
expect(store.items[0].permissionName).toBe('Edit');
expect(backendSrv.post.mock.calls.length).toBe(1);
expect(backendSrv.post.mock.calls[0][0]).toBe('/api/dashboards/id/1/permissions');
});
it('should save removed permissions automatically', async () => {
2018-04-16 14:30:50 +02:00
expect(store.items.length).toBe(5);
await store.removeStoreItem(2);
2018-04-16 14:30:50 +02:00
expect(store.items.length).toBe(4);
expect(backendSrv.post.mock.calls.length).toBe(1);
expect(backendSrv.post.mock.calls[0][0]).toBe('/api/dashboards/id/1/permissions');
});
2018-04-16 14:30:50 +02:00
it('should be sorted by sort rank and alphabetically', async () => {
expect(store.items[3].name).toBe('MyTestTeam2');
expect(store.items[4].name).toBe('MyTestUser');
});
describe('when one inherited and one not inherited team permission are added', () => {
beforeEach(async () => {
const overridingItemForChildDashboard = {
team: 'MyTestTeam',
dashboardId: 1,
teamId: 1,
permission: 2,
};
store.resetNewType();
store.newItem.setTeam(overridingItemForChildDashboard.teamId, overridingItemForChildDashboard.team);
store.newItem.setPermission(overridingItemForChildDashboard.permission);
await store.addStoreItem();
});
it('should add new overriding permission', () => {
2018-04-16 14:30:50 +02:00
expect(store.items.length).toBe(6);
});
});
});