Skip to content

Commit

Permalink
fix(evaluate): using context in instantiation in IdentityBasedPolicy …
Browse files Browse the repository at this point in the history
…and ResourceBasedPolicy

fix #43
  • Loading branch information
roggervalf committed Apr 11, 2021
1 parent 096e7ef commit c0f3561
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 13 deletions.
20 changes: 17 additions & 3 deletions src/IdentityBasedPolicy.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -229,19 +229,33 @@ describe('IdentityBasedPolicy Class', () => {

describe('when match based on context', () => {
it('returns true or false', () => {
const policy = new IdentityBasedPolicy({
const policy = new IdentityBasedPolicy<Record<string, any>>({
statements: [
{
resource: ['secrets:${user.id}:*'],
action: ['read', 'write']
},
{
effect: 'deny',
resource: ['secrets:${user.bestFriends}:*'],
action: 'read'
}
]
],
context: { user: { id: 124 } }
});

expect(
policy.evaluate({
action: 'read',
resource: 'secrets:124:code'
})
).toBe(true);
expect(
policy.evaluate({
action: 'read',
resource: 'secrets:123:code'
})
).toBe(false);
expect(
policy.evaluate({
action: 'read',
Expand All @@ -268,7 +282,7 @@ describe('IdentityBasedPolicy Class', () => {
action: 'read',
resource: 'secrets:563:secret',
context: {
user: { id: 456, bestFriends: [123, 563, 1211] }
user: { id: 563, bestFriends: [123, 1211] }
}
})
).toBe(true);
Expand Down
4 changes: 2 additions & 2 deletions src/IdentityBasedPolicy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ export class IdentityBasedPolicy<T extends object> extends Policy<
s.matches({
action,
resource,
context,
context: context || this.context,
conditionResolver: this.conditionResolver
})
);
Expand All @@ -85,7 +85,7 @@ export class IdentityBasedPolicy<T extends object> extends Policy<
s.matches({
action,
resource,
context,
context: context || this.context,
conditionResolver: this.conditionResolver
})
);
Expand Down
30 changes: 24 additions & 6 deletions src/ResourceBasedPolicy.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -465,21 +465,39 @@ describe('ResourceBasedPolicy Class', () => {

describe('when match based on context', () => {
it('returns true or false', () => {
const policy = new ResourceBasedPolicy({
const policy = new ResourceBasedPolicy<Record<string, any>>({
statements: [
{
principal: { id: 'rogger' },
resource: ['secrets:${user.id}:*'],
action: ['read', 'write']
},
{
effect: 'deny',
principal: { id: 'rogger' },
resource: ['secrets:${user.bestFriends}:*'],
action: 'read'
}
]
],
context: { user: { id: 124, bestFriends: [563] } }
});

expect(
policy.evaluate({
principal: 'rogger',
action: 'read',
resource: 'secrets:124:code',
principalType: 'id'
})
).toBe(true);
expect(
policy.evaluate({
principal: 'rogger',
action: 'read',
resource: 'secrets:125:code',
principalType: 'id'
})
).toBe(false);
expect(
policy.evaluate({
principal: 'rogger',
Expand All @@ -502,7 +520,7 @@ describe('ResourceBasedPolicy Class', () => {
policy.evaluate({
principal: 'rogger',
action: 'read',
resource: 'secrets:123:sshhh',
resource: 'secrets:123:topSecret',
principalType: 'id',
context: { user: { id: 456 } }
})
Expand All @@ -511,18 +529,18 @@ describe('ResourceBasedPolicy Class', () => {
policy.evaluate({
principal: 'rogger',
action: 'read',
resource: 'secrets:563:sshhh',
resource: 'secrets:563:topSecret',
principalType: 'id',
context: {
user: { id: 456, bestFriends: [123, 563, 1211] }
user: { id: 563, bestFriends: [123, 1211] }
}
})
).toBe(true);
expect(
policy.evaluate({
principal: 'rogger',
action: 'write',
resource: 'secrets:123:sshhh'
resource: 'secrets:123:topSecret'
})
).toBe(false);
});
Expand Down
4 changes: 2 additions & 2 deletions src/ResourceBasedPolicy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ export class ResourceBasedPolicy<T extends object> extends Policy<
action,
resource,
principalType,
context,
context: context || this.context,
conditionResolver: this.conditionResolver
})
);
Expand All @@ -107,7 +107,7 @@ export class ResourceBasedPolicy<T extends object> extends Policy<
action,
resource,
principalType,
context,
context: context || this.context,
conditionResolver: this.conditionResolver
})
);
Expand Down

0 comments on commit c0f3561

Please sign in to comment.