[Entanglement] Correctly Call Policy Service

Move, Copy, and Link services correctly call the policy service to
check whether composition is allowed.  Fixes open-1254.
This commit is contained in:
larkin 2015-06-12 09:39:24 -07:00
parent d041655546
commit c6186ae186
6 changed files with 52 additions and 11 deletions

View File

@ -83,8 +83,8 @@ define(
}
return policyService.allow(
"composition",
object.getCapability('type'),
parentCandidate.getCapability('type')
parentCandidate.getCapability('type'),
object.getCapability('type')
);
},
/**

View File

@ -44,8 +44,8 @@ define(
}
return policyService.allow(
"composition",
object.getCapability('type'),
parentCandidate.getCapability('type')
parentCandidate.getCapability('type'),
object.getCapability('type')
);
},
/**

View File

@ -51,8 +51,8 @@ define(
}
return policyService.allow(
"composition",
object.getCapability('type'),
parentCandidate.getCapability('type')
parentCandidate.getCapability('type'),
object.getCapability('type')
);
},
/**

View File

@ -60,10 +60,16 @@ define(
policyService
);
object = domainObjectFactory({
name: 'object'
name: 'object',
capabilities: {
type: { type: 'object' }
}
});
parentCandidate = domainObjectFactory({
name: 'parentCandidate'
name: 'parentCandidate',
capabilities: {
type: { type: 'parentCandidate' }
}
});
validate = function () {
return copyService.validate(object, parentCandidate);
@ -88,6 +94,15 @@ define(
parentCandidate.id = 'b';
});
it("calls policy service with correct args", function () {
validate();
expect(policyService.allow).toHaveBeenCalledWith(
"composition",
parentCandidate.capabilities.type,
object.capabilities.type
);
});
it("and returns false", function () {
policyService.allow.andReturn(false);
expect(validate()).toBe(false);

View File

@ -84,10 +84,23 @@ define(
describe("defers to policyService", function () {
beforeEach(function () {
object.id = 'abc';
object.capabilities.type = { type: 'object' };
parentCandidate.id = 'xyz';
parentCandidate.capabilities.type = {
type: 'parentCandidate'
};
parentCandidate.model.composition = [];
});
it("calls policy service with correct args", function () {
validate();
expect(mockPolicyService.allow).toHaveBeenCalledWith(
"composition",
parentCandidate.capabilities.type,
object.capabilities.type
);
});
it("and returns false", function () {
mockPolicyService.allow.andReturn(true);
expect(validate()).toBe(true);

View File

@ -65,7 +65,8 @@ define(
name: 'object',
id: 'a',
capabilities: {
context: objectContextCapability
context: objectContextCapability,
type: { type: 'object' }
}
});
@ -79,7 +80,10 @@ define(
parentCandidate = domainObjectFactory({
name: 'parentCandidate',
model: { composition: [] },
id: 'c'
id: 'c',
capabilities: {
type: { type: 'parentCandidate' }
}
});
validate = function () {
@ -112,6 +116,15 @@ define(
describe("defers to policyService", function () {
it("calls policy service with correct args", function () {
validate();
expect(policyService.allow).toHaveBeenCalledWith(
"composition",
parentCandidate.capabilities.type,
object.capabilities.type
);
});
it("and returns false", function () {
policyService.allow.andReturn(false);
expect(validate()).toBe(false);