Skip to content

Commit 7b0ce85

Browse files
committed
[SDCOSMO-2480] Fix runner security property visibility for validator
1 parent ed9ed58 commit 7b0ce85

File tree

2 files changed

+45
-1
lines changed

2 files changed

+45
-1
lines changed

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

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import com.cosmotech.api.rbac.ROLE_ADMIN
1515
import com.cosmotech.api.rbac.ROLE_EDITOR
1616
import com.cosmotech.api.rbac.ROLE_NONE
1717
import com.cosmotech.api.rbac.ROLE_USER
18+
import com.cosmotech.api.rbac.ROLE_VALIDATOR
1819
import com.cosmotech.api.rbac.ROLE_VIEWER
1920
import com.cosmotech.api.security.ROLE_ORGANIZATION_USER
2021
import com.cosmotech.api.security.ROLE_PLATFORM_ADMIN
@@ -1025,6 +1026,47 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() {
10251026
}
10261027
}
10271028

1029+
@Test
1030+
fun `As a validator, I can see whole security property for getRunner`() {
1031+
every { getCurrentAccountIdentifier(any()) } returns defaultName
1032+
runner = makeRunnerCreateRequest(userName = defaultName, role = ROLE_VALIDATOR)
1033+
runnerSaved = runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id, runner)
1034+
1035+
runnerSaved =
1036+
runnerApiService.getRunner(organizationSaved.id, workspaceSaved.id, runnerSaved.id)
1037+
1038+
assertEquals(2, runnerSaved.security.accessControlList.size)
1039+
assertEquals(ROLE_NONE, runnerSaved.security.default)
1040+
assertEquals(
1041+
RunnerAccessControl(CONNECTED_ADMIN_USER, ROLE_ADMIN),
1042+
runnerSaved.security.accessControlList[0])
1043+
assertEquals(
1044+
RunnerAccessControl(defaultName, ROLE_VALIDATOR), runnerSaved.security.accessControlList[1])
1045+
}
1046+
1047+
@Test
1048+
fun `As a validator, I can see whole security property for listRunners`() {
1049+
every { getCurrentAccountIdentifier(any()) } returns defaultName
1050+
organizationSaved = organizationApiService.createOrganization(organization)
1051+
datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset)
1052+
materializeTwingraph()
1053+
solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution)
1054+
workspace = makeWorkspaceCreateRequest()
1055+
workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id, workspace)
1056+
runner = makeRunnerCreateRequest(userName = defaultName, role = ROLE_VALIDATOR)
1057+
runnerSaved = runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id, runner)
1058+
1059+
val runners = runnerApiService.listRunners(organizationSaved.id, workspaceSaved.id, null, null)
1060+
runners.forEach {
1061+
assertEquals(2, it.security.accessControlList.size)
1062+
assertEquals(ROLE_NONE, it.security.default)
1063+
assertEquals(
1064+
RunnerAccessControl(CONNECTED_ADMIN_USER, ROLE_ADMIN), it.security.accessControlList[0])
1065+
assertEquals(
1066+
RunnerAccessControl(defaultName, ROLE_VALIDATOR), it.security.accessControlList[1])
1067+
}
1068+
}
1069+
10281070
private fun makeConnector(name: String = "name"): Connector {
10291071
return Connector(
10301072
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
@@ -66,7 +66,9 @@ class RunnerService(
6666
) : CsmPhoenixService() {
6767

6868
fun updateSecurityVisibility(runner: Runner): Runner {
69-
if (csmRbac.check(runner.getRbac(), PERMISSION_READ_SECURITY).not()) {
69+
if (csmRbac
70+
.check(runner.getRbac(), PERMISSION_READ_SECURITY, getRunnerRolesDefinition())
71+
.not()) {
7072
val username = getCurrentAccountIdentifier(csmPlatformProperties)
7173
val retrievedAC = runner.security.accessControlList.firstOrNull { it.id == username }
7274

0 commit comments

Comments
 (0)