Skip to content

Commit

Permalink
feature(policy): #832 added tests
Browse files Browse the repository at this point in the history
  • Loading branch information
ds-mmaul committed Jun 12, 2024
1 parent 733262a commit 1992551
Show file tree
Hide file tree
Showing 2 changed files with 132 additions and 6 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
import { PoliciesAssembler } from '@page/admin/presentation/policy-management/policies/policy.assembler';
import { OperatorType, Policy, PolicyAction, PolicyEntry, PolicyResponseMap } from '@page/policies/model/policy.model';

// Mock data
const mockPolicy: Policy = {
policyId: 'policy123',
createdOn: '2024-01-01T00:00:00Z',
validUntil: '2024-12-31T23:59:59Z',
permissions: [
{
action: 'use' as PolicyAction,
constraint: {
and: [
{
leftOperand: 'left1',
operator: { '@id': OperatorType.EQ },
operatorTypeResponse: OperatorType.EQ,
'odrl:rightOperand': 'right1',
},
],
or: [
{
leftOperand: 'left2',
operator: { '@id': OperatorType.NEQ },
operatorTypeResponse: OperatorType.NEQ,
'odrl:rightOperand': 'right2',
},
],
},
},
],
constraints: [],
};

const mockPolicy2: Policy = {
policyId: 'policy123',
createdOn: '2024-01-01T00:00:00Z',
validUntil: '2024-12-31T23:59:59Z',
permissions: [
{
action: 'use' as PolicyAction,
constraints: {
and: [
{
leftOperand: 'left1',
operator: { '@id': OperatorType.EQ },
operatorTypeResponse: OperatorType.EQ,
rightOperand: 'right1',
},
],
or: [
{
leftOperand: 'left2',
operator: { '@id': OperatorType.NEQ },
operatorTypeResponse: OperatorType.NEQ,
rightOperand: 'right2',
},
],
},
},
],
constraints: [],
};

const mockPolicyResponse: PolicyResponseMap = {
'bpn123': [
{
payload: {
'@context': {
odrl: 'test',
},
'@id': 'entry123',
policy: mockPolicy,
},
validUntil: '2024-01-01T00:00:00Z',
},
],
};

describe('PoliciesAssembler', () => {
it('should assemble policy', () => {
const assembledPolicy = PoliciesAssembler.assemblePolicy(mockPolicy);
expect(assembledPolicy.policyName).toBe(mockPolicy.policyId);
expect(assembledPolicy.createdOn).toBe('2024-01-01T00:00');
expect(assembledPolicy.validUntil).toBe('2024-12-31T23:59');
expect(assembledPolicy.accessType).toBe('USE');
expect(assembledPolicy.constraints).toEqual([]);
});

it('should map policy response to policy entry list', () => {
const policyEntryList = PoliciesAssembler.mapToPolicyEntryList(mockPolicyResponse);
expect(policyEntryList.length).toBe(1);
expect(policyEntryList[0].payload.policy.bpn).toBe('bpn123');
expect(policyEntryList[0].payload.policy.policyName).toBe('entry123');
});

it('should map display props to policy root level from policy entry', () => {
const policyEntry: PolicyEntry = {
validUntil: '2024-01-01T00:00:00Z',
payload: {
'@context': {
odrl: 'test',
},
'@id': 'entry123',
policy: mockPolicy,
},
};
const constraints = PoliciesAssembler.mapDisplayPropsToPolicyRootLevelFromPolicyEntry(policyEntry);
expect(constraints).toEqual([
'left1', '=', 'right1', 'left2', '!=', 'right2',
]);
});

it('should map display props to policy root level from policy', () => {
const constraints = PoliciesAssembler.mapDisplayPropsToPolicyRootLevelFromPolicy(mockPolicy2);
expect(constraints).toEqual([
'left1', '=', 'right1', 'left2', '!=', 'right2',
]);
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -56,26 +56,32 @@ export class PoliciesAssembler {
}
});
});
console.log(constrainsList);
return constrainsList;
}

public static mapDisplayPropsToPolicyRootLevelFromPolicy(policy: Policy): string[] {

console.log(JSON.stringify(policy));
let constrainsList = [];
policy.permissions.forEach(permission => {
permission.constraints?.and?.forEach(andConstraint => {
policy.permissions.forEach((permission) => {
permission.constraints?.and?.forEach((andConstraint, index) => {
constrainsList.push(andConstraint.leftOperand);
constrainsList.push(getOperatorTypeSign(andConstraint.operatorTypeResponse));
constrainsList.push(andConstraint.rightOperand);
constrainsList.push(' AND ');
if (index !== permission.constraints.and.length - 1) {
constrainsList.push(' AND ');
}
});
permission.constraints?.or?.forEach(orConstraint => {
permission.constraints?.or?.forEach((orConstraint, index) => {
constrainsList.push(orConstraint.leftOperand);
constrainsList.push(getOperatorTypeSign(orConstraint.operatorTypeResponse));
constrainsList.push(orConstraint.rightOperand);
constrainsList.push(' OR ');
if (index !== permission.constraints.or.length - 1) {
constrainsList.push(' OR ');
}
});
});
console.log(constrainsList);
return constrainsList;
}

Expand Down

0 comments on commit 1992551

Please sign in to comment.