Skip to content

Commit a038302

Browse files
committed
chore(e2e): add tests for RBAC policyDecisionPrecedence config
Signed-off-by: Jessica He <jhe@redhat.com>
1 parent 6508244 commit a038302

File tree

5 files changed

+63
-0
lines changed

5 files changed

+63
-0
lines changed

.ibm/pipelines/env_variables.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,10 @@ QE_USER5_ID=$(cat /tmp/secrets/QE_USER5_ID)
8686
QE_USER5_PASS=$(cat /tmp/secrets/QE_USER5_PASS)
8787
QE_USER6_ID=$(cat /tmp/secrets/QE_USER6_ID)
8888
QE_USER6_PASS=$(cat /tmp/secrets/QE_USER6_PASS)
89+
QE_USER7_ID=$(cat /tmp/secrets/QE_USER7_ID)
90+
QE_USER7_PASS=$(cat /tmp/secrets/QE_USER7_PASS)
91+
QE_USER8_ID=$(cat /tmp/secrets/QE_USER8_ID)
92+
QE_USER8_PASS=$(cat /tmp/secrets/QE_USER8_PASS)
8993

9094
K8S_CLUSTER_TOKEN_TEMPORARY=$(cat /tmp/secrets/K8S_CLUSTER_TOKEN_TEMPORARY)
9195

.ibm/pipelines/resources/config_map/app-config-rhdh-rbac.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,4 +136,5 @@ permission:
136136
admin:
137137
users:
138138
- name: user:default/rhdh-qe
139+
policyDecisionPrecedence: basic
139140
includeTransitiveGroupOwnership: true

.ibm/pipelines/resources/config_map/rbac-policy.csv

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,14 @@ p, role:default/catalog_reader, catalog.entity.read, read, allow
3939
g, user:default/rhdh-qe, role:default/extension
4040
p, role:default/extension, extension-plugin, read, allow
4141
p, role:default/extension, extension-plugin, create, allow
42+
43+
p, role:default/all_resource_reader, catalog-entity, read, allow
44+
p, role:default/all_resource_reader, catalog-entity, create, allow
45+
g, user:default/rhdh-qe-7, role:default/all_resource_reader
46+
47+
p, role:default/all_resource_denier, catalog-entity, read, deny
48+
p, role:default/all_resource_denier, catalog-entity, create, allow
49+
g, user:default/rhdh-qe-8, role:default/all_resource_denier
50+
51+
g, user:default/rhdh-qe-7, role:default/owned_resource_reader
52+
g, user:default/rhdh-qe-8, role:default/owned_resource_reader

.ibm/pipelines/value_files/values_showcase-rbac.yaml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,19 @@ upstream:
334334
params:
335335
claims:
336336
- \$ownerRefs
337+
---
338+
result: CONDITIONAL
339+
roleEntityRef: 'role:default/owned_resource_reader'
340+
pluginId: catalog
341+
resourceType: catalog-entity
342+
permissionMapping:
343+
- read
344+
conditions:
345+
rule: IS_ENTITY_OWNER
346+
resourceType: catalog-entity
347+
params:
348+
claims:
349+
- \$currentUser
337350
EOF
338351
339352
./install-dynamic-plugins.sh /dynamic-plugins-root

e2e-tests/playwright/e2e/plugins/rbac/rbac.spec.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -786,4 +786,38 @@ test.describe.serial("Test RBAC", () => {
786786
await expect(dropdownMenuLocator).toBeHidden();
787787
});
788788
});
789+
790+
test.describe
791+
.serial("Test RBAC plugin: policyDecisionPrecedence: basic — prioritize basic before conditional", () => {
792+
test("should allow read as defined in basic policy and conditional", async ({ page }) => {
793+
const common = new Common(page);
794+
const uiHelper = new UIhelper(page);
795+
796+
// Should allow read for user7: has static allow read via CSV and is also permitted via conditional policy
797+
await common.loginAsKeycloakUser(
798+
process.env.QE_USER7_ID,
799+
process.env.QE_USER7_PASS,
800+
);
801+
await uiHelper.openSidebar("Catalog");
802+
await uiHelper.selectMuiBox("Kind", "Component");
803+
await uiHelper.searchInputPlaceholder("mock-component");
804+
await expect(
805+
page.getByRole("link", { name: "mock-component-qe-7" }),
806+
).toBeVisible();
807+
});
808+
809+
test("should deny read as defined in basic policy, conditional policy should be disregarded", async ({ page }) => {
810+
const common = new Common(page);
811+
const uiHelper = new UIhelper(page);
812+
813+
// Should deny read for user8: has static deny read via CSV even though permitted by conditional policy
814+
await common.loginAsKeycloakUser(
815+
process.env.QE_USER8_ID,
816+
process.env.QE_USER8_PASS,
817+
);
818+
await uiHelper.openSidebar("Catalog");
819+
await uiHelper.selectMuiBox("Kind", "Component");
820+
await uiHelper.verifyTableIsEmpty();
821+
});
822+
});
789823
});

0 commit comments

Comments
 (0)