1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-07-24 07:49:41 +02:00
portainer/app/portainer/components/accessControlForm/model.test.ts
Chaim Lev-Ari ecd0eb6170
refactor(app): create access-control-form react component [EE-2332] (#6346)
* refactor(app): create access-control-form react component [EE-2332]

fix [EE-2332]

* chore(tests): setup msw for async tests and stories

chore(sb): add msw support for storybook

* refactor(access-control): move loading into component

* fix(app): fix users and teams selector stories

* chore(access-control): write test for validation
2022-01-05 18:28:56 +02:00

61 lines
2.2 KiB
TypeScript

import { ResourceControlOwnership as RCO } from '@/portainer/models/resourceControl/resourceControlOwnership';
import {
ResourceControlType,
ResourceControlViewModel,
} from '@/portainer/models/resourceControl/resourceControl';
import { parseFromResourceControl } from './model';
test('when resource control supplied, if user is not admin, will change ownership to rc ownership', () => {
[RCO.ADMINISTRATORS, RCO.RESTRICTED, RCO.PUBLIC, RCO.PRIVATE].forEach(
(ownership) => {
const resourceControl = buildResourceControl(ownership);
const actual = parseFromResourceControl(false, resourceControl.Ownership);
expect(actual.ownership).toBe(resourceControl.Ownership);
}
);
});
test('when resource control supplied and user is admin, if resource ownership is not private , will change ownership to rc ownership', () => {
[RCO.ADMINISTRATORS, RCO.RESTRICTED, RCO.PUBLIC].forEach((ownership) => {
const resourceControl = buildResourceControl(ownership);
const actual = parseFromResourceControl(true, resourceControl.Ownership);
expect(actual.ownership).toBe(resourceControl.Ownership);
});
});
test('when resource control supplied, if ownership is public, will disabled access control', () => {
const resourceControl = buildResourceControl(RCO.PUBLIC);
const actual = parseFromResourceControl(false, resourceControl.Ownership);
expect(actual.accessControlEnabled).toBe(false);
});
test('when isAdmin and resource control not supplied, ownership should be set to Administrator', () => {
const actual = parseFromResourceControl(true);
expect(actual.ownership).toBe(RCO.ADMINISTRATORS);
});
test('when resource control supplied, if user is admin and resource ownership is private, will change ownership to restricted', () => {
const resourceControl = buildResourceControl(RCO.PRIVATE);
const actual = parseFromResourceControl(true, resourceControl.Ownership);
expect(actual.ownership).toBe(RCO.RESTRICTED);
});
function buildResourceControl(ownership: RCO): ResourceControlViewModel {
return {
UserAccesses: [],
TeamAccesses: [],
Ownership: ownership,
Id: 1,
Public: false,
ResourceId: 1,
System: false,
Type: ResourceControlType.Config,
};
}