Skip to content

Commit c8f65b3

Browse files
committed
[SDCOSMO-2480] Fix runner security property visibility for validator
1 parent ba183fb commit c8f65b3

File tree

2 files changed

+46
-1
lines changed

2 files changed

+46
-1
lines changed

runner/src/integrationTest/kotlin/com/cosmotech/runner/service/RunnerServiceIntegrationTest.kt

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1052,6 +1052,49 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() {
10521052
}
10531053
}
10541054

1055+
@Test
1056+
fun `As a validator, I can see whole security property for getRunner`() {
1057+
every { getCurrentAccountIdentifier(any()) } returns defaultName
1058+
runner = makeRunner(userName = defaultName, role = ROLE_VALIDATOR)
1059+
runnerSaved = runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner)
1060+
1061+
runnerSaved =
1062+
runnerApiService.getRunner(organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!)
1063+
1064+
assertEquals(2, runnerSaved.security!!.accessControlList.size)
1065+
assertEquals(ROLE_NONE, runnerSaved.security!!.default)
1066+
assertEquals(
1067+
RunnerAccessControl(CONNECTED_ADMIN_USER, ROLE_ADMIN),
1068+
runnerSaved.security!!.accessControlList[0])
1069+
assertEquals(
1070+
RunnerAccessControl(defaultName, ROLE_VALIDATOR),
1071+
runnerSaved.security!!.accessControlList[1])
1072+
}
1073+
1074+
@Test
1075+
fun `As a validator, I can see whole security property for listRunners`() {
1076+
every { getCurrentAccountIdentifier(any()) } returns defaultName
1077+
organizationSaved = organizationApiService.registerOrganization(organization)
1078+
datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset)
1079+
materializeTwingraph()
1080+
solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution)
1081+
workspace = makeWorkspace()
1082+
workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id!!, workspace)
1083+
runner = makeRunner(userName = defaultName, role = ROLE_VALIDATOR)
1084+
runnerSaved = runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner)
1085+
1086+
val runners =
1087+
runnerApiService.listRunners(organizationSaved.id!!, workspaceSaved.id!!, null, null)
1088+
runners.forEach {
1089+
assertEquals(2, it.security!!.accessControlList.size)
1090+
assertEquals(ROLE_NONE, it.security!!.default)
1091+
assertEquals(
1092+
RunnerAccessControl(CONNECTED_ADMIN_USER, ROLE_ADMIN), it.security!!.accessControlList[0])
1093+
assertEquals(
1094+
RunnerAccessControl(defaultName, ROLE_VALIDATOR), it.security!!.accessControlList[1])
1095+
}
1096+
}
1097+
10551098
private fun makeConnector(name: String = "name"): Connector {
10561099
return Connector(
10571100
key = UUID.randomUUID().toString(),

runner/src/main/kotlin/com/cosmotech/runner/service/RunnerService.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,9 @@ class RunnerService(
6262
) : CsmPhoenixService() {
6363

6464
fun updateSecurityVisibility(runner: Runner): Runner {
65-
if (csmRbac.check(runner.getRbac(), PERMISSION_READ_SECURITY).not()) {
65+
if (csmRbac
66+
.check(runner.getRbac(), PERMISSION_READ_SECURITY, getScenarioRolesDefinition())
67+
.not()) {
6668
val username = getCurrentAccountIdentifier(csmPlatformProperties)
6769
val retrievedAC = runner.security!!.accessControlList.firstOrNull { it.id == username }
6870
if (retrievedAC != null) {

0 commit comments

Comments
 (0)