diff --git a/dataset/src/integrationTest/kotlin/com/cosmotech/dataset/service/DatasetServiceIntegrationTest.kt b/dataset/src/integrationTest/kotlin/com/cosmotech/dataset/service/DatasetServiceIntegrationTest.kt index 303ce8b36..fd6172272 100644 --- a/dataset/src/integrationTest/kotlin/com/cosmotech/dataset/service/DatasetServiceIntegrationTest.kt +++ b/dataset/src/integrationTest/kotlin/com/cosmotech/dataset/service/DatasetServiceIntegrationTest.kt @@ -43,6 +43,7 @@ import com.cosmotech.dataset.repository.DatasetRepository import com.cosmotech.organization.OrganizationApiServiceInterface import com.cosmotech.organization.domain.Organization import com.cosmotech.organization.domain.OrganizationAccessControl +import com.cosmotech.organization.domain.OrganizationCreationRequest import com.cosmotech.organization.domain.OrganizationSecurity import com.cosmotech.solution.SolutionApiServiceInterface import com.cosmotech.solution.domain.Solution @@ -122,7 +123,7 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { lateinit var workspace: Workspace lateinit var unifiedJedis: UnifiedJedis - lateinit var organization: Organization + lateinit var organization: OrganizationCreationRequest lateinit var organizationSaved: Organization lateinit var solutionSaved: Solution lateinit var workspaceSaved: Workspace @@ -153,15 +154,15 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { connectorSaved = connectorApiService.registerConnector(makeConnector()) - organization = makeOrganizationWithRole() - organizationSaved = organizationApiService.registerOrganization(organization) + organization = makeOrganizationRequestWithRole() + organizationSaved = organizationApiService.createOrganization(organization) dataset = makeDatasetWithRole() - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) dataset2 = makeDataset() solution = makeSolution() - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) workspace = makeWorkspace() - workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id, workspace) } @AfterEach @@ -172,49 +173,48 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { @Test fun `test Dataset CRUD`() { - organizationSaved = organizationApiService.registerOrganization(organization) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + organizationSaved = organizationApiService.createOrganization(organization) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) - val registeredDataset2 = datasetApiService.createDataset(organizationSaved.id!!, dataset2) + val registeredDataset2 = datasetApiService.createDataset(organizationSaved.id, dataset2) logger.info("Fetch dataset : ${datasetSaved.id}...") - retrievedDataset1 = datasetApiService.findDatasetById(organizationSaved.id!!, datasetSaved.id!!) + retrievedDataset1 = datasetApiService.findDatasetById(organizationSaved.id, datasetSaved.id!!) assertNotNull(retrievedDataset1) logger.info("Fetch all datasets...") - var datasetList = datasetApiService.findAllDatasets(organizationSaved.id!!, null, null) + var datasetList = datasetApiService.findAllDatasets(organizationSaved.id, null, null) for (item in datasetList) { logger.warn(item.id) } assertTrue { datasetList.size == 2 } logger.info("Delete Dataset : ${registeredDataset2.id}...") - datasetApiService.deleteDataset(organizationSaved.id!!, registeredDataset2.id!!) - datasetList = datasetApiService.findAllDatasets(organizationSaved.id!!, null, null) + datasetApiService.deleteDataset(organizationSaved.id, registeredDataset2.id!!) + datasetList = datasetApiService.findAllDatasets(organizationSaved.id, null, null) assertTrue { datasetList.size == 1 } } @Test fun `test Dataset - findByOrganizationIdAndDatasetId`() { - organizationSaved = organizationApiService.registerOrganization(organization) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + organizationSaved = organizationApiService.createOrganization(organization) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) logger.info("Fetch dataset...") val datasetRetrieved = - datasetApiService.findByOrganizationIdAndDatasetId( - organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.findByOrganizationIdAndDatasetId(organizationSaved.id, datasetSaved.id!!) assertNotNull(datasetRetrieved) assertEquals(datasetSaved, datasetRetrieved) } @Test fun `test Dataset - findByOrganizationIdAndDatasetId wrong dataset id`() { - organizationSaved = organizationApiService.registerOrganization(organization) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + organizationSaved = organizationApiService.createOrganization(organization) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) logger.info("Fetch dataset...") val datasetRetrieved = - datasetApiService.findByOrganizationIdAndDatasetId(organizationSaved.id!!, "wrong_id") + datasetApiService.findByOrganizationIdAndDatasetId(organizationSaved.id, "wrong_id") assertNull(datasetRetrieved) } @@ -222,19 +222,19 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { fun `can delete dataset when user is not the owner and is Platform Admin`() { logger.info("Register dataset : ${dataset.id}...") - organizationSaved = organizationApiService.registerOrganization(organization) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + organizationSaved = organizationApiService.createOrganization(organization) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) assertNotNull(datasetSaved) logger.info("Change current user...") every { getCurrentAccountIdentifier(any()) } returns "test.user.admin@cosmotech.com" every { getCurrentAuthenticatedUserName(csmPlatformProperties) } returns "test.admin" every { getCurrentAuthenticatedRoles(any()) } returns listOf(ROLE_PLATFORM_ADMIN) assertNotNull(datasetSaved.id) - datasetSaved.id?.let { datasetApiService.deleteDataset(organizationSaved.id!!, it) } + datasetSaved.id?.let { datasetApiService.deleteDataset(organizationSaved.id, it) } logger.info("Fetch dataset : ${datasetSaved.id}...") assertThrows { - datasetApiService.findDatasetById(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.findDatasetById(organizationSaved.id, datasetSaved.id!!) } } @@ -242,8 +242,8 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { fun `can not delete dataset when user is not the owner and not Platform Admin`() { logger.info("Register dataset : ${dataset.id}...") - organizationSaved = organizationApiService.registerOrganization(organization) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + organizationSaved = organizationApiService.createOrganization(organization) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) assertNotNull(datasetSaved) logger.info("Change current user...") every { getCurrentAccountIdentifier(any()) } returns "test.user.other@cosmotech.com" @@ -251,7 +251,7 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { every { getCurrentAuthenticatedRoles(any()) } returns listOf(ROLE_ORGANIZATION_USER) assertNotNull(datasetSaved.id) assertThrows { - datasetSaved.id?.let { datasetApiService.deleteDataset(organizationSaved.id!!, it) } + datasetSaved.id?.let { datasetApiService.deleteDataset(organizationSaved.id, it) } } } @@ -259,8 +259,8 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { fun `can update dataset owner when user is not the owner and is Platform Admin`() { logger.info("Register dataset : ${dataset.id}...") - organizationSaved = organizationApiService.registerOrganization(organization) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + organizationSaved = organizationApiService.createOrganization(organization) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) assertNotNull(datasetSaved) logger.info("Change current user...") every { getCurrentAccountIdentifier(any()) } returns "test.user.admin@cosmotech.com" @@ -268,13 +268,10 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { every { getCurrentAuthenticatedRoles(any()) } returns listOf(ROLE_PLATFORM_ADMIN) assertNotNull(datasetSaved.id) datasetSaved.ownerId = "new_owner_id" - datasetSaved.id?.let { - datasetApiService.updateDataset(organizationSaved.id!!, it, datasetSaved) - } + datasetSaved.id?.let { datasetApiService.updateDataset(organizationSaved.id, it, datasetSaved) } logger.info("Fetch dataset : ${datasetSaved.id}...") - val datasetUpdated = - datasetApiService.findDatasetById(organizationSaved.id!!, datasetSaved.id!!) + val datasetUpdated = datasetApiService.findDatasetById(organizationSaved.id, datasetSaved.id!!) assertEquals("new_owner_id", datasetUpdated.ownerId) } @@ -282,8 +279,8 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { fun `cannot update dataset owner when user is not the owner and is not Platform Admin`() { logger.info("Register dataset : ${dataset.id}...") - organizationSaved = organizationApiService.registerOrganization(organization) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + organizationSaved = organizationApiService.createOrganization(organization) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) assertNotNull(datasetSaved) logger.info("Change current user...") every { getCurrentAccountIdentifier(any()) } returns "test.user.admin@cosmotech.com" @@ -293,7 +290,7 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { datasetSaved.ownerId = "new_owner_id" assertThrows { datasetSaved.id?.let { - datasetApiService.updateDataset(organizationSaved.id!!, it, datasetSaved) + datasetApiService.updateDataset(organizationSaved.id, it, datasetSaved) } } } @@ -305,12 +302,12 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { logger.info("Search Datasets...") val datasetList = datasetApiService.searchDatasets( - organizationSaved.id!!, DatasetSearch(mutableListOf("data")), null, null) + organizationSaved.id, DatasetSearch(mutableListOf("data")), null, null) assertTrue { datasetList.size == 2 } logger.info("Update Dataset : ${datasetSaved.id}...") val retrievedDataset1 = - datasetApiService.updateDataset(organizationSaved.id!!, datasetSaved.id!!, dataset2) + datasetApiService.updateDataset(organizationSaved.id, datasetSaved.id!!, dataset2) assertNotEquals(retrievedDataset1, datasetSaved) } @@ -318,7 +315,7 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { logger.info("Add Dataset Compatibility elements...") var datasetCompatibilityList = datasetApiService.addOrReplaceDatasetCompatibilityElements( - organizationSaved.id!!, + organizationSaved.id, datasetSaved.id!!, datasetCompatibility = listOf( @@ -327,22 +324,21 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { assertFalse { datasetCompatibilityList.isEmpty() } logger.info("Remove all Dataset Compatibility elements from dataset : ${datasetSaved.id!!}...") - datasetApiService.removeAllDatasetCompatibilityElements( - organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.removeAllDatasetCompatibilityElements(organizationSaved.id, datasetSaved.id!!) datasetCompatibilityList = - datasetApiService.findDatasetById(organizationSaved.id!!, datasetSaved.id!!).compatibility!! + datasetApiService.findDatasetById(organizationSaved.id, datasetSaved.id!!).compatibility!! assertTrue { datasetCompatibilityList.isEmpty() } } @Test fun `test find All Datasets as Platform Admin`() { - organizationSaved = organizationApiService.registerOrganization(organization) + organizationSaved = organizationApiService.createOrganization(organization) val numberOfDatasets = 20 val defaultPageSize = csmPlatformProperties.twincache.dataset.defaultPageSize val expectedPageSize = 15 IntRange(1, numberOfDatasets).forEach { datasetApiService.createDataset( - organizationSaved.id!!, makeDataset("d-dataset-$it", "dataset-$it")) + organizationSaved.id, makeDataset("d-dataset-$it", "dataset-$it")) } logger.info("Change current user...") every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER @@ -350,64 +346,64 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { every { getCurrentAuthenticatedRoles(any()) } returns listOf(ROLE_PLATFORM_ADMIN) logger.info("should find all datasets and assert there are $numberOfDatasets") - var datasetList = datasetApiService.findAllDatasets(organizationSaved.id!!, null, null) + var datasetList = datasetApiService.findAllDatasets(organizationSaved.id, null, null) assertEquals(numberOfDatasets, datasetList.size) logger.info("should find all datasets and assert it equals defaultPageSize: $defaultPageSize") - datasetList = datasetApiService.findAllDatasets(organizationSaved.id!!, 0, null) + datasetList = datasetApiService.findAllDatasets(organizationSaved.id, 0, null) assertEquals(defaultPageSize, datasetList.size) logger.info("should find all datasets and assert there are expected size: $expectedPageSize") - datasetList = datasetApiService.findAllDatasets(organizationSaved.id!!, 0, expectedPageSize) + datasetList = datasetApiService.findAllDatasets(organizationSaved.id, 0, expectedPageSize) assertEquals(expectedPageSize, datasetList.size) logger.info("should find all solutions and assert it returns the second / last page") - datasetList = datasetApiService.findAllDatasets(organizationSaved.id!!, 1, expectedPageSize) + datasetList = datasetApiService.findAllDatasets(organizationSaved.id, 1, expectedPageSize) assertEquals(numberOfDatasets - expectedPageSize, datasetList.size) } @Test fun `test find All Datasets as Organization User`() { - organizationSaved = organizationApiService.registerOrganization(organization) + organizationSaved = organizationApiService.createOrganization(organization) val numberOfDatasets = 20 val defaultPageSize = csmPlatformProperties.twincache.dataset.defaultPageSize val expectedSize = 15 IntRange(1, numberOfDatasets).forEach { datasetApiService.createDataset( - organizationSaved.id!!, + organizationSaved.id, makeDatasetWithRole( organizationId = "d-dataset-$it", parentId = "dataset-$it", userName = "ANOTHER_USER")) } logger.info("should find all datasets and assert there are $numberOfDatasets") - var datasetList = datasetApiService.findAllDatasets(organizationSaved.id!!, null, null) + var datasetList = datasetApiService.findAllDatasets(organizationSaved.id, null, null) assertEquals(0, datasetList.size) logger.info("should find all datasets and assert it equals defaultPageSize: $defaultPageSize") - datasetList = datasetApiService.findAllDatasets(organizationSaved.id!!, 0, null) + datasetList = datasetApiService.findAllDatasets(organizationSaved.id, 0, null) assertEquals(0, datasetList.size) logger.info("should find all datasets and assert there are expected size: $expectedSize") - datasetList = datasetApiService.findAllDatasets(organizationSaved.id!!, 0, expectedSize) + datasetList = datasetApiService.findAllDatasets(organizationSaved.id, 0, expectedSize) assertEquals(0, datasetList.size) logger.info("should find all solutions and assert it returns the second / last page") - datasetList = datasetApiService.findAllDatasets(organizationSaved.id!!, 1, expectedSize) + datasetList = datasetApiService.findAllDatasets(organizationSaved.id, 1, expectedSize) assertEquals(0, datasetList.size) } @Test fun `PROD-12947 - test find All Datasets as Organization User`() { - organizationSaved = organizationApiService.registerOrganization(organization) + organizationSaved = organizationApiService.createOrganization(organization) // Create a dataset that current user should not see because he does not have permission to val numberOfDatasets = 200 IntRange(1, numberOfDatasets).forEach { datasetApiService.createDataset( - organizationSaved.id!!, + organizationSaved.id, makeDatasetWithRole( - organizationId = organizationSaved.id!!, userName = "unknown_user@test.com")) + organizationId = organizationSaved.id, userName = "unknown_user@test.com")) } // Explicitly set connected user information @@ -416,40 +412,41 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { every { getCurrentAuthenticatedRoles(any()) } returns listOf(ROLE_ORGANIZATION_USER) logger.info("should not find a dataset because of lake of permission") - var datasetList = datasetApiService.findAllDatasets(organizationSaved.id!!, null, null) + var datasetList = datasetApiService.findAllDatasets(organizationSaved.id, null, null) assertEquals(0, datasetList.size) // Create a dataset that current user should not see because it has been created under another // organization - val newOrganization = organizationApiService.registerOrganization(makeOrganizationWithRole()) + val newOrganization = + organizationApiService.createOrganization(makeOrganizationRequestWithRole()) val datasetNotReachableByCurrentUserBecausePartOfAnotherOrganization = datasetApiService.createDataset( - newOrganization.id!!, makeDatasetWithRole(organizationId = newOrganization.id!!)) + newOrganization.id, makeDatasetWithRole(organizationId = newOrganization.id)) assertNotNull(datasetNotReachableByCurrentUserBecausePartOfAnotherOrganization) logger.info( "should not find a dataset because:" + " one was created with no permission assigned " + " one was created in another organization") - datasetList = datasetApiService.findAllDatasets(organizationSaved.id!!, null, null) + datasetList = datasetApiService.findAllDatasets(organizationSaved.id, null, null) assertEquals(0, datasetList.size) logger.info("should find only one dataset") - datasetList = datasetApiService.findAllDatasets(newOrganization.id!!, null, null) + datasetList = datasetApiService.findAllDatasets(newOrganization.id, null, null) assertEquals(1, datasetList.size) assertEquals(datasetNotReachableByCurrentUserBecausePartOfAnotherOrganization, datasetList[0]) } @Test fun `PROD-12947 - test find All Datasets as Platform Admin`() { - organizationSaved = organizationApiService.registerOrganization(organization) + organizationSaved = organizationApiService.createOrganization(organization) // Create a dataset that current user should not see because he does not have permission to val numberOfDatasets = 20 IntRange(1, numberOfDatasets).forEach { datasetApiService.createDataset( - organizationSaved.id!!, + organizationSaved.id, makeDatasetWithRole( - organizationId = organizationSaved.id!!, userName = "unknown_user@test.com")) + organizationId = organizationSaved.id, userName = "unknown_user@test.com")) } // Explicitly set connected user information @@ -458,43 +455,44 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { every { getCurrentAuthenticatedRoles(any()) } returns listOf(ROLE_PLATFORM_ADMIN) logger.info("should find all datasets because of admin permission") - var datasetList = datasetApiService.findAllDatasets(organizationSaved.id!!, null, null) + var datasetList = datasetApiService.findAllDatasets(organizationSaved.id, null, null) assertEquals(numberOfDatasets, datasetList.size) // Create a dataset that current user should not see because it has been created under another // organization - val newOrganization = organizationApiService.registerOrganization(makeOrganizationWithRole()) + val newOrganization = + organizationApiService.createOrganization(makeOrganizationRequestWithRole()) val datasetNotReachableByCurrentUserBecausePartOfAnotherOrganization = datasetApiService.createDataset( - newOrganization.id!!, makeDatasetWithRole(organizationId = newOrganization.id!!)) + newOrganization.id, makeDatasetWithRole(organizationId = newOrganization.id)) assertNotNull(datasetNotReachableByCurrentUserBecausePartOfAnotherOrganization) logger.info("should not find the new dataset because it was created in another organization") - datasetList = datasetApiService.findAllDatasets(organizationSaved.id!!, null, null) + datasetList = datasetApiService.findAllDatasets(organizationSaved.id, null, null) assertEquals(numberOfDatasets, datasetList.size) logger.info("should find only one dataset") - datasetList = datasetApiService.findAllDatasets(newOrganization.id!!, null, null) + datasetList = datasetApiService.findAllDatasets(newOrganization.id, null, null) assertEquals(1, datasetList.size) assertEquals(datasetNotReachableByCurrentUserBecausePartOfAnotherOrganization, datasetList[0]) } @Test fun `test find All Datasets with wrong pagination params`() { - organizationSaved = organizationApiService.registerOrganization(organization) - datasetApiService.createDataset(organizationSaved.id!!, dataset) + organizationSaved = organizationApiService.createOrganization(organization) + datasetApiService.createDataset(organizationSaved.id, dataset) logger.info("Should throw IllegalArgumentException when page and size are zeros") assertThrows { - datasetApiService.findAllDatasets(organizationSaved.id!!, 0, 0) + datasetApiService.findAllDatasets(organizationSaved.id, 0, 0) } logger.info("Should throw IllegalArgumentException when page is negative") assertThrows { - datasetApiService.findAllDatasets(organizationSaved.id!!, -1, 10) + datasetApiService.findAllDatasets(organizationSaved.id, -1, 10) } logger.info("Should throw IllegalArgumentException when size is negative") assertThrows { - datasetApiService.findAllDatasets(organizationSaved.id!!, 0, -1) + datasetApiService.findAllDatasets(organizationSaved.id, 0, -1) } } @@ -505,16 +503,14 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { "loading nodes: Double=2, Single=1, Users=9 & relationships: Double=2, Single=1, Follows=2") val file = this::class.java.getResource("/integrationTest.zip")?.file val resource = ByteArrayResource(File(file!!).readBytes()) - organizationSaved = organizationApiService.registerOrganization(organization) + organizationSaved = organizationApiService.createOrganization(organization) dataset = makeDatasetWithRole() - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetApiService.updateDataset( - organizationSaved.id!!, - datasetSaved.id!!, - dataset.copy(sourceType = DatasetSourceType.File)) + organizationSaved.id, datasetSaved.id!!, dataset.copy(sourceType = DatasetSourceType.File)) val fileUploadValidation = - datasetApiService.uploadTwingraph(organizationSaved.id!!, datasetSaved.id!!, resource) + datasetApiService.uploadTwingraph(organizationSaved.id, datasetSaved.id!!, resource) assertEquals( FileUploadValidation( mutableListOf( @@ -531,18 +527,18 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { // add timout for while loop val timeout = Instant.now() - while (datasetApiService.getDatasetTwingraphStatus(organizationSaved.id!!, datasetSaved.id!!) != + while (datasetApiService.getDatasetTwingraphStatus(organizationSaved.id, datasetSaved.id!!) != IngestionStatusEnum.SUCCESS.value) { if (Instant.now().minusSeconds(10).isAfter(timeout)) { throw Exception("Timeout while waiting for dataset twingraph to be ready") } Thread.sleep(500) } - datasetSaved = datasetApiService.findDatasetById(organizationSaved.id!!, datasetSaved.id!!) + datasetSaved = datasetApiService.findDatasetById(organizationSaved.id, datasetSaved.id!!) do { Thread.sleep(50L) val datasetStatus = - datasetApiService.getDatasetTwingraphStatus(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.getDatasetTwingraphStatus(organizationSaved.id, datasetSaved.id!!) } while (datasetStatus == IngestionStatusEnum.PENDING.value) assertEquals(12, countEntities(datasetSaved.twingraphId!!, "MATCH (n) RETURN count(n)")) assertEquals(5, countEntities(datasetSaved.twingraphId!!, "MATCH ()-[r]-() RETURN count(r)")) @@ -555,11 +551,11 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { ) val subDataset = datasetApiService.createSubDataset( - organizationSaved.id!!, datasetSaved.id!!, subDatasetParams) + organizationSaved.id, datasetSaved.id!!, subDatasetParams) do { Thread.sleep(50L) val datasetStatus = - datasetApiService.getDatasetTwingraphStatus(organizationSaved.id!!, subDataset.id!!) + datasetApiService.getDatasetTwingraphStatus(organizationSaved.id, subDataset.id!!) } while (datasetStatus == IngestionStatusEnum.PENDING.value) assertEquals("subDataset", subDataset.name) @@ -576,12 +572,12 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { val subDatasetWithQuery = datasetApiService.createSubDataset( - organizationSaved.id!!, datasetSaved.id!!, subDatasetParamsQuery) + organizationSaved.id, datasetSaved.id!!, subDatasetParamsQuery) do { Thread.sleep(50L) val datasetStatus = datasetApiService.getDatasetTwingraphStatus( - organizationSaved.id!!, subDatasetWithQuery.id!!) + organizationSaved.id, subDatasetWithQuery.id!!) } while (datasetStatus == IngestionStatusEnum.PENDING.value) assertEquals("subDatasetWithQuery", subDatasetWithQuery.name) @@ -600,11 +596,11 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { fun `Twingraph CRUD test`() { logger.info("Create Nodes") - organizationSaved = organizationApiService.registerOrganization(organization) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + organizationSaved = organizationApiService.createOrganization(organization) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) val nodeStart = datasetApiService.createTwingraphEntities( - organizationSaved.id!!, + organizationSaved.id, datasetSaved.id!!, "node", listOf( @@ -623,13 +619,13 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { logger.info("Read Nodes") var nodeResult = datasetApiService.getTwingraphEntities( - organizationSaved.id!!, datasetSaved.id!!, "node", listOf("node_a", "node_b")) + organizationSaved.id, datasetSaved.id!!, "node", listOf("node_a", "node_b")) assertEquals(nodeStart, nodeResult) logger.info("Create Relationships") val relationshipStart = datasetApiService.createTwingraphEntities( - organizationSaved.id!!, + organizationSaved.id, datasetSaved.id!!, "relationship", listOf( @@ -644,13 +640,13 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { logger.info("Read Relationships") var relationshipResult = datasetApiService.getTwingraphEntities( - organizationSaved.id!!, datasetSaved.id!!, "relationship", listOf("relationship_a")) + organizationSaved.id, datasetSaved.id!!, "relationship", listOf("relationship_a")) assertEquals(relationshipStart, relationshipResult) logger.info("Update Nodes") nodeResult = datasetApiService.updateTwingraphEntities( - organizationSaved.id!!, + organizationSaved.id, datasetSaved.id!!, "node", listOf( @@ -663,7 +659,7 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { logger.info("Update Relationships") relationshipResult = datasetApiService.updateTwingraphEntities( - organizationSaved.id!!, + organizationSaved.id, datasetSaved.id!!, "relationship", listOf( @@ -677,89 +673,87 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { logger.info("Delete Relationships") datasetApiService.deleteTwingraphEntities( - organizationSaved.id!!, datasetSaved.id!!, "node", listOf("relationship_a")) + organizationSaved.id, datasetSaved.id!!, "node", listOf("relationship_a")) assertDoesNotThrow { datasetApiService.getTwingraphEntities( - organizationSaved.id!!, datasetSaved.id!!, "node", listOf("relationship_a")) + organizationSaved.id, datasetSaved.id!!, "node", listOf("relationship_a")) } logger.info("Delete Nodes") datasetApiService.deleteTwingraphEntities( - organizationSaved.id!!, datasetSaved.id!!, "relationship", listOf("node_a")) + organizationSaved.id, datasetSaved.id!!, "relationship", listOf("node_a")) assertDoesNotThrow { datasetApiService.getTwingraphEntities( - organizationSaved.id!!, datasetSaved.id!!, "relationship", listOf("node_a")) + organizationSaved.id, datasetSaved.id!!, "relationship", listOf("node_a")) } } @Test fun `test get security endpoint`() { - organizationSaved = organizationApiService.registerOrganization(organization) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + organizationSaved = organizationApiService.createOrganization(organization) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) // should return the current security val datasetSecurity = - datasetApiService.getDatasetSecurity(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.getDatasetSecurity(organizationSaved.id, datasetSaved.id!!) assertEquals(datasetSaved.security, datasetSecurity) } @Test fun `test set default security endpoint`() { - organizationSaved = organizationApiService.registerOrganization(organization) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + organizationSaved = organizationApiService.createOrganization(organization) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) // should update the default security and assert it worked val datasetDefaultSecurity = datasetApiService.setDatasetDefaultSecurity( - organizationSaved.id!!, datasetSaved.id!!, DatasetRole(ROLE_VIEWER)) - datasetSaved = datasetApiService.findDatasetById(organizationSaved.id!!, datasetSaved.id!!) + organizationSaved.id, datasetSaved.id!!, DatasetRole(ROLE_VIEWER)) + datasetSaved = datasetApiService.findDatasetById(organizationSaved.id, datasetSaved.id!!) assertEquals(datasetSaved.security!!, datasetDefaultSecurity) } @Test fun `test uploadTwingraph status`() { - organizationSaved = organizationApiService.registerOrganization(organization) + organizationSaved = organizationApiService.createOrganization(organization) dataset.apply { sourceType = DatasetSourceType.File } - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) val file = this::class.java.getResource("/integrationTest.zip")?.file val resource = ByteArrayResource(File(file!!).readBytes()) - datasetApiService.uploadTwingraph(organizationSaved.id!!, datasetSaved.id!!, resource) + datasetApiService.uploadTwingraph(organizationSaved.id, datasetSaved.id!!, resource) var datasetStatus: String do { Thread.sleep(50L) datasetStatus = - datasetApiService.getDatasetTwingraphStatus(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.getDatasetTwingraphStatus(organizationSaved.id, datasetSaved.id!!) } while (datasetStatus == IngestionStatusEnum.PENDING.value) assertEquals(IngestionStatusEnum.SUCCESS.value, datasetStatus) - val modifiedDataset = - datasetApiService.findDatasetById(organizationSaved.id!!, datasetSaved.id!!) + val modifiedDataset = datasetApiService.findDatasetById(organizationSaved.id, datasetSaved.id!!) assertEquals(IngestionStatusEnum.SUCCESS.value, modifiedDataset.ingestionStatus!!.value) assertEquals(TwincacheStatusEnum.FULL.value, modifiedDataset.twincacheStatus!!.value) } @Test fun `test uploadTwingraph fail set dataset status to error`() { - organizationSaved = organizationApiService.registerOrganization(organization) + organizationSaved = organizationApiService.createOrganization(organization) dataset.apply { sourceType = DatasetSourceType.File } - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) val file = this::class.java.getResource("/brokenGraph.zip")?.file val resource = ByteArrayResource(File(file!!).readBytes()) - datasetApiService.uploadTwingraph(organizationSaved.id!!, datasetSaved.id!!, resource) + datasetApiService.uploadTwingraph(organizationSaved.id, datasetSaved.id!!, resource) var datasetStatus: String do { Thread.sleep(50L) datasetStatus = - datasetApiService.getDatasetTwingraphStatus(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.getDatasetTwingraphStatus(organizationSaved.id, datasetSaved.id!!) } while (datasetStatus == IngestionStatusEnum.PENDING.value) assertEquals(IngestionStatusEnum.ERROR.value, datasetStatus) - val modifiedDataset = - datasetApiService.findDatasetById(organizationSaved.id!!, datasetSaved.id!!) + val modifiedDataset = datasetApiService.findDatasetById(organizationSaved.id, datasetSaved.id!!) assertEquals(IngestionStatusEnum.ERROR.value, modifiedDataset.ingestionStatus!!.value) assertEquals(TwincacheStatusEnum.EMPTY.value, modifiedDataset.twincacheStatus!!.value) } @@ -767,7 +761,7 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { @Test fun `access control list shouldn't contain more than one time each user on creation`() { connectorSaved = connectorApiService.registerConnector(makeConnector()) - organizationSaved = organizationApiService.registerOrganization(makeOrganizationWithRole()) + organizationSaved = organizationApiService.createOrganization(makeOrganizationRequestWithRole()) val brokenDataset = Dataset( name = "dataset", @@ -780,20 +774,20 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { DatasetAccessControl(CONNECTED_ADMIN_USER, ROLE_ADMIN), DatasetAccessControl(CONNECTED_ADMIN_USER, ROLE_EDITOR)))) assertThrows { - datasetApiService.createDataset(organizationSaved.id!!, brokenDataset) + datasetApiService.createDataset(organizationSaved.id, brokenDataset) } } @Test fun `access control list shouldn't contain more than one time each user on ACL addition`() { connectorSaved = connectorApiService.registerConnector(makeConnector()) - organizationSaved = organizationApiService.registerOrganization(makeOrganizationWithRole()) + organizationSaved = organizationApiService.createOrganization(makeOrganizationRequestWithRole()) val workingDataset = makeDatasetWithRole("dataset", sourceType = DatasetSourceType.None) - val datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, workingDataset) + val datasetSaved = datasetApiService.createDataset(organizationSaved.id, workingDataset) assertThrows { datasetApiService.addDatasetAccessControl( - organizationSaved.id!!, + organizationSaved.id, datasetSaved.id!!, DatasetAccessControl(CONNECTED_ADMIN_USER, ROLE_EDITOR)) } @@ -801,51 +795,51 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { @Test fun `reupload a twingraph in dataset with source type File`() { - organizationSaved = organizationApiService.registerOrganization(organization) + organizationSaved = organizationApiService.createOrganization(organization) dataset.apply { sourceType = DatasetSourceType.File } - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) val fileName = this::class.java.getResource("/integrationTest.zip")?.file val file = File(fileName!!) val resource = ByteArrayResource(file.readBytes()) - datasetApiService.uploadTwingraph(organizationSaved.id!!, datasetSaved.id!!, resource) + datasetApiService.uploadTwingraph(organizationSaved.id, datasetSaved.id!!, resource) do { Thread.sleep(50L) - } while (datasetApiService.getDatasetTwingraphStatus( - organizationSaved.id!!, datasetSaved.id!!) == IngestionStatusEnum.PENDING.value) + } while (datasetApiService.getDatasetTwingraphStatus(organizationSaved.id, datasetSaved.id!!) == + IngestionStatusEnum.PENDING.value) datasetApiService.createTwingraphEntities( - organizationSaved.id!!, + organizationSaved.id, datasetSaved.id!!, "node", listOf(GraphProperties(type = "Node", name = "newNode", params = "value:0"))) val queryResult = datasetApiService.twingraphQuery( - organizationSaved.id!!, datasetSaved.id!!, DatasetTwinGraphQuery("MATCH (n) RETURN n")) + organizationSaved.id, datasetSaved.id!!, DatasetTwinGraphQuery("MATCH (n) RETURN n")) - datasetApiService.uploadTwingraph(organizationSaved.id!!, datasetSaved.id!!, resource) + datasetApiService.uploadTwingraph(organizationSaved.id, datasetSaved.id!!, resource) do { Thread.sleep(50L) - } while (datasetApiService.getDatasetTwingraphStatus( - organizationSaved.id!!, datasetSaved.id!!) == IngestionStatusEnum.PENDING.value) + } while (datasetApiService.getDatasetTwingraphStatus(organizationSaved.id, datasetSaved.id!!) == + IngestionStatusEnum.PENDING.value) val secondQueryResult = datasetApiService.twingraphQuery( - organizationSaved.id!!, datasetSaved.id!!, DatasetTwinGraphQuery("MATCH (n) RETURN n")) + organizationSaved.id, datasetSaved.id!!, DatasetTwinGraphQuery("MATCH (n) RETURN n")) assertNotEquals(queryResult.size, secondQueryResult.size) } @Test fun `rollback endpoint call should fail if status is not ERROR`() { - organizationSaved = organizationApiService.registerOrganization(organization) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + organizationSaved = organizationApiService.createOrganization(organization) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save(datasetSaved.apply { ingestionStatus = IngestionStatusEnum.NONE }) var exception = assertThrows { - datasetApiService.rollbackRefresh(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.rollbackRefresh(organizationSaved.id, datasetSaved.id!!) } assertEquals("The dataset hasn't failed and can't be rolled back", exception.message) @@ -853,7 +847,7 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { datasetRepository.save(datasetSaved.apply { ingestionStatus = IngestionStatusEnum.PENDING }) exception = assertThrows { - datasetApiService.rollbackRefresh(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.rollbackRefresh(organizationSaved.id, datasetSaved.id!!) } assertEquals("The dataset hasn't failed and can't be rolled back", exception.message) @@ -861,7 +855,7 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { datasetRepository.save(datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) exception = assertThrows { - datasetApiService.rollbackRefresh(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.rollbackRefresh(organizationSaved.id, datasetSaved.id!!) } assertEquals("The dataset hasn't failed and can't be rolled back", exception.message) } @@ -869,31 +863,31 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { @Test fun `status should go back to normal on rollback endpoint call`() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - organization = makeOrganizationWithRole("organization") - organizationSaved = organizationApiService.registerOrganization(organization) + organization = makeOrganizationRequestWithRole("organization") + organizationSaved = organizationApiService.createOrganization(organization) dataset = makeDatasetWithRole(sourceType = DatasetSourceType.File) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetRepository.save(datasetSaved.apply { ingestionStatus = IngestionStatusEnum.ERROR }) - datasetApiService.rollbackRefresh(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.rollbackRefresh(organizationSaved.id, datasetSaved.id!!) var datasetStatus = - datasetApiService.getDatasetTwingraphStatus(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.getDatasetTwingraphStatus(organizationSaved.id, datasetSaved.id!!) assertEquals(IngestionStatusEnum.NONE.value, datasetStatus) every { datasetApiService.query(any(), any()) } returns mockk() val fileName = this::class.java.getResource("/integrationTest.zip")?.file val file = File(fileName!!) val resource = ByteArrayResource(file.readBytes()) - datasetApiService.uploadTwingraph(organizationSaved.id!!, datasetSaved.id!!, resource) + datasetApiService.uploadTwingraph(organizationSaved.id, datasetSaved.id!!, resource) do { Thread.sleep(50L) datasetStatus = - datasetApiService.getDatasetTwingraphStatus(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.getDatasetTwingraphStatus(organizationSaved.id, datasetSaved.id!!) } while (datasetStatus == IngestionStatusEnum.PENDING.value) datasetRepository.save(datasetSaved.apply { ingestionStatus = IngestionStatusEnum.ERROR }) - datasetApiService.rollbackRefresh(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.rollbackRefresh(organizationSaved.id, datasetSaved.id!!) datasetStatus = - datasetApiService.getDatasetTwingraphStatus(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.getDatasetTwingraphStatus(organizationSaved.id, datasetSaved.id!!) assertEquals(IngestionStatusEnum.NONE.value, datasetStatus) } @@ -910,14 +904,14 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test RBAC refreshDataset : $sourceType") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER organizationSaved = - organizationApiService.registerOrganization( - makeOrganizationWithRole("organization")) + organizationApiService.createOrganization( + makeOrganizationRequestWithRole("organization")) val parentDataset = datasetApiService.createDataset( - organizationSaved.id!!, makeDatasetWithRole(sourceType = sourceType)) + organizationSaved.id, makeDatasetWithRole(sourceType = sourceType)) datasetSaved = datasetApiService.createDataset( - organizationSaved.id!!, + organizationSaved.id, makeDatasetWithRole(parentId = parentDataset.id!!, sourceType = sourceType)) every { eventPublisher.publishEvent(any()) } answers @@ -927,12 +921,12 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { if (shouldThrow) { val exception = assertThrows { - datasetApiService.refreshDataset(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.refreshDataset(organizationSaved.id, datasetSaved.id!!) } assertEquals("Cannot be applied to source type '$sourceType'", exception.message) } else { assertDoesNotThrow { - datasetApiService.refreshDataset(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.refreshDataset(organizationSaved.id, datasetSaved.id!!) } } } @@ -944,15 +938,15 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { assertNull( datasetApiService - .findDatasetById(organizationSaved.id!!, datasetSaved.id!!) + .findDatasetById(organizationSaved.id, datasetSaved.id!!) .linkedWorkspaceIdList) - datasetApiService.linkWorkspace(organizationSaved.id!!, datasetSaved.id!!, workspaceSaved.id!!) + datasetApiService.linkWorkspace(organizationSaved.id, datasetSaved.id!!, workspaceSaved.id!!) val workspaceIds = listOf(workspaceSaved.id!!) checkLinkedWorkspaceId(workspaceIds) - datasetApiService.linkWorkspace(organizationSaved.id!!, datasetSaved.id!!, workspaceSaved.id!!) + datasetApiService.linkWorkspace(organizationSaved.id, datasetSaved.id!!, workspaceSaved.id!!) checkLinkedWorkspaceId(workspaceIds) } @@ -960,14 +954,14 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { private fun checkLinkedWorkspaceId(workspaceIds: List) { assertEquals( datasetApiService - .findDatasetById(organizationSaved.id!!, datasetSaved.id!!) + .findDatasetById(organizationSaved.id, datasetSaved.id!!) .linkedWorkspaceIdList!! .size, workspaceIds.size) assertEquals( datasetApiService - .findDatasetById(organizationSaved.id!!, datasetSaved.id!!) + .findDatasetById(organizationSaved.id, datasetSaved.id!!) .linkedWorkspaceIdList!!, workspaceIds) } @@ -977,17 +971,16 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { assertNull( datasetApiService - .findDatasetById(organizationSaved.id!!, datasetSaved.id!!) + .findDatasetById(organizationSaved.id, datasetSaved.id!!) .linkedWorkspaceIdList) - datasetApiService.linkWorkspace(organizationSaved.id!!, datasetSaved.id!!, workspaceSaved.id!!) + datasetApiService.linkWorkspace(organizationSaved.id, datasetSaved.id!!, workspaceSaved.id!!) - datasetApiService.unlinkWorkspace( - organizationSaved.id!!, datasetSaved.id!!, workspaceSaved.id!!) + datasetApiService.unlinkWorkspace(organizationSaved.id, datasetSaved.id!!, workspaceSaved.id!!) assertEquals( datasetApiService - .findDatasetById(organizationSaved.id!!, datasetSaved.id!!) + .findDatasetById(organizationSaved.id, datasetSaved.id!!) .linkedWorkspaceIdList!! .size, 0) @@ -998,33 +991,32 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { assertNull( datasetApiService - .findDatasetById(organizationSaved.id!!, datasetSaved.id!!) + .findDatasetById(organizationSaved.id, datasetSaved.id!!) .linkedWorkspaceIdList) assertNull( workspaceApiService - .findWorkspaceById(organizationSaved.id!!, workspaceSaved.id!!) + .findWorkspaceById(organizationSaved.id, workspaceSaved.id!!) .linkedDatasetIdList) - datasetApiService.unlinkWorkspace( - organizationSaved.id!!, datasetSaved.id!!, workspaceSaved.id!!) + datasetApiService.unlinkWorkspace(organizationSaved.id, datasetSaved.id!!, workspaceSaved.id!!) assertNull( datasetApiService - .findDatasetById(organizationSaved.id!!, datasetSaved.id!!) + .findDatasetById(organizationSaved.id, datasetSaved.id!!) .linkedWorkspaceIdList) assertNull( workspaceApiService - .findWorkspaceById(organizationSaved.id!!, workspaceSaved.id!!) + .findWorkspaceById(organizationSaved.id, workspaceSaved.id!!) .linkedDatasetIdList) } @Test fun `getConnector return same connector`() { val dataset = makeDatasetWithRole() - val dataset1 = datasetApiService.createDataset(organizationSaved.id!!, dataset) - val dataset2 = datasetApiService.createDataset(organizationSaved.id!!, dataset) + val dataset1 = datasetApiService.createDataset(organizationSaved.id, dataset) + val dataset2 = datasetApiService.createDataset(organizationSaved.id, dataset) assertEquals(dataset1.connector!!.id, dataset2.connector!!.id) } @@ -1032,9 +1024,9 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { @Test fun `As viewer, I can only see my information in security property for findDatasetById`() { dataset = makeDatasetWithRole(role = ROLE_VIEWER) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) - datasetSaved = datasetApiService.findDatasetById(organizationSaved.id!!, datasetSaved.id!!) + datasetSaved = datasetApiService.findDatasetById(organizationSaved.id, datasetSaved.id!!) assertEquals( DatasetSecurity( default = ROLE_NONE, mutableListOf(DatasetAccessControl(TEST_USER_MAIL, ROLE_VIEWER))), @@ -1045,12 +1037,12 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { @Test fun `As viewer, I can only see my information in security property for findAllDatasets`() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - datasetApiService.deleteDataset(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.deleteDataset(organizationSaved.id, datasetSaved.id!!) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL dataset = makeDatasetWithRole(role = ROLE_VIEWER) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) - val datasets = datasetApiService.findAllDatasets(organizationSaved.id!!, null, null) + val datasets = datasetApiService.findAllDatasets(organizationSaved.id, null, null) datasets.forEach { assertEquals( DatasetSecurity( @@ -1064,14 +1056,14 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { @Test fun `As viewer, I can only see my information in security property for searchDatasets`() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - datasetApiService.deleteDataset(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.deleteDataset(organizationSaved.id, datasetSaved.id!!) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL dataset = makeDatasetWithRole(role = ROLE_VIEWER) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) val datasets = datasetApiService.searchDatasets( - organizationSaved.id!!, DatasetSearch(mutableListOf("dataset")), 0, 10) + organizationSaved.id, DatasetSearch(mutableListOf("dataset")), 0, 10) datasets.forEach { assertEquals( DatasetSecurity( @@ -1092,14 +1084,12 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { id = "c-AbCdEf123") } - fun makeOrganizationWithRole( + fun makeOrganizationRequestWithRole( userName: String = TEST_USER_MAIL, role: String = ROLE_EDITOR - ): Organization { - return Organization( - id = UUID.randomUUID().toString(), + ): OrganizationCreationRequest { + return OrganizationCreationRequest( name = "Organization NameRbac", - ownerId = "my.account-tester@cosmotech.com", security = OrganizationSecurity( default = ROLE_NONE, @@ -1109,7 +1099,7 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { OrganizationAccessControl(id = userName, role = role)))) } fun makeDataset( - organizationId: String = organizationSaved.id!!, + organizationId: String = organizationSaved.id, parentId: String = "", sourceType: DatasetSourceType = DatasetSourceType.Twincache ): Dataset { @@ -1127,7 +1117,7 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { } fun makeDatasetWithRole( - organizationId: String = organizationSaved.id!!, + organizationId: String = organizationSaved.id, parentId: String = "", userName: String = TEST_USER_MAIL, role: String = ROLE_ADMIN, @@ -1154,7 +1144,7 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { } fun makeSolution( - organizationId: String = organizationSaved.id!!, + organizationId: String = organizationSaved.id, userName: String = TEST_USER_MAIL, role: String = ROLE_EDITOR ): Solution { @@ -1174,7 +1164,7 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() { } fun makeWorkspace( - organizationId: String = organizationSaved.id!!, + organizationId: String = organizationSaved.id, solutionId: String = solutionSaved.id!!, name: String = "name", userName: String = TEST_USER_MAIL, diff --git a/dataset/src/integrationTest/kotlin/com/cosmotech/dataset/service/DatasetServiceRBACTest.kt b/dataset/src/integrationTest/kotlin/com/cosmotech/dataset/service/DatasetServiceRBACTest.kt index 9ce759909..46dd796af 100644 --- a/dataset/src/integrationTest/kotlin/com/cosmotech/dataset/service/DatasetServiceRBACTest.kt +++ b/dataset/src/integrationTest/kotlin/com/cosmotech/dataset/service/DatasetServiceRBACTest.kt @@ -45,6 +45,7 @@ import com.cosmotech.dataset.repository.DatasetRepository import com.cosmotech.organization.OrganizationApiServiceInterface import com.cosmotech.organization.domain.Organization import com.cosmotech.organization.domain.OrganizationAccessControl +import com.cosmotech.organization.domain.OrganizationCreationRequest import com.cosmotech.organization.domain.OrganizationSecurity import com.ninjasquad.springmockk.SpykBean import com.redis.om.spring.RediSearchIndexer @@ -108,7 +109,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { lateinit var retrievedDataset1: Dataset lateinit var jedis: UnifiedJedis - lateinit var organization: Organization + lateinit var organization: OrganizationCreationRequest lateinit var organizationSaved: Organization @BeforeAll @@ -135,7 +136,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { connectorSaved = connectorApiService.registerConnector(makeConnector()) - organization = makeOrganization("Organization") + organization = makeOrganizationRequest("Organization") dataset = makeDataset("d-dataset-1", "dataset-1") dataset2 = makeDataset("d-dataset-2", "dataset-2") } @@ -158,10 +159,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC rollbackRefresh : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(role = role) + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = ROLE_ADMIN) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() datasetRepository.save( datasetSaved.apply { datasetSaved.ingestionStatus = IngestionStatusEnum.ERROR }) @@ -171,14 +172,14 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { if (shouldThrow) { val exception = assertThrows { - datasetApiService.rollbackRefresh(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.rollbackRefresh(organizationSaved.id, datasetSaved.id!!) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { - datasetApiService.rollbackRefresh(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.rollbackRefresh(organizationSaved.id, datasetSaved.id!!) } } } @@ -197,10 +198,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Dataset RBAC rollbackRefresh : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(role = ROLE_ADMIN) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(role = ROLE_ADMIN) + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = role) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() datasetRepository.save( datasetSaved.apply { datasetSaved.ingestionStatus = IngestionStatusEnum.ERROR }) @@ -210,14 +211,14 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { if (shouldThrow) { val exception = assertThrows { - datasetApiService.rollbackRefresh(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.rollbackRefresh(organizationSaved.id, datasetSaved.id!!) } assertEquals( "RBAC ${datasetSaved.id!!} - User does not have permission $PERMISSION_WRITE", exception.message) } else { assertDoesNotThrow { - datasetApiService.rollbackRefresh(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.rollbackRefresh(organizationSaved.id, datasetSaved.id!!) } } } @@ -236,10 +237,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC twingraphBatchUpdate : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(role = role) + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = ROLE_ADMIN) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() val datasetTwinGraphQuery = DatasetTwinGraphQuery("MATCH (n) RETURN n") @@ -251,18 +252,15 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.twingraphBatchUpdate( - organizationSaved.id!!, - datasetSaved.id!!, - datasetTwinGraphQuery, - resource) + organizationSaved.id, datasetSaved.id!!, datasetTwinGraphQuery, resource) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { datasetApiService.twingraphBatchUpdate( - organizationSaved.id!!, datasetSaved.id!!, datasetTwinGraphQuery, resource) + organizationSaved.id, datasetSaved.id!!, datasetTwinGraphQuery, resource) } } } @@ -281,10 +279,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Dataset RBAC twingraphBatchUpdate : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole() - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole() + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = role) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() val datasetTwinGraphQuery = DatasetTwinGraphQuery("MATCH (n) RETURN n") @@ -296,10 +294,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.twingraphBatchUpdate( - organizationSaved.id!!, - datasetSaved.id!!, - datasetTwinGraphQuery, - resource) + organizationSaved.id, datasetSaved.id!!, datasetTwinGraphQuery, resource) } if (role == ROLE_NONE) { assertEquals( @@ -313,7 +308,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { datasetApiService.twingraphBatchUpdate( - organizationSaved.id!!, datasetSaved.id!!, datasetTwinGraphQuery, resource) + organizationSaved.id, datasetSaved.id!!, datasetTwinGraphQuery, resource) } } } @@ -333,10 +328,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { "Test Organization RBAC addOrReplaceDatasetCompatibilityElements : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(role = role) + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = ROLE_ADMIN) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() val datasetCompatibility = DatasetCompatibility("") @@ -347,17 +342,15 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.addOrReplaceDatasetCompatibilityElements( - organizationSaved.id!!, - datasetSaved.id!!, - listOf(datasetCompatibility)) + organizationSaved.id, datasetSaved.id!!, listOf(datasetCompatibility)) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { datasetApiService.addOrReplaceDatasetCompatibilityElements( - organizationSaved.id!!, datasetSaved.id!!, listOf(datasetCompatibility)) + organizationSaved.id, datasetSaved.id!!, listOf(datasetCompatibility)) } } } @@ -377,10 +370,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { "Test Dataset RBAC addOrReplaceDatasetCompatibilityElements : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole() - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole() + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = role) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() val datasetCompatibility = DatasetCompatibility("") @@ -391,9 +384,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.addOrReplaceDatasetCompatibilityElements( - organizationSaved.id!!, - datasetSaved.id!!, - listOf(datasetCompatibility)) + organizationSaved.id, datasetSaved.id!!, listOf(datasetCompatibility)) } assertEquals( "RBAC ${datasetSaved.id!!} - User does not have permission $PERMISSION_WRITE", @@ -401,7 +392,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { datasetApiService.addOrReplaceDatasetCompatibilityElements( - organizationSaved.id!!, datasetSaved.id!!, listOf(datasetCompatibility)) + organizationSaved.id, datasetSaved.id!!, listOf(datasetCompatibility)) } } } @@ -420,8 +411,8 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test RBAC createDataset : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(role = role) + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole() every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -429,14 +420,14 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { if (shouldThrow) { val exception = assertThrows { - datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetApiService.createDataset(organizationSaved.id, dataset) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_CREATE_CHILDREN", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_CREATE_CHILDREN", exception.message) } else { assertDoesNotThrow { - datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetApiService.createDataset(organizationSaved.id, dataset) } } } @@ -455,10 +446,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC createSubDataset : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(role = role) + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = ROLE_ADMIN) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() val subDatasetTwinGraphQuery = SubDatasetGraphQuery() @@ -469,15 +460,15 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.createSubDataset( - organizationSaved.id!!, datasetSaved.id!!, subDatasetTwinGraphQuery) + organizationSaved.id, datasetSaved.id!!, subDatasetTwinGraphQuery) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { datasetApiService.createSubDataset( - organizationSaved.id!!, datasetSaved.id!!, subDatasetTwinGraphQuery) + organizationSaved.id, datasetSaved.id!!, subDatasetTwinGraphQuery) } } } @@ -496,10 +487,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Dataset RBAC createSubDataset : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole() - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole() + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = role) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() val subDatasetTwinGraphQuery = SubDatasetGraphQuery() @@ -510,7 +501,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.createSubDataset( - organizationSaved.id!!, datasetSaved.id!!, subDatasetTwinGraphQuery) + organizationSaved.id, datasetSaved.id!!, subDatasetTwinGraphQuery) } if (role == ROLE_NONE) { assertEquals( @@ -524,7 +515,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { datasetApiService.createSubDataset( - organizationSaved.id!!, datasetSaved.id!!, subDatasetTwinGraphQuery) + organizationSaved.id, datasetSaved.id!!, subDatasetTwinGraphQuery) } } } @@ -543,10 +534,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC createTwingraphEntities : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(role = role) + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = ROLE_ADMIN) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() val graphProperties = @@ -558,18 +549,15 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.createTwingraphEntities( - organizationSaved.id!!, - datasetSaved.id!!, - "node", - listOf(graphProperties)) + organizationSaved.id, datasetSaved.id!!, "node", listOf(graphProperties)) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { datasetApiService.createTwingraphEntities( - organizationSaved.id!!, datasetSaved.id!!, "node", listOf(graphProperties)) + organizationSaved.id, datasetSaved.id!!, "node", listOf(graphProperties)) } } } @@ -588,10 +576,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Dataset RBAC createTwingraphEntities : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole() - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole() + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = role) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() val graphProperties = @@ -603,10 +591,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.createTwingraphEntities( - organizationSaved.id!!, - datasetSaved.id!!, - "node", - listOf(graphProperties)) + organizationSaved.id, datasetSaved.id!!, "node", listOf(graphProperties)) } if (role == ROLE_NONE) { assertEquals( @@ -620,7 +605,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { datasetApiService.createTwingraphEntities( - organizationSaved.id!!, datasetSaved.id!!, "node", listOf(graphProperties)) + organizationSaved.id, datasetSaved.id!!, "node", listOf(graphProperties)) } } } @@ -639,10 +624,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC deleteDataset : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(role = role) + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = ROLE_ADMIN) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -650,14 +635,14 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { if (shouldThrow) { val exception = assertThrows { - datasetApiService.deleteDataset(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.deleteDataset(organizationSaved.id, datasetSaved.id!!) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { - datasetApiService.deleteDataset(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.deleteDataset(organizationSaved.id, datasetSaved.id!!) } } } @@ -676,10 +661,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Dataset RBAC deleteDataset : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole() - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole() + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = role) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -687,14 +672,14 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { if (shouldThrow) { val exception = assertThrows { - datasetApiService.deleteDataset(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.deleteDataset(organizationSaved.id, datasetSaved.id!!) } assertEquals( "RBAC ${datasetSaved.id!!} - User does not have permission $PERMISSION_DELETE", exception.message) } else { assertDoesNotThrow { - datasetApiService.deleteDataset(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.deleteDataset(organizationSaved.id, datasetSaved.id!!) } } } @@ -713,10 +698,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC deleteTwingraphEntities : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(role = role) + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = ROLE_ADMIN) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -725,15 +710,15 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.deleteTwingraphEntities( - organizationSaved.id!!, datasetSaved.id!!, "node", listOf("")) + organizationSaved.id, datasetSaved.id!!, "node", listOf("")) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { datasetApiService.deleteTwingraphEntities( - organizationSaved.id!!, datasetSaved.id!!, "node", listOf("")) + organizationSaved.id, datasetSaved.id!!, "node", listOf("")) } } } @@ -752,10 +737,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Dataset RBAC deleteTwingraphEntities : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole() - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole() + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = role) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -764,7 +749,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.deleteTwingraphEntities( - organizationSaved.id!!, datasetSaved.id!!, "node", listOf("")) + organizationSaved.id, datasetSaved.id!!, "node", listOf("")) } if (role == ROLE_NONE) { assertEquals( @@ -778,7 +763,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { datasetApiService.deleteTwingraphEntities( - organizationSaved.id!!, datasetSaved.id!!, "node", listOf("")) + organizationSaved.id, datasetSaved.id!!, "node", listOf("")) } } } @@ -797,10 +782,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test RBAC downloadTwingraph : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(role = role) + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole() - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -815,14 +800,14 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { if (shouldThrow) { val exception = assertThrows { - datasetApiService.downloadTwingraph(organizationSaved.id!!, "hash") + datasetApiService.downloadTwingraph(organizationSaved.id, "hash") } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { - datasetApiService.downloadTwingraph(organizationSaved.id!!, "hash") + datasetApiService.downloadTwingraph(organizationSaved.id, "hash") } } } @@ -841,10 +826,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test RBAC findAllDatasets : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(role = role) + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole() - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -852,14 +837,14 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { if (shouldThrow) { val exception = assertThrows { - datasetApiService.findAllDatasets(organizationSaved.id!!, null, null) + datasetApiService.findAllDatasets(organizationSaved.id, null, null) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { - datasetApiService.findAllDatasets(organizationSaved.id!!, null, null) + datasetApiService.findAllDatasets(organizationSaved.id, null, null) } } } @@ -878,10 +863,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC findDatasetById : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(role = role) + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = ROLE_ADMIN) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -889,14 +874,14 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { if (shouldThrow) { val exception = assertThrows { - datasetApiService.findDatasetById(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.findDatasetById(organizationSaved.id, datasetSaved.id!!) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { - datasetApiService.findDatasetById(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.findDatasetById(organizationSaved.id, datasetSaved.id!!) } } } @@ -915,10 +900,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Dataset RBAC findDatasetById : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole() - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole() + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = role) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -926,14 +911,14 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { if (shouldThrow) { val exception = assertThrows { - datasetApiService.findDatasetById(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.findDatasetById(organizationSaved.id, datasetSaved.id!!) } assertEquals( "RBAC ${datasetSaved.id!!} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { - datasetApiService.findDatasetById(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.findDatasetById(organizationSaved.id, datasetSaved.id!!) } } } @@ -952,10 +937,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC getDatasetTwingraphStatus : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(role = role) + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = ROLE_ADMIN) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -964,15 +949,15 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.getDatasetTwingraphStatus( - organizationSaved.id!!, datasetSaved.id!!) + organizationSaved.id, datasetSaved.id!!) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { datasetApiService.getDatasetTwingraphStatus( - organizationSaved.id!!, datasetSaved.id!!) + organizationSaved.id, datasetSaved.id!!) } } } @@ -991,10 +976,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Dataset RBAC getDatasetTwingraphStatus : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole() - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole() + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = role) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -1003,7 +988,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.getDatasetTwingraphStatus( - organizationSaved.id!!, datasetSaved.id!!) + organizationSaved.id, datasetSaved.id!!) } assertEquals( "RBAC ${datasetSaved.id!!} - User does not have permission $PERMISSION_READ", @@ -1011,7 +996,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { datasetApiService.getDatasetTwingraphStatus( - organizationSaved.id!!, datasetSaved.id!!) + organizationSaved.id, datasetSaved.id!!) } } } @@ -1030,10 +1015,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC getTwingraphEntities : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(role = role) + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = ROLE_ADMIN) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -1042,15 +1027,15 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.getTwingraphEntities( - organizationSaved.id!!, datasetSaved.id!!, "node", listOf("")) + organizationSaved.id, datasetSaved.id!!, "node", listOf("")) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { datasetApiService.getTwingraphEntities( - organizationSaved.id!!, datasetSaved.id!!, "node", listOf("")) + organizationSaved.id, datasetSaved.id!!, "node", listOf("")) } } } @@ -1069,10 +1054,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Dataset RBAC getTwingraphEntities : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole() - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole() + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = role) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -1081,7 +1066,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.getTwingraphEntities( - organizationSaved.id!!, datasetSaved.id!!, "node", listOf("")) + organizationSaved.id, datasetSaved.id!!, "node", listOf("")) } assertEquals( "RBAC ${datasetSaved.id!!} - User does not have permission $PERMISSION_READ", @@ -1089,7 +1074,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { datasetApiService.getTwingraphEntities( - organizationSaved.id!!, datasetSaved.id!!, "node", listOf("")) + organizationSaved.id, datasetSaved.id!!, "node", listOf("")) } } } @@ -1108,17 +1093,16 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC refreshDataset : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(role = role) + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = ROLE_ADMIN, sourceType = DatasetSourceType.Twincache) - val datasetParentSaved = - datasetApiService.createDataset(organizationSaved.id!!, dataset) + val datasetParentSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetParentSaved materializeTwingraph() datasetSaved = datasetApiService.createSubDataset( - organizationSaved.id!!, datasetParentSaved.id!!, SubDatasetGraphQuery()) + organizationSaved.id, datasetParentSaved.id!!, SubDatasetGraphQuery()) advanceUntilIdle() every { eventPublisher.publishEvent(any()) } answers @@ -1130,14 +1114,14 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { if (shouldThrow) { val exception = assertThrows { - datasetApiService.refreshDataset(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.refreshDataset(organizationSaved.id, datasetSaved.id!!) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { - datasetApiService.refreshDataset(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.refreshDataset(organizationSaved.id, datasetSaved.id!!) } } } @@ -1157,16 +1141,15 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Dataset RBAC refreshDataset : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole() - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole() + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = role, sourceType = DatasetSourceType.Twincache) - val datasetParentSaved = - datasetApiService.createDataset(organizationSaved.id!!, dataset) + val datasetParentSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetParentSaved materializeTwingraph() datasetSaved = datasetApiService.createSubDataset( - organizationSaved.id!!, datasetParentSaved.id!!, SubDatasetGraphQuery()) + organizationSaved.id, datasetParentSaved.id!!, SubDatasetGraphQuery()) advanceUntilIdle() every { eventPublisher.publishEvent(any()) } answers @@ -1178,7 +1161,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { if (shouldThrow) { val exception = assertThrows { - datasetApiService.refreshDataset(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.refreshDataset(organizationSaved.id, datasetSaved.id!!) } if (role == ROLE_NONE) { assertEquals( @@ -1191,7 +1174,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { } } else { assertDoesNotThrow { - datasetApiService.refreshDataset(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.refreshDataset(organizationSaved.id, datasetSaved.id!!) } } } @@ -1212,10 +1195,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { "Test Organization RBAC removeAllDatasetCompatibilityElements : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(role = role) + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = ROLE_ADMIN) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -1224,15 +1207,15 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.removeAllDatasetCompatibilityElements( - organizationSaved.id!!, datasetSaved.id!!) + organizationSaved.id, datasetSaved.id!!) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { datasetApiService.removeAllDatasetCompatibilityElements( - organizationSaved.id!!, datasetSaved.id!!) + organizationSaved.id, datasetSaved.id!!) } } } @@ -1252,10 +1235,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { "Test Dataset RBAC removeAllDatasetCompatibilityElements : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole() - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole() + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = role) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -1264,7 +1247,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.removeAllDatasetCompatibilityElements( - organizationSaved.id!!, datasetSaved.id!!) + organizationSaved.id, datasetSaved.id!!) } assertEquals( "RBAC ${datasetSaved.id!!} - User does not have permission $PERMISSION_WRITE", @@ -1272,7 +1255,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { datasetApiService.removeAllDatasetCompatibilityElements( - organizationSaved.id!!, datasetSaved.id!!) + organizationSaved.id, datasetSaved.id!!) } } } @@ -1291,10 +1274,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test RBAC searchDatasets : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(role = role) + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole() - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() val datasetSearch = DatasetSearch(mutableListOf("dataset")) @@ -1305,15 +1288,14 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.searchDatasets( - organizationSaved.id!!, datasetSearch, null, null) + organizationSaved.id, datasetSearch, null, null) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { - datasetApiService.searchDatasets( - organizationSaved.id!!, datasetSearch, null, null) + datasetApiService.searchDatasets(organizationSaved.id, datasetSearch, null, null) } } } @@ -1332,10 +1314,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC twingraphBatchQuery : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(role = role) + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = ROLE_ADMIN) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() val datasetTwinGraphQuery = DatasetTwinGraphQuery("MATCH (n) RETURN n") @@ -1347,15 +1329,15 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.twingraphBatchQuery( - organizationSaved.id!!, datasetSaved.id!!, datasetTwinGraphQuery) + organizationSaved.id, datasetSaved.id!!, datasetTwinGraphQuery) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { datasetApiService.twingraphBatchQuery( - organizationSaved.id!!, datasetSaved.id!!, datasetTwinGraphQuery) + organizationSaved.id, datasetSaved.id!!, datasetTwinGraphQuery) } } } @@ -1374,10 +1356,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Dataset RBAC twingraphBatchQuery : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole() - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole() + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = role) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() val datasetTwinGraphQuery = DatasetTwinGraphQuery("MATCH (n) RETURN n") @@ -1389,7 +1371,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.twingraphBatchQuery( - organizationSaved.id!!, datasetSaved.id!!, datasetTwinGraphQuery) + organizationSaved.id, datasetSaved.id!!, datasetTwinGraphQuery) } assertEquals( "RBAC ${datasetSaved.id!!} - User does not have permission $PERMISSION_READ", @@ -1397,7 +1379,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { datasetApiService.twingraphBatchQuery( - organizationSaved.id!!, datasetSaved.id!!, datasetTwinGraphQuery) + organizationSaved.id, datasetSaved.id!!, datasetTwinGraphQuery) } } } @@ -1416,10 +1398,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC twingraphQuery : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(role = role) + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = ROLE_ADMIN) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() val datasetTwinGraphQuery = DatasetTwinGraphQuery("MATCH (n) RETURN n") @@ -1429,15 +1411,15 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.twingraphQuery( - organizationSaved.id!!, datasetSaved.id!!, datasetTwinGraphQuery) + organizationSaved.id, datasetSaved.id!!, datasetTwinGraphQuery) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { datasetApiService.twingraphQuery( - organizationSaved.id!!, datasetSaved.id!!, datasetTwinGraphQuery) + organizationSaved.id, datasetSaved.id!!, datasetTwinGraphQuery) } } } @@ -1456,10 +1438,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Dataset RBAC twingraphQuery : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole() - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole() + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = role) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() val datasetTwinGraphQuery = DatasetTwinGraphQuery("MATCH (n) RETURN n") @@ -1469,7 +1451,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.twingraphQuery( - organizationSaved.id!!, datasetSaved.id!!, datasetTwinGraphQuery) + organizationSaved.id, datasetSaved.id!!, datasetTwinGraphQuery) } assertEquals( "RBAC ${datasetSaved.id!!} - User does not have permission $PERMISSION_READ", @@ -1477,7 +1459,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { datasetApiService.twingraphQuery( - organizationSaved.id!!, datasetSaved.id!!, datasetTwinGraphQuery) + organizationSaved.id, datasetSaved.id!!, datasetTwinGraphQuery) } } } @@ -1496,10 +1478,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC updateDataset : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(role = role) + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = ROLE_ADMIN) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -1508,15 +1490,14 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.updateDataset( - organizationSaved.id!!, datasetSaved.id!!, dataset) + organizationSaved.id, datasetSaved.id!!, dataset) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { - datasetApiService.updateDataset( - organizationSaved.id!!, datasetSaved.id!!, dataset) + datasetApiService.updateDataset(organizationSaved.id, datasetSaved.id!!, dataset) } } } @@ -1535,10 +1516,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Dataset RBAC updateDataset : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole() - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole() + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = role) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -1547,15 +1528,14 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.updateDataset( - organizationSaved.id!!, datasetSaved.id!!, dataset) + organizationSaved.id, datasetSaved.id!!, dataset) } assertEquals( "RBAC ${datasetSaved.id!!} - User does not have permission $PERMISSION_WRITE", exception.message) } else { assertDoesNotThrow { - datasetApiService.updateDataset( - organizationSaved.id!!, datasetSaved.id!!, dataset) + datasetApiService.updateDataset(organizationSaved.id, datasetSaved.id!!, dataset) } } } @@ -1574,10 +1554,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC updateTwingraphEntities : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(role = role) + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = ROLE_ADMIN) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -1586,15 +1566,15 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.updateTwingraphEntities( - organizationSaved.id!!, datasetSaved.id!!, "node", listOf()) + organizationSaved.id, datasetSaved.id!!, "node", listOf()) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { datasetApiService.updateTwingraphEntities( - organizationSaved.id!!, datasetSaved.id!!, "node", listOf()) + organizationSaved.id, datasetSaved.id!!, "node", listOf()) } } } @@ -1613,10 +1593,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Dataset RBAC updateTwingraphEntities : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole() - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole() + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = role) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -1625,7 +1605,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.updateTwingraphEntities( - organizationSaved.id!!, datasetSaved.id!!, "node", listOf()) + organizationSaved.id, datasetSaved.id!!, "node", listOf()) } if (role == ROLE_NONE) { assertEquals( @@ -1639,7 +1619,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { datasetApiService.updateTwingraphEntities( - organizationSaved.id!!, datasetSaved.id!!, "node", listOf()) + organizationSaved.id, datasetSaved.id!!, "node", listOf()) } } } @@ -1658,11 +1638,11 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC uploadTwingraph : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(role = role) + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = ROLE_ADMIN, sourceType = DatasetSourceType.File) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) val fileName = this::class.java.getResource("/integrationTest.zip")?.file val file = File(fileName!!) val resource = ByteArrayResource(file.readBytes()) @@ -1673,15 +1653,15 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.uploadTwingraph( - organizationSaved.id!!, datasetSaved.id!!, resource) + organizationSaved.id, datasetSaved.id!!, resource) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { datasetApiService.uploadTwingraph( - organizationSaved.id!!, datasetSaved.id!!, resource) + organizationSaved.id, datasetSaved.id!!, resource) } } } @@ -1700,10 +1680,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Dataset RBAC uploadTwingraph : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole() - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole() + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = role, sourceType = DatasetSourceType.File) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) val fileName = this::class.java.getResource("/integrationTest.zip")?.file val file = File(fileName!!) val resource = ByteArrayResource(file.readBytes()) @@ -1714,7 +1694,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.uploadTwingraph( - organizationSaved.id!!, datasetSaved.id!!, resource) + organizationSaved.id, datasetSaved.id!!, resource) } if (role == ROLE_NONE) { assertEquals( @@ -1728,7 +1708,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { datasetApiService.uploadTwingraph( - organizationSaved.id!!, datasetSaved.id!!, resource) + organizationSaved.id, datasetSaved.id!!, resource) } } } @@ -1747,10 +1727,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC addDatasetAccessControl : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(role = role) + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = ROLE_ADMIN) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() val datasetAccessControl = DatasetAccessControl("id", ROLE_USER) @@ -1761,15 +1741,15 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.addDatasetAccessControl( - organizationSaved.id!!, datasetSaved.id!!, datasetAccessControl) + organizationSaved.id, datasetSaved.id!!, datasetAccessControl) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { datasetApiService.addDatasetAccessControl( - organizationSaved.id!!, datasetSaved.id!!, datasetAccessControl) + organizationSaved.id, datasetSaved.id!!, datasetAccessControl) } } } @@ -1788,10 +1768,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Dataset RBAC addDatasetAccessControl : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole() - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole() + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = role) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() val datasetAccessControl = DatasetAccessControl("id", ROLE_USER) @@ -1802,7 +1782,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.addDatasetAccessControl( - organizationSaved.id!!, datasetSaved.id!!, datasetAccessControl) + organizationSaved.id, datasetSaved.id!!, datasetAccessControl) } assertEquals( "RBAC ${datasetSaved.id!!} - User does not have permission $PERMISSION_WRITE_SECURITY", @@ -1810,7 +1790,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { datasetApiService.addDatasetAccessControl( - organizationSaved.id!!, datasetSaved.id!!, datasetAccessControl) + organizationSaved.id, datasetSaved.id!!, datasetAccessControl) } } } @@ -1829,11 +1809,11 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC getDatasetAccessControl : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(role = role) + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = ROLE_ADMIN, sourceType = DatasetSourceType.None) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -1841,15 +1821,15 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.getDatasetAccessControl( - organizationSaved.id!!, datasetSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, datasetSaved.id!!, TEST_USER_MAIL) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { datasetApiService.getDatasetAccessControl( - organizationSaved.id!!, datasetSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, datasetSaved.id!!, TEST_USER_MAIL) } } } @@ -1868,10 +1848,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Dataset RBAC getDatasetAccessControl : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole() - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole() + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = role) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -1880,7 +1860,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.getDatasetAccessControl( - organizationSaved.id!!, datasetSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, datasetSaved.id!!, TEST_USER_MAIL) } assertEquals( "RBAC ${datasetSaved.id!!} - User does not have permission $PERMISSION_READ_SECURITY", @@ -1888,7 +1868,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { datasetApiService.getDatasetAccessControl( - organizationSaved.id!!, datasetSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, datasetSaved.id!!, TEST_USER_MAIL) } } } @@ -1907,10 +1887,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC updateDatasetAccessControl : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(role = role) + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = ROLE_ADMIN) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -1919,18 +1899,18 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.updateDatasetAccessControl( - organizationSaved.id!!, + organizationSaved.id, datasetSaved.id!!, TEST_USER_MAIL, DatasetRole(ROLE_USER)) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { datasetApiService.updateDatasetAccessControl( - organizationSaved.id!!, + organizationSaved.id, datasetSaved.id!!, TEST_USER_MAIL, DatasetRole(ROLE_USER)) @@ -1952,10 +1932,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Dataset RBAC updateDatasetAccessControl : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole() - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole() + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = role) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -1964,7 +1944,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.updateDatasetAccessControl( - organizationSaved.id!!, + organizationSaved.id, datasetSaved.id!!, TEST_USER_MAIL, DatasetRole(ROLE_USER)) @@ -1975,7 +1955,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { datasetApiService.updateDatasetAccessControl( - organizationSaved.id!!, + organizationSaved.id, datasetSaved.id!!, TEST_USER_MAIL, DatasetRole(ROLE_USER)) @@ -1997,10 +1977,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC removeDatasetAccessControl : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(role = role) + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = ROLE_ADMIN) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -2009,15 +1989,15 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.removeDatasetAccessControl( - organizationSaved.id!!, datasetSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, datasetSaved.id!!, TEST_USER_MAIL) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { datasetApiService.removeDatasetAccessControl( - organizationSaved.id!!, datasetSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, datasetSaved.id!!, TEST_USER_MAIL) } } } @@ -2036,10 +2016,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Dataset RBAC removeDatasetAccessControl : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole() - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole() + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = role) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -2048,7 +2028,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.removeDatasetAccessControl( - organizationSaved.id!!, datasetSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, datasetSaved.id!!, TEST_USER_MAIL) } assertEquals( "RBAC ${datasetSaved.id!!} - User does not have permission $PERMISSION_WRITE_SECURITY", @@ -2056,7 +2036,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { datasetApiService.removeDatasetAccessControl( - organizationSaved.id!!, datasetSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, datasetSaved.id!!, TEST_USER_MAIL) } } } @@ -2075,10 +2055,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC getDatasetSecurityUsers : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(role = role) + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = ROLE_ADMIN) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -2087,15 +2067,14 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.getDatasetSecurityUsers( - organizationSaved.id!!, datasetSaved.id!!) + organizationSaved.id, datasetSaved.id!!) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { - datasetApiService.getDatasetSecurityUsers( - organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.getDatasetSecurityUsers(organizationSaved.id, datasetSaved.id!!) } } } @@ -2114,10 +2093,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Dataset RBAC getDatasetSecurityUsers : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole() - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole() + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = role) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -2126,15 +2105,14 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.getDatasetSecurityUsers( - organizationSaved.id!!, datasetSaved.id!!) + organizationSaved.id, datasetSaved.id!!) } assertEquals( "RBAC ${datasetSaved.id!!} - User does not have permission $PERMISSION_READ_SECURITY", exception.message) } else { assertDoesNotThrow { - datasetApiService.getDatasetSecurityUsers( - organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.getDatasetSecurityUsers(organizationSaved.id, datasetSaved.id!!) } } } @@ -2153,25 +2131,24 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC getDatasetSecurity : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(role = role) + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = ROLE_ADMIN) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { - datasetApiService.getDatasetSecurity( - organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.getDatasetSecurity(organizationSaved.id, datasetSaved.id!!) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { - datasetApiService.getDatasetSecurity(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.getDatasetSecurity(organizationSaved.id, datasetSaved.id!!) } } } @@ -2190,25 +2167,24 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Dataset RBAC getDatasetSecurity : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole() - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole() + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = role) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { - datasetApiService.getDatasetSecurity( - organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.getDatasetSecurity(organizationSaved.id, datasetSaved.id!!) } assertEquals( "RBAC ${datasetSaved.id!!} - User does not have permission $PERMISSION_READ_SECURITY", exception.message) } else { assertDoesNotThrow { - datasetApiService.getDatasetSecurity(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.getDatasetSecurity(organizationSaved.id, datasetSaved.id!!) } } } @@ -2227,10 +2203,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC setDatasetDefaultSecurity : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(role = role) + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = ROLE_ADMIN) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -2238,15 +2214,15 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.setDatasetDefaultSecurity( - organizationSaved.id!!, datasetSaved.id!!, DatasetRole(ROLE_VIEWER)) + organizationSaved.id, datasetSaved.id!!, DatasetRole(ROLE_VIEWER)) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { datasetApiService.setDatasetDefaultSecurity( - organizationSaved.id!!, datasetSaved.id!!, DatasetRole(ROLE_VIEWER)) + organizationSaved.id, datasetSaved.id!!, DatasetRole(ROLE_VIEWER)) } } } @@ -2265,10 +2241,10 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Dataset RBAC setDatasetDefaultSecurity : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole() - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole() + organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDatasetWithRole(role = role) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -2276,7 +2252,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { datasetApiService.setDatasetDefaultSecurity( - organizationSaved.id!!, datasetSaved.id!!, DatasetRole(ROLE_VIEWER)) + organizationSaved.id, datasetSaved.id!!, DatasetRole(ROLE_VIEWER)) } assertEquals( "RBAC ${datasetSaved.id!!} - User does not have permission $PERMISSION_WRITE_SECURITY", @@ -2284,7 +2260,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { datasetApiService.setDatasetDefaultSecurity( - organizationSaved.id!!, datasetSaved.id!!, DatasetRole(ROLE_VIEWER)) + organizationSaved.id, datasetSaved.id!!, DatasetRole(ROLE_VIEWER)) } } } @@ -2332,10 +2308,9 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { DatasetAccessControl(id = CONNECTED_ADMIN_USER, role = ROLE_ADMIN)))) } - fun makeOrganization(name: String): Organization { - return Organization( + fun makeOrganizationRequest(name: String): OrganizationCreationRequest { + return OrganizationCreationRequest( name = name, - ownerId = "my.account-tester@cosmotech.com", security = OrganizationSecurity( default = ROLE_ADMIN, @@ -2344,14 +2319,12 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { OrganizationAccessControl(id = CONNECTED_ADMIN_USER, role = "admin")))) } - fun makeOrganizationWithRole( + fun makeOrganizationRequestWithRole( id: String = TEST_USER_MAIL, role: String = ROLE_ADMIN - ): Organization { - return Organization( - id = UUID.randomUUID().toString(), + ): OrganizationCreationRequest { + return OrganizationCreationRequest( name = "Organization NameRbac", - ownerId = "my.account-tester@cosmotech.com", security = OrganizationSecurity( default = ROLE_NONE, @@ -2362,7 +2335,7 @@ class DatasetServiceRBACTest : CsmRedisTestBase() { } fun makeDatasetWithRole( - organizationId: String = organizationSaved.id!!, + organizationId: String = organizationSaved.id, parentId: String = "", id: String = TEST_USER_MAIL, role: String = ROLE_ADMIN, diff --git a/dataset/src/main/kotlin/com/cosmotech/dataset/service/DatasetServiceImpl.kt b/dataset/src/main/kotlin/com/cosmotech/dataset/service/DatasetServiceImpl.kt index bf3fb51c2..89e19137b 100644 --- a/dataset/src/main/kotlin/com/cosmotech/dataset/service/DatasetServiceImpl.kt +++ b/dataset/src/main/kotlin/com/cosmotech/dataset/service/DatasetServiceImpl.kt @@ -75,7 +75,7 @@ import com.cosmotech.dataset.utils.isReadOnlyQuery import com.cosmotech.dataset.utils.toCsmGraphEntity import com.cosmotech.dataset.utils.toJsonString import com.cosmotech.organization.OrganizationApiServiceInterface -import com.cosmotech.organization.service.getRbac +import com.cosmotech.organization.service.toGenericSecurity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import java.io.InputStream @@ -1033,7 +1033,7 @@ class DatasetServiceImpl( val defaultPageSize = csmPlatformProperties.twincache.dataset.defaultPageSize val pageable = constructPageRequest(page, size, defaultPageSize) - var datasetList = listOf() + var datasetList: List if (pageable != null) { datasetList = datasetRepository @@ -1083,7 +1083,7 @@ class DatasetServiceImpl( val rbacSecurity = csmRbac.addUserRole( - organization.getRbac(), + organization.security.toGenericSecurity(organizationId), dataset.getRbac(), datasetAccessControl.id, datasetAccessControl.role) diff --git a/dataset/src/test/kotlin/com/cosmotech/dataset/service/DatasetServiceImplTests.kt b/dataset/src/test/kotlin/com/cosmotech/dataset/service/DatasetServiceImplTests.kt index c456d67d7..52206851d 100644 --- a/dataset/src/test/kotlin/com/cosmotech/dataset/service/DatasetServiceImplTests.kt +++ b/dataset/src/test/kotlin/com/cosmotech/dataset/service/DatasetServiceImplTests.kt @@ -12,7 +12,9 @@ import com.cosmotech.api.id.CsmIdGenerator import com.cosmotech.api.rbac.CsmAdmin import com.cosmotech.api.rbac.CsmRbac import com.cosmotech.api.rbac.PERMISSION_CREATE_CHILDREN +import com.cosmotech.api.rbac.ROLE_ADMIN import com.cosmotech.api.rbac.ROLE_NONE +import com.cosmotech.api.rbac.ROLE_VIEWER import com.cosmotech.api.security.ROLE_PLATFORM_ADMIN import com.cosmotech.api.utils.ResourceScanner import com.cosmotech.api.utils.getCurrentAccountIdentifier @@ -27,6 +29,8 @@ import com.cosmotech.dataset.repository.DatasetRepository import com.cosmotech.dataset.utils.toJsonString import com.cosmotech.organization.OrganizationApiServiceInterface import com.cosmotech.organization.domain.Organization +import com.cosmotech.organization.domain.OrganizationAccessControl +import com.cosmotech.organization.domain.OrganizationSecurity import io.mockk.* import io.mockk.impl.annotations.InjectMockKs import io.mockk.impl.annotations.MockK @@ -103,7 +107,8 @@ class DatasetServiceImplTests { @Test fun `findAllDatasets should return empty list when no dataset exists`() { - every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns Organization() + every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns + mockOrganization() every { datasetRepository.findByOrganizationIdNoSecurity(any(), any()) } returns Page.empty() @@ -114,7 +119,8 @@ class DatasetServiceImplTests { @Test fun `findDatasetById should return the dataset when it exists`() { val dataset = baseDataset() - every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns Organization() + every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns + mockOrganization() every { datasetRepository.findBy(ORGANIZATION_ID, DATASET_ID) } returns Optional.of(dataset) val result = datasetService.findDatasetById(ORGANIZATION_ID, DATASET_ID) assertEquals(dataset, result) @@ -129,7 +135,7 @@ class DatasetServiceImplTests { ) every { organizationService.getVerifiedOrganization(ORGANIZATION_ID, PERMISSION_CREATE_CHILDREN) - } returns Organization() + } returns mockOrganization() every { connectorService.findConnectorById(any()) } returns Connector( key = "key", @@ -152,7 +158,7 @@ class DatasetServiceImplTests { val dataset = baseDataset().copy(name = "") every { organizationService.getVerifiedOrganization(ORGANIZATION_ID, PERMISSION_CREATE_CHILDREN) - } returns Organization() + } returns mockOrganization() every { datasetRepository.save(any()) } returnsArgument 0 assertThrows { datasetService.createDataset(ORGANIZATION_ID, dataset) @@ -164,7 +170,7 @@ class DatasetServiceImplTests { val typeList = listOf(DatasetSourceType.ADT, DatasetSourceType.AzureStorage) every { organizationService.getVerifiedOrganization(ORGANIZATION_ID, PERMISSION_CREATE_CHILDREN) - } returns Organization() + } returns mockOrganization() typeList.forEach { type -> val dataset = baseDataset().copy(sourceType = type, source = null) every { datasetRepository.save(any()) } returnsArgument 0 @@ -190,7 +196,8 @@ class DatasetServiceImplTests { name = "My Sub Dataset", description = "My Sub Dataset description", ) - every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns Organization() + every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns + mockOrganization() every { idGenerator.generate("twingraph") } returns SUB_TWINGRAPH_ID every { datasetRepository.findBy(ORGANIZATION_ID, DATASET_ID) } returns Optional.of(dataset) every { unifiedJedis.eval(any(), any(), dataset.twingraphId, SUB_TWINGRAPH_ID) } returns Unit @@ -220,7 +227,8 @@ class DatasetServiceImplTests { val dataset = baseDataset().copy(twingraphId = "", ingestionStatus = IngestionStatusEnum.SUCCESS) val subDatasetGraphQuery = SubDatasetGraphQuery() - every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns Organization() + every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns + mockOrganization() every { datasetRepository.findBy(ORGANIZATION_ID, DATASET_ID) } returns Optional.of(dataset) assertThrows { datasetService.createSubDataset(ORGANIZATION_ID, dataset.id!!, subDatasetGraphQuery) @@ -235,7 +243,8 @@ class DatasetServiceImplTests { twingraphId = "twingraphId", sourceType = DatasetSourceType.File, ingestionStatus = IngestionStatusEnum.SUCCESS) - every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns Organization() + every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns + mockOrganization() every { datasetRepository.findBy(ORGANIZATION_ID, DATASET_ID) } returns Optional.of(dataset) val fileName = this::class.java.getResource("/Users.csv")?.file @@ -254,7 +263,8 @@ class DatasetServiceImplTests { twingraphId = "twingraphId", sourceType = DatasetSourceType.File, ingestionStatus = IngestionStatusEnum.SUCCESS) - every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns Organization() + every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns + mockOrganization() every { datasetRepository.findBy(ORGANIZATION_ID, DATASET_ID) } returns Optional.of(dataset) val fileName = this::class.java.getResource("/Users.7z")?.file @@ -275,7 +285,8 @@ class DatasetServiceImplTests { val fileName = this::class.java.getResource("/Graph.zip")?.file val file = File(fileName!!) val resource = ByteArrayResource(file.readBytes()) - every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns Organization() + every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns + mockOrganization() every { datasetRepository.findBy(ORGANIZATION_ID, DATASET_ID) } returns Optional.of(dataset) assertThrows { datasetService.uploadTwingraph(ORGANIZATION_ID, DATASET_ID, resource) @@ -291,7 +302,8 @@ class DatasetServiceImplTests { val fileName = this::class.java.getResource("/Graph.zip")?.file val file = File(fileName!!) val resource = ByteArrayResource(file.readBytes()) - every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns Organization() + every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns + mockOrganization() every { datasetRepository.findBy(ORGANIZATION_ID, DATASET_ID) } returns Optional.of(dataset) assertThrows { datasetService.uploadTwingraph(ORGANIZATION_ID, DATASET_ID, resource) @@ -309,7 +321,8 @@ class DatasetServiceImplTests { val fileName = this::class.java.getResource("/Graph.zip")?.file val file = File(fileName!!) val resource = ByteArrayResource(file.readBytes()) - every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns Organization() + every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns + mockOrganization() every { datasetRepository.findBy(ORGANIZATION_ID, DATASET_ID) } returns Optional.of(dataset) every { unifiedJedis.exists(any()) } returns true every { datasetRepository.save(any()) } returnsArgument 0 @@ -331,7 +344,8 @@ class DatasetServiceImplTests { ingestionStatus = IngestionStatusEnum.NONE, sourceType = DatasetSourceType.File, twingraphId = "twingraphId") - every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns Organization() + every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns + mockOrganization() every { datasetRepository.findBy(ORGANIZATION_ID, DATASET_ID) } returns Optional.of(dataset) every { unifiedJedis.exists(any()) } returns false val result = datasetService.getDatasetTwingraphStatus(ORGANIZATION_ID, DATASET_ID) @@ -346,7 +360,8 @@ class DatasetServiceImplTests { ingestionStatus = IngestionStatusEnum.SUCCESS, sourceType = DatasetSourceType.File, twingraphId = "twingraphId") - every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns Organization() + every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns + mockOrganization() every { datasetRepository.findBy(ORGANIZATION_ID, DATASET_ID) } returns Optional.of(dataset) every { unifiedJedis.exists(any()) } returns true every { datasetRepository.save(any()) } returns mockk() @@ -364,7 +379,8 @@ class DatasetServiceImplTests { source = SourceInfo(location = "test", jobId = "0"), twingraphId = "twingraphId") mockkConstructor(TwingraphImportJobInfoRequest::class) - every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns Organization() + every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns + mockOrganization() every { anyConstructed().response } returns "Succeeded" every { datasetRepository.findBy(ORGANIZATION_ID, DATASET_ID) } returns Optional.of(dataset) every { unifiedJedis.exists(any()) } returns true @@ -381,7 +397,8 @@ class DatasetServiceImplTests { baseDataset() .copy( sourceType = DatasetSourceType.File, source = SourceInfo("http://storage.location")) - every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns Organization() + every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns + mockOrganization() every { datasetRepository.findBy(ORGANIZATION_ID, DATASET_ID) } returns Optional.of(dataset) assertThrows { datasetService.refreshDataset(ORGANIZATION_ID, DATASET_ID) @@ -397,7 +414,8 @@ class DatasetServiceImplTests { sourceType = DatasetSourceType.ADT, source = SourceInfo("http://storage.location", jobId = "0"), twingraphId = "twingraphId") - every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns Organization() + every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns + mockOrganization() every { datasetRepository.findBy(ORGANIZATION_ID, DATASET_ID) } returns Optional.of(dataset) every { unifiedJedis.exists(any()) } returns true every { datasetRepository.save(any()) } returnsArgument 0 @@ -409,7 +427,8 @@ class DatasetServiceImplTests { @Test fun `deleteDataset should throw CsmResourceNotFoundException when Dataset is not found`() { - every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns Organization() + every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns + mockOrganization() every { datasetRepository.findBy(ORGANIZATION_ID, DATASET_ID) } returns Optional.empty() assertThrows { datasetService.deleteDataset(ORGANIZATION_ID, DATASET_ID) @@ -420,7 +439,8 @@ class DatasetServiceImplTests { fun `deleteDataset do not throw error - rbac is disabled`() { val twingraphIdValue = "mytwingraphId" val dataset = baseDataset().apply { twingraphId = twingraphIdValue } - every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns Organization() + every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns + mockOrganization() every { datasetRepository.findBy(ORGANIZATION_ID, DATASET_ID) } returns Optional.of(dataset) every { datasetRepository.delete(dataset) } returns Unit every { unifiedJedis.exists(twingraphIdValue) } returns true @@ -433,7 +453,8 @@ class DatasetServiceImplTests { @Test fun `deleteDataset should delete Dataset and its twingraph`() { val dataset = baseDataset().copy(twingraphId = "twingraphId") - every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns Organization() + every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns + mockOrganization() every { datasetRepository.findBy(ORGANIZATION_ID, DATASET_ID) } returns Optional.of(dataset) every { getCurrentAuthenticatedRoles(csmPlatformProperties) } returns listOf(ROLE_PLATFORM_ADMIN) @@ -452,7 +473,8 @@ class DatasetServiceImplTests { val graphQuery = "MATCH(n) RETURN n" val twinGraphQuery = DatasetTwinGraphQuery(graphQuery) - every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns Organization() + every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns + mockOrganization() every { datasetRepository.save(any()) } returnsArgument 0 every { datasetRepository.findBy(ORGANIZATION_ID, DATASET_ID) } returns Optional.of(dataset) every { csmPlatformProperties.twincache.queryBulkTTL } returns 1000L @@ -473,7 +495,8 @@ class DatasetServiceImplTests { @Test fun `test bulkQueryGraphs as Admin - should call query and set data to Redis`() { every { getCurrentAuthenticatedRoles(any()) } returns listOf("Platform.Admin") - every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns Organization() + every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns + mockOrganization() val dataset = baseDataset().copy(twingraphId = "graphId", ingestionStatus = IngestionStatusEnum.SUCCESS) val graphQuery = "MATCH(n) RETURN n" @@ -501,7 +524,8 @@ class DatasetServiceImplTests { @Test fun `test bulkQueryGraphs as Admin - should return existing Hash when data found`() { every { getCurrentAuthenticatedRoles(any()) } returns listOf("Platform.Admin") - every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns Organization() + every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns + mockOrganization() val dataset = baseDataset().copy(twingraphId = "graphId", ingestionStatus = IngestionStatusEnum.SUCCESS) every { datasetRepository.save(any()) } returnsArgument 0 @@ -517,7 +541,8 @@ class DatasetServiceImplTests { @Test fun `test downloadGraph as Admin - should get graph data`() { every { getCurrentAuthenticatedRoles(any()) } returns listOf("Platform.Admin") - every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns Organization() + every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns + mockOrganization() mockkStatic("org.springframework.web.context.request.RequestContextHolder") every { @@ -538,9 +563,10 @@ class DatasetServiceImplTests { @Test fun `test downloadGraph as Admin - should throw exception if data not found`() { - every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns Organization() + every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns + mockOrganization() every { getCurrentAuthenticatedRoles(any()) } returns listOf("Platform.Admin") - every { organizationService.findOrganizationById(any()) } returns mockk() + every { organizationService.getOrganization(any()) } returns mockk() every { unifiedJedis.exists(any()) } returns false assertThrows { @@ -551,7 +577,8 @@ class DatasetServiceImplTests { @Test fun `test downloadGraph as Admin - should throw exception if data expired`() { every { getCurrentAuthenticatedRoles(any()) } returns listOf("Platform.Admin") - every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns Organization() + every { organizationService.getVerifiedOrganization(ORGANIZATION_ID) } returns + mockOrganization() every { unifiedJedis.exists(any()) } returns true every { unifiedJedis.ttl(any()) } returns -1L @@ -571,3 +598,12 @@ class DatasetServiceImplTests { return resultSet } } + +private fun mockOrganization( + name: String = "orgaName", + security: OrganizationSecurity = + OrganizationSecurity( + ROLE_VIEWER, mutableListOf(OrganizationAccessControl(USER_ID, ROLE_ADMIN))) +): Organization { + return Organization(id = "o-123456789", name = name, ownerId = "123456789", security = security) +} diff --git a/doc/.openapi-generator/FILES b/doc/.openapi-generator/FILES index 4c61ad5b3..1d1369c0d 100644 --- a/doc/.openapi-generator/FILES +++ b/doc/.openapi-generator/FILES @@ -31,6 +31,7 @@ Models/GraphProperties.md Models/IngestionStatusEnum.md Models/Organization.md Models/OrganizationAccessControl.md +Models/OrganizationCreationRequest.md Models/OrganizationRole.md Models/OrganizationSecurity.md Models/QueryResult.md @@ -67,6 +68,7 @@ Models/SourceInfo.md Models/SubDatasetGraphQuery.md Models/TwinGraphBatchResult.md Models/TwincacheStatusEnum.md +Models/UpdateOrganizationRequest.md Models/Workspace.md Models/WorkspaceAccessControl.md Models/WorkspaceFile.md diff --git a/doc/Apis/OrganizationApi.md b/doc/Apis/OrganizationApi.md index b151b00d6..785aa36e0 100644 --- a/doc/Apis/OrganizationApi.md +++ b/doc/Apis/OrganizationApi.md @@ -4,25 +4,50 @@ All URIs are relative to *http://localhost* | Method | HTTP request | Description | |------------- | ------------- | -------------| -| [**addOrganizationAccessControl**](OrganizationApi.md#addOrganizationAccessControl) | **POST** /organizations/{organization_id}/security/access | Add a control access to the Organization | -| [**findAllOrganizations**](OrganizationApi.md#findAllOrganizations) | **GET** /organizations | List all Organizations | -| [**findOrganizationById**](OrganizationApi.md#findOrganizationById) | **GET** /organizations/{organization_id} | Get the details of an Organization | -| [**getAllPermissions**](OrganizationApi.md#getAllPermissions) | **GET** /organizations/permissions | Get all permissions per components | +| [**createOrganization**](OrganizationApi.md#createOrganization) | **POST** /organizations | create a new organization | +| [**createOrganizationAccessControl**](OrganizationApi.md#createOrganizationAccessControl) | **POST** /organizations/{organization_id}/security/access | Add a control access to the Organization | +| [**deleteOrganization**](OrganizationApi.md#deleteOrganization) | **DELETE** /organizations/{organization_id} | delete an organization | +| [**deleteOrganizationAccessControl**](OrganizationApi.md#deleteOrganizationAccessControl) | **DELETE** /organizations/{organization_id}/security/access/{identity_id} | Remove the specified access from the given Organization | +| [**getOrganization**](OrganizationApi.md#getOrganization) | **GET** /organizations/{organization_id} | Get the details of an Organization | | [**getOrganizationAccessControl**](OrganizationApi.md#getOrganizationAccessControl) | **GET** /organizations/{organization_id}/security/access/{identity_id} | Get a control access for the Organization | | [**getOrganizationPermissions**](OrganizationApi.md#getOrganizationPermissions) | **GET** /organizations/{organization_id}/permissions/{role} | Get the Organization permissions by given role | | [**getOrganizationSecurity**](OrganizationApi.md#getOrganizationSecurity) | **GET** /organizations/{organization_id}/security | Get the Organization security information | -| [**getOrganizationSecurityUsers**](OrganizationApi.md#getOrganizationSecurityUsers) | **GET** /organizations/{organization_id}/security/users | Get the Organization security users list | -| [**registerOrganization**](OrganizationApi.md#registerOrganization) | **POST** /organizations | Register a new organization | -| [**removeOrganizationAccessControl**](OrganizationApi.md#removeOrganizationAccessControl) | **DELETE** /organizations/{organization_id}/security/access/{identity_id} | Remove the specified access from the given Organization | -| [**setOrganizationDefaultSecurity**](OrganizationApi.md#setOrganizationDefaultSecurity) | **POST** /organizations/{organization_id}/security/default | Set the Organization default security | -| [**unregisterOrganization**](OrganizationApi.md#unregisterOrganization) | **DELETE** /organizations/{organization_id} | Unregister an organization | +| [**listOrganizationSecurityUsers**](OrganizationApi.md#listOrganizationSecurityUsers) | **GET** /organizations/{organization_id}/security/users | Get the Organization security users list | +| [**listOrganizations**](OrganizationApi.md#listOrganizations) | **GET** /organizations | List all Organizations | +| [**listPermissions**](OrganizationApi.md#listPermissions) | **GET** /organizations/permissions | Get all permissions per components | | [**updateOrganization**](OrganizationApi.md#updateOrganization) | **PATCH** /organizations/{organization_id} | Update an Organization | | [**updateOrganizationAccessControl**](OrganizationApi.md#updateOrganizationAccessControl) | **PATCH** /organizations/{organization_id}/security/access/{identity_id} | Update the specified access to User for an Organization | +| [**updateOrganizationDefaultSecurity**](OrganizationApi.md#updateOrganizationDefaultSecurity) | **POST** /organizations/{organization_id}/security/default | Update the Organization default security | - -# **addOrganizationAccessControl** -> OrganizationAccessControl addOrganizationAccessControl(organization\_id, OrganizationAccessControl) + +# **createOrganization** +> Organization createOrganization(OrganizationCreationRequest) + +create a new organization + +### Parameters + +|Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **OrganizationCreationRequest** | [**OrganizationCreationRequest**](../Models/OrganizationCreationRequest.md)| the Organization to create | | + +### Return type + +[**Organization**](../Models/Organization.md) + +### Authorization + +[oAuth2AuthCode](../README.md#oAuth2AuthCode) + +### HTTP request headers + +- **Content-Type**: application/json, application/yaml +- **Accept**: application/json + + +# **createOrganizationAccessControl** +> OrganizationAccessControl createOrganizationAccessControl(organization\_id, OrganizationAccessControl) Add a control access to the Organization @@ -46,22 +71,21 @@ Add a control access to the Organization - **Content-Type**: application/json, application/yaml - **Accept**: application/json - -# **findAllOrganizations** -> List findAllOrganizations(page, size) + +# **deleteOrganization** +> deleteOrganization(organization\_id) -List all Organizations +delete an organization ### Parameters |Name | Type | Description | Notes | |------------- | ------------- | ------------- | -------------| -| **page** | **Integer**| page number to query (first page is at index 0) | [optional] [default to null] | -| **size** | **Integer**| amount of result by page | [optional] [default to null] | +| **organization\_id** | **String**| the Organization identifier | [default to null] | ### Return type -[**List**](../Models/Organization.md) +null (empty response body) ### Authorization @@ -70,23 +94,24 @@ List all Organizations ### HTTP request headers - **Content-Type**: Not defined -- **Accept**: application/json +- **Accept**: Not defined - -# **findOrganizationById** -> Organization findOrganizationById(organization\_id) + +# **deleteOrganizationAccessControl** +> deleteOrganizationAccessControl(organization\_id, identity\_id) -Get the details of an Organization +Remove the specified access from the given Organization ### Parameters |Name | Type | Description | Notes | |------------- | ------------- | ------------- | -------------| | **organization\_id** | **String**| the Organization identifier | [default to null] | +| **identity\_id** | **String**| the User identifier | [default to null] | ### Return type -[**Organization**](../Models/Organization.md) +null (empty response body) ### Authorization @@ -95,20 +120,23 @@ Get the details of an Organization ### HTTP request headers - **Content-Type**: Not defined -- **Accept**: application/json +- **Accept**: Not defined - -# **getAllPermissions** -> List getAllPermissions() + +# **getOrganization** +> Organization getOrganization(organization\_id) -Get all permissions per components +Get the details of an Organization ### Parameters -This endpoint does not need any parameter. + +|Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **organization\_id** | **String**| the Organization identifier | [default to null] | ### Return type -[**List**](../Models/ComponentRolePermissions.md) +[**Organization**](../Models/Organization.md) ### Authorization @@ -196,9 +224,9 @@ Get the Organization security information - **Content-Type**: Not defined - **Accept**: application/json - -# **getOrganizationSecurityUsers** -> List getOrganizationSecurityUsers(organization\_id) + +# **listOrganizationSecurityUsers** +> List listOrganizationSecurityUsers(organization\_id) Get the Organization security users list @@ -221,21 +249,22 @@ Get the Organization security users list - **Content-Type**: Not defined - **Accept**: application/json - -# **registerOrganization** -> Organization registerOrganization(Organization) + +# **listOrganizations** +> List listOrganizations(page, size) -Register a new organization +List all Organizations ### Parameters |Name | Type | Description | Notes | |------------- | ------------- | ------------- | -------------| -| **Organization** | [**Organization**](../Models/Organization.md)| the Organization to register | | +| **page** | **Integer**| page number to query (first page is at index 0) | [optional] [default to null] | +| **size** | **Integer**| amount of result by page | [optional] [default to null] | ### Return type -[**Organization**](../Models/Organization.md) +[**List**](../Models/Organization.md) ### Authorization @@ -243,25 +272,21 @@ Register a new organization ### HTTP request headers -- **Content-Type**: application/json, application/yaml +- **Content-Type**: Not defined - **Accept**: application/json - -# **removeOrganizationAccessControl** -> removeOrganizationAccessControl(organization\_id, identity\_id) + +# **listPermissions** +> List listPermissions() -Remove the specified access from the given Organization +Get all permissions per components ### Parameters - -|Name | Type | Description | Notes | -|------------- | ------------- | ------------- | -------------| -| **organization\_id** | **String**| the Organization identifier | [default to null] | -| **identity\_id** | **String**| the User identifier | [default to null] | +This endpoint does not need any parameter. ### Return type -null (empty response body) +[**List**](../Models/ComponentRolePermissions.md) ### Authorization @@ -270,24 +295,24 @@ null (empty response body) ### HTTP request headers - **Content-Type**: Not defined -- **Accept**: Not defined +- **Accept**: application/json - -# **setOrganizationDefaultSecurity** -> OrganizationSecurity setOrganizationDefaultSecurity(organization\_id, OrganizationRole) + +# **updateOrganization** +> Organization updateOrganization(organization\_id, UpdateOrganizationRequest) -Set the Organization default security +Update an Organization ### Parameters |Name | Type | Description | Notes | |------------- | ------------- | ------------- | -------------| | **organization\_id** | **String**| the Organization identifier | [default to null] | -| **OrganizationRole** | [**OrganizationRole**](../Models/OrganizationRole.md)| This change the organization default security. The default security is the role assigned to any person not on the Access Control List. If the default security is None, then nobody outside of the ACL can access the organization. | | +| **UpdateOrganizationRequest** | [**UpdateOrganizationRequest**](../Models/UpdateOrganizationRequest.md)| the new Organization details. This endpoint can't be used to update security | | ### Return type -[**OrganizationSecurity**](../Models/OrganizationSecurity.md) +[**Organization**](../Models/Organization.md) ### Authorization @@ -298,47 +323,23 @@ Set the Organization default security - **Content-Type**: application/json, application/yaml - **Accept**: application/json - -# **unregisterOrganization** -> unregisterOrganization(organization\_id) - -Unregister an organization - -### Parameters - -|Name | Type | Description | Notes | -|------------- | ------------- | ------------- | -------------| -| **organization\_id** | **String**| the Organization identifier | [default to null] | - -### Return type - -null (empty response body) - -### Authorization - -[oAuth2AuthCode](../README.md#oAuth2AuthCode) - -### HTTP request headers - -- **Content-Type**: Not defined -- **Accept**: Not defined - - -# **updateOrganization** -> Organization updateOrganization(organization\_id, Organization) + +# **updateOrganizationAccessControl** +> OrganizationAccessControl updateOrganizationAccessControl(organization\_id, identity\_id, OrganizationRole) -Update an Organization +Update the specified access to User for an Organization ### Parameters |Name | Type | Description | Notes | |------------- | ------------- | ------------- | -------------| | **organization\_id** | **String**| the Organization identifier | [default to null] | -| **Organization** | [**Organization**](../Models/Organization.md)| the new Organization details. This endpoint can't be used to update security | | +| **identity\_id** | **String**| the User identifier | [default to null] | +| **OrganizationRole** | [**OrganizationRole**](../Models/OrganizationRole.md)| The new Organization Access Control | | ### Return type -[**Organization**](../Models/Organization.md) +[**OrganizationAccessControl**](../Models/OrganizationAccessControl.md) ### Authorization @@ -346,26 +347,25 @@ Update an Organization ### HTTP request headers -- **Content-Type**: application/json, application/yaml +- **Content-Type**: application/json - **Accept**: application/json - -# **updateOrganizationAccessControl** -> OrganizationAccessControl updateOrganizationAccessControl(organization\_id, identity\_id, OrganizationRole) + +# **updateOrganizationDefaultSecurity** +> OrganizationSecurity updateOrganizationDefaultSecurity(organization\_id, OrganizationRole) -Update the specified access to User for an Organization +Update the Organization default security ### Parameters |Name | Type | Description | Notes | |------------- | ------------- | ------------- | -------------| | **organization\_id** | **String**| the Organization identifier | [default to null] | -| **identity\_id** | **String**| the User identifier | [default to null] | -| **OrganizationRole** | [**OrganizationRole**](../Models/OrganizationRole.md)| The new Organization Access Control | | +| **OrganizationRole** | [**OrganizationRole**](../Models/OrganizationRole.md)| This change the organization default security. The default security is the role assigned to any person not on the Access Control List. If the default security is None, then nobody outside of the ACL can access the organization. | | ### Return type -[**OrganizationAccessControl**](../Models/OrganizationAccessControl.md) +[**OrganizationSecurity**](../Models/OrganizationSecurity.md) ### Authorization @@ -373,6 +373,6 @@ Update the specified access to User for an Organization ### HTTP request headers -- **Content-Type**: application/json +- **Content-Type**: application/json, application/yaml - **Accept**: application/json diff --git a/doc/Models/ComponentRolePermissions.md b/doc/Models/ComponentRolePermissions.md index b16b473b6..ebe3a86cf 100644 --- a/doc/Models/ComponentRolePermissions.md +++ b/doc/Models/ComponentRolePermissions.md @@ -3,8 +3,8 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **component** | **String** | | [optional] [default to null] | -| **roles** | [**Map**](array.md) | | [optional] [default to null] | +| **component** | **String** | | [default to null] | +| **roles** | [**Map**](array.md) | | [default to null] | [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/doc/Models/Organization.md b/doc/Models/Organization.md index e855f9d94..e2d8028a0 100644 --- a/doc/Models/Organization.md +++ b/doc/Models/Organization.md @@ -3,10 +3,10 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -| **id** | **String** | the Organization unique identifier | [optional] [default to null] | -| **name** | **String** | the Organization name | [optional] [default to null] | -| **ownerId** | **String** | the Owner User Id | [optional] [default to null] | -| **security** | [**OrganizationSecurity**](OrganizationSecurity.md) | | [optional] [default to null] | +| **id** | **String** | the Organization unique identifier | [default to null] | +| **name** | **String** | the Organization name | [default to null] | +| **ownerId** | **String** | the Owner User Id | [default to null] | +| **security** | [**OrganizationSecurity**](OrganizationSecurity.md) | | [default to null] | [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/doc/Models/OrganizationAccessControlRequest.md b/doc/Models/OrganizationAccessControlRequest.md new file mode 100644 index 000000000..b4f5e174e --- /dev/null +++ b/doc/Models/OrganizationAccessControlRequest.md @@ -0,0 +1,10 @@ +# OrganizationAccessControlRequest +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | **String** | the identity id | [default to null] | +| **role** | **String** | a role | [default to null] | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/doc/Models/OrganizationAccessControlResponse.md b/doc/Models/OrganizationAccessControlResponse.md new file mode 100644 index 000000000..ffe72224c --- /dev/null +++ b/doc/Models/OrganizationAccessControlResponse.md @@ -0,0 +1,10 @@ +# OrganizationAccessControlResponse +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **id** | **String** | the identity id | [default to null] | +| **role** | **String** | a role | [default to null] | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/doc/Models/OrganizationCreationRequest.md b/doc/Models/OrganizationCreationRequest.md new file mode 100644 index 000000000..0254159a4 --- /dev/null +++ b/doc/Models/OrganizationCreationRequest.md @@ -0,0 +1,10 @@ +# OrganizationCreationRequest +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **name** | **String** | the Organization name | [default to null] | +| **security** | [**OrganizationSecurity**](OrganizationSecurity.md) | | [optional] [default to null] | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/doc/Models/OrganizationRoleRequest.md b/doc/Models/OrganizationRoleRequest.md new file mode 100644 index 000000000..ae20e2a1a --- /dev/null +++ b/doc/Models/OrganizationRoleRequest.md @@ -0,0 +1,9 @@ +# OrganizationRoleRequest +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **role** | **String** | the Organization Role | [default to null] | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/doc/Models/OrganizationSecurityRequest.md b/doc/Models/OrganizationSecurityRequest.md new file mode 100644 index 000000000..2e174afc6 --- /dev/null +++ b/doc/Models/OrganizationSecurityRequest.md @@ -0,0 +1,10 @@ +# OrganizationSecurityRequest +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **default** | **String** | the role by default | [optional] [default to null] | +| **accessControlList** | [**List**](OrganizationAccessControlRequest.md) | the list which can access this Organization with detailed access control information | [optional] [default to null] | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/doc/Models/OrganizationSecurityResponse.md b/doc/Models/OrganizationSecurityResponse.md new file mode 100644 index 000000000..e1db7beb2 --- /dev/null +++ b/doc/Models/OrganizationSecurityResponse.md @@ -0,0 +1,10 @@ +# OrganizationSecurityResponse +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **default** | **String** | the role by default | [default to null] | +| **accessControlList** | [**List**](OrganizationAccessControlResponse.md) | the list which can access this Organization with detailed access control information | [default to null] | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/doc/Models/UpdateOrganizationRequest.md b/doc/Models/UpdateOrganizationRequest.md new file mode 100644 index 000000000..1bb997d12 --- /dev/null +++ b/doc/Models/UpdateOrganizationRequest.md @@ -0,0 +1,9 @@ +# UpdateOrganizationRequest +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **name** | **String** | the Organization name | [default to null] | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/doc/README.md b/doc/README.md index fa925ac3a..c7fe69e0d 100644 --- a/doc/README.md +++ b/doc/README.md @@ -42,20 +42,20 @@ All URIs are relative to *http://localhost* *DatasetApi* | [**updateDatasetAccessControl**](Apis/DatasetApi.md#updatedatasetaccesscontrol) | **PATCH** /organizations/{organization_id}/datasets/{dataset_id}/security/access/{identity_id} | Update the specified access to User for a Dataset | *DatasetApi* | [**updateTwingraphEntities**](Apis/DatasetApi.md#updatetwingraphentities) | **PATCH** /organizations/{organization_id}/datasets/{dataset_id}/twingraph/{type} | Update entities in a graph instance | *DatasetApi* | [**uploadTwingraph**](Apis/DatasetApi.md#uploadtwingraph) | **POST** /organizations/{organization_id}/datasets/{dataset_id} | Upload data from zip file to dataset's twingraph | -| *OrganizationApi* | [**addOrganizationAccessControl**](Apis/OrganizationApi.md#addorganizationaccesscontrol) | **POST** /organizations/{organization_id}/security/access | Add a control access to the Organization | -*OrganizationApi* | [**findAllOrganizations**](Apis/OrganizationApi.md#findallorganizations) | **GET** /organizations | List all Organizations | -*OrganizationApi* | [**findOrganizationById**](Apis/OrganizationApi.md#findorganizationbyid) | **GET** /organizations/{organization_id} | Get the details of an Organization | -*OrganizationApi* | [**getAllPermissions**](Apis/OrganizationApi.md#getallpermissions) | **GET** /organizations/permissions | Get all permissions per components | +| *OrganizationApi* | [**createOrganization**](Apis/OrganizationApi.md#createorganization) | **POST** /organizations | create a new organization | +*OrganizationApi* | [**createOrganizationAccessControl**](Apis/OrganizationApi.md#createorganizationaccesscontrol) | **POST** /organizations/{organization_id}/security/access | Add a control access to the Organization | +*OrganizationApi* | [**deleteOrganization**](Apis/OrganizationApi.md#deleteorganization) | **DELETE** /organizations/{organization_id} | delete an organization | +*OrganizationApi* | [**deleteOrganizationAccessControl**](Apis/OrganizationApi.md#deleteorganizationaccesscontrol) | **DELETE** /organizations/{organization_id}/security/access/{identity_id} | Remove the specified access from the given Organization | +*OrganizationApi* | [**getOrganization**](Apis/OrganizationApi.md#getorganization) | **GET** /organizations/{organization_id} | Get the details of an Organization | *OrganizationApi* | [**getOrganizationAccessControl**](Apis/OrganizationApi.md#getorganizationaccesscontrol) | **GET** /organizations/{organization_id}/security/access/{identity_id} | Get a control access for the Organization | *OrganizationApi* | [**getOrganizationPermissions**](Apis/OrganizationApi.md#getorganizationpermissions) | **GET** /organizations/{organization_id}/permissions/{role} | Get the Organization permissions by given role | *OrganizationApi* | [**getOrganizationSecurity**](Apis/OrganizationApi.md#getorganizationsecurity) | **GET** /organizations/{organization_id}/security | Get the Organization security information | -*OrganizationApi* | [**getOrganizationSecurityUsers**](Apis/OrganizationApi.md#getorganizationsecurityusers) | **GET** /organizations/{organization_id}/security/users | Get the Organization security users list | -*OrganizationApi* | [**registerOrganization**](Apis/OrganizationApi.md#registerorganization) | **POST** /organizations | Register a new organization | -*OrganizationApi* | [**removeOrganizationAccessControl**](Apis/OrganizationApi.md#removeorganizationaccesscontrol) | **DELETE** /organizations/{organization_id}/security/access/{identity_id} | Remove the specified access from the given Organization | -*OrganizationApi* | [**setOrganizationDefaultSecurity**](Apis/OrganizationApi.md#setorganizationdefaultsecurity) | **POST** /organizations/{organization_id}/security/default | Set the Organization default security | -*OrganizationApi* | [**unregisterOrganization**](Apis/OrganizationApi.md#unregisterorganization) | **DELETE** /organizations/{organization_id} | Unregister an organization | +*OrganizationApi* | [**listOrganizationSecurityUsers**](Apis/OrganizationApi.md#listorganizationsecurityusers) | **GET** /organizations/{organization_id}/security/users | Get the Organization security users list | +*OrganizationApi* | [**listOrganizations**](Apis/OrganizationApi.md#listorganizations) | **GET** /organizations | List all Organizations | +*OrganizationApi* | [**listPermissions**](Apis/OrganizationApi.md#listpermissions) | **GET** /organizations/permissions | Get all permissions per components | *OrganizationApi* | [**updateOrganization**](Apis/OrganizationApi.md#updateorganization) | **PATCH** /organizations/{organization_id} | Update an Organization | *OrganizationApi* | [**updateOrganizationAccessControl**](Apis/OrganizationApi.md#updateorganizationaccesscontrol) | **PATCH** /organizations/{organization_id}/security/access/{identity_id} | Update the specified access to User for an Organization | +*OrganizationApi* | [**updateOrganizationDefaultSecurity**](Apis/OrganizationApi.md#updateorganizationdefaultsecurity) | **POST** /organizations/{organization_id}/security/default | Update the Organization default security | | *RunApi* | [**deleteRun**](Apis/RunApi.md#deleterun) | **DELETE** /organizations/{organization_id}/workspaces/{workspace_id}/runners/{runner_id}/runs/{run_id} | Delete a run | *RunApi* | [**getRun**](Apis/RunApi.md#getrun) | **GET** /organizations/{organization_id}/workspaces/{workspace_id}/runners/{runner_id}/runs/{run_id} | Get the details of a run | *RunApi* | [**getRunLogs**](Apis/RunApi.md#getrunlogs) | **GET** /organizations/{organization_id}/workspaces/{workspace_id}/runners/{runner_id}/runs/{run_id}/logs | get the logs for the Run | @@ -149,6 +149,7 @@ All URIs are relative to *http://localhost* - [IngestionStatusEnum](./Models/IngestionStatusEnum.md) - [Organization](./Models/Organization.md) - [OrganizationAccessControl](./Models/OrganizationAccessControl.md) + - [OrganizationCreationRequest](./Models/OrganizationCreationRequest.md) - [OrganizationRole](./Models/OrganizationRole.md) - [OrganizationSecurity](./Models/OrganizationSecurity.md) - [QueryResult](./Models/QueryResult.md) @@ -185,6 +186,7 @@ All URIs are relative to *http://localhost* - [SubDatasetGraphQuery](./Models/SubDatasetGraphQuery.md) - [TwinGraphBatchResult](./Models/TwinGraphBatchResult.md) - [TwincacheStatusEnum](./Models/TwincacheStatusEnum.md) + - [UpdateOrganizationRequest](./Models/UpdateOrganizationRequest.md) - [Workspace](./Models/Workspace.md) - [WorkspaceAccessControl](./Models/WorkspaceAccessControl.md) - [WorkspaceFile](./Models/WorkspaceFile.md) diff --git a/openapi/plantuml/schemas.plantuml b/openapi/plantuml/schemas.plantuml index f3584f58a..42a3e6b17 100644 --- a/openapi/plantuml/schemas.plantuml +++ b/openapi/plantuml/schemas.plantuml @@ -3,8 +3,8 @@ title Cosmo Tech Platform API Schemas Diagram entity ComponentRolePermissions { - component: String - roles: Map + * component: String + * roles: Map } entity Connector { @@ -161,10 +161,10 @@ entity IoTypesEnum { } entity Organization { - id: String - name: String - ownerId: String - security: OrganizationSecurity + * id: String + * name: String + * ownerId: String + * security: OrganizationSecurity } entity OrganizationAccessControl { @@ -172,6 +172,11 @@ entity OrganizationAccessControl { * role: String } +entity OrganizationCreationRequest { + * name: String + security: OrganizationSecurity +} + entity OrganizationRole { * role: String } @@ -475,6 +480,10 @@ entity TwinGraphBatchResult { entity TwincacheStatusEnum { } +entity UpdateOrganizationRequest { + * name: String +} + entity Workspace { id: String organizationId: String @@ -537,6 +546,7 @@ SolutionSecurity -- "0..*" SolutionAccessControl : accessControlList RunLogs -- "0..*" RunLogsEntry : logs WorkspaceSecurity -- "0..*" WorkspaceAccessControl : accessControlList ConnectorParameterGroup -- "0..*" ConnectorParameter : parameters +OrganizationCreationRequest -- OrganizationSecurity : security RunContainer -- ContainerResourceSizing : runSizing Connector -- "0..*" ConnectorParameterGroup : parameterGroups Runner -- RunnerResourceSizing : runSizing diff --git a/organization/src/integrationTest/kotlin/com/cosmotech/organization/service/OrganizationServiceIntegrationTest.kt b/organization/src/integrationTest/kotlin/com/cosmotech/organization/service/OrganizationServiceIntegrationTest.kt index 5f2c73fb1..68ebe1864 100644 --- a/organization/src/integrationTest/kotlin/com/cosmotech/organization/service/OrganizationServiceIntegrationTest.kt +++ b/organization/src/integrationTest/kotlin/com/cosmotech/organization/service/OrganizationServiceIntegrationTest.kt @@ -31,8 +31,10 @@ import com.cosmotech.organization.OrganizationApiServiceInterface import com.cosmotech.organization.domain.ComponentRolePermissions import com.cosmotech.organization.domain.Organization import com.cosmotech.organization.domain.OrganizationAccessControl +import com.cosmotech.organization.domain.OrganizationCreationRequest import com.cosmotech.organization.domain.OrganizationRole import com.cosmotech.organization.domain.OrganizationSecurity +import com.cosmotech.organization.domain.UpdateOrganizationRequest import com.redis.om.spring.RediSearchIndexer import io.mockk.every import io.mockk.junit5.MockKExtension @@ -104,20 +106,20 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { } @Test - fun `findAllOrganizations with correct values`() { + fun `listOrganizations with correct values`() { val numberOfOrganizationToCreate = 20 val defaultPageSize = csmPlatformProperties.twincache.organization.defaultPageSize batchOrganizationCreation(numberOfOrganizationToCreate) - testFindAllOrganizations(null, null, numberOfOrganizationToCreate) - testFindAllOrganizations(0, null, defaultPageSize) - testFindAllOrganizations(0, 10, 10) - testFindAllOrganizations(1, 200, 0) - testFindAllOrganizations(1, 15, 5) + testlistOrganizations(null, null, numberOfOrganizationToCreate) + testlistOrganizations(0, null, defaultPageSize) + testlistOrganizations(0, 10, 10) + testlistOrganizations(1, 200, 0) + testlistOrganizations(1, 15, 5) } @Test - fun `findAllOrganizations with correct values and RBAC for current user`() { + fun `listOrganizations with correct values and RBAC for current user`() { runAsDifferentOrganizationUser() val numberOfOrganizationCreated = createOrganizationsWithAllCombinationOfRole(TEST_USER_ID) @@ -130,7 +132,7 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { } @Test - fun `findAllOrganizations with correct values and no RBAC for current user`() { + fun `listOrganizations with correct values and no RBAC for current user`() { runAsDifferentOrganizationUser() val numberOfOrganizationCreated = createOrganizationsWithAllCombinationOfRole(OTHER_TEST_USER_ID) @@ -146,82 +148,75 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { } @Test - fun `findAllOrganizations with wrong values`() { - testFindAllOrganizationsWithWrongValues() + fun `listOrganizations with wrong values`() { + testlistOrganizationsWithWrongValues() } @Test - fun `findOrganizationById as resource admin`() { + fun `getOrganization as resource admin`() { val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization("o-connector-test-1")) - assertNotNull(organizationApiService.findOrganizationById(organizationRegistered.id!!)) + organizationApiService.createOrganization(createTestOrganization("o-connector-test-1")) + assertNotNull(organizationApiService.getOrganization(organizationRegistered.id)) } @Test - fun `findOrganizationById as not resource admin`() { - testFindOrganizationByIdAsNotOwner(false, null, null, null, true) { runAsOrganizationUser() } + fun `getOrganization as not resource admin`() { + testgetOrganizationAsNotOwner(false, null, null, null, true) { runAsOrganizationUser() } } @Test - fun `findOrganizationById as not resource admin but with READ role`() { - testFindOrganizationByIdAsNotOwner(true, TEST_USER_ID, ROLE_NONE, ROLE_USER, false) { + fun `getOrganization as not resource admin but with READ role`() { + testgetOrganizationAsNotOwner(true, TEST_USER_ID, ROLE_NONE, ROLE_USER, false) { runAsOrganizationUser() } } @Test - fun `findOrganizationById as not resource admin but with WRITE role`() { - testFindOrganizationByIdAsNotOwner(true, TEST_USER_ID, ROLE_NONE, ROLE_EDITOR, false) { + fun `getOrganization as not resource admin but with WRITE role`() { + testgetOrganizationAsNotOwner(true, TEST_USER_ID, ROLE_NONE, ROLE_EDITOR, false) { runAsOrganizationUser() } } @Test - fun `findOrganizationById as not resource admin but with NONE role`() { - testFindOrganizationByIdAsNotOwner(true, TEST_USER_ID, ROLE_NONE, ROLE_NONE, true) { + fun `getOrganization as not resource admin but with NONE role`() { + testgetOrganizationAsNotOwner(true, TEST_USER_ID, ROLE_NONE, ROLE_NONE, true) { runAsOrganizationUser() } } @Test - fun `registerOrganization with minimal values`() { + fun `createOrganization with minimal values`() { assertDoesNotThrow { val name = "o-connector-test-1" val organizationToRegister = createTestOrganization(name) val organizationRegistered = - organizationApiService.registerOrganization(organizationToRegister) + organizationApiService.createOrganization(organizationToRegister) assertEquals( OrganizationSecurity( default = ROLE_NONE, mutableListOf(OrganizationAccessControl(id = TEST_USER_ID, role = ROLE_ADMIN))), organizationRegistered.security) assertEquals(name, organizationRegistered.name) - assertTrue(organizationRegistered.id!!.startsWith("o-")) + assertTrue(organizationRegistered.id.startsWith("o-")) } } @Test - fun `registerOrganization without required organization name`() { + fun `createOrganization without required organization name`() { assertThrows { - organizationApiService.registerOrganization(createTestOrganization("")) + organizationApiService.createOrganization(createTestOrganization("")) } } @Test - fun `registerOrganization with null required organization name`() { - assertThrows { - organizationApiService.registerOrganization(Organization(name = null)) - } - } - - @Test - fun `registerOrganization with security values`() { + fun `createOrganization with security values`() { assertDoesNotThrow { val name = "o-connector-test-1" val organizationToRegister = createTestOrganizationWithSimpleSecurity(name, OTHER_TEST_USER_ID, ROLE_USER, ROLE_NONE) val organizationRegistered = - organizationApiService.registerOrganization(organizationToRegister) + organizationApiService.createOrganization(organizationToRegister) assertEquals( OrganizationSecurity( default = ROLE_USER, @@ -230,52 +225,52 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { OrganizationAccessControl(id = TEST_USER_ID, role = ROLE_ADMIN))), organizationRegistered.security) assertEquals(name, organizationRegistered.name) - assertTrue(organizationRegistered.id!!.startsWith("o-")) + assertTrue(organizationRegistered.id.startsWith("o-")) } } @Test - fun `unregisterOrganization as resource admin`() { + fun `deleteOrganization as resource admin`() { assertDoesNotThrow { val name = "o-connector-test-1" val organizationToRegister = createTestOrganization(name) val organizationRegistered = - organizationApiService.registerOrganization(organizationToRegister) - organizationApiService.unregisterOrganization(organizationRegistered.id!!) + organizationApiService.createOrganization(organizationToRegister) + organizationApiService.deleteOrganization(organizationRegistered.id) } } @Test - fun `unregisterOrganization unexisting organization `() { + fun `deleteOrganization unexisting organization `() { assertThrows { - organizationApiService.unregisterOrganization("o-connector-test-1") + organizationApiService.deleteOrganization("o-connector-test-1") } } @Test - fun `unregisterOrganization no DELETE permission `() { + fun `deleteOrganization no DELETE permission `() { assertThrows { val name = "o-connector-test-1" val organizationToRegister = createTestOrganizationWithSimpleSecurity( name, OTHER_TEST_USER_ID, ROLE_USER, ROLE_ADMIN) val organizationRegistered = - organizationApiService.registerOrganization(organizationToRegister) - organizationApiService.unregisterOrganization(organizationRegistered.id!!) + organizationApiService.createOrganization(organizationToRegister) + organizationApiService.deleteOrganization(organizationRegistered.id) } } @Test - fun `unregisterOrganization not as resource admin but DELETE permission `() { + fun `deleteOrganization not as resource admin but DELETE permission `() { assertDoesNotThrow { val name = "o-connector-test-1" runAsDifferentOrganizationUser() val organizationToRegister = createTestOrganizationWithSimpleSecurity(name, TEST_USER_ID, ROLE_NONE, ROLE_ADMIN) val organizationRegistered = - organizationApiService.registerOrganization(organizationToRegister) + organizationApiService.createOrganization(organizationToRegister) runAsOrganizationUser() - organizationApiService.unregisterOrganization(organizationRegistered.id!!) + organizationApiService.deleteOrganization(organizationRegistered.id) } } @@ -284,40 +279,15 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { assertDoesNotThrow { val name = "o-connector-test-1" val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) + organizationApiService.createOrganization(createTestOrganization(name)) organizationRegistered.name = "my-new-name" organizationApiService.updateOrganization( - organizationRegistered.id!!, organizationRegistered) + organizationRegistered.id, UpdateOrganizationRequest(organizationRegistered.name)) assertEquals( organizationRegistered, - organizationApiService.findOrganizationById(organizationRegistered.id!!)) - } - } - - @Test - fun `updateOrganization as resource admin, organization security`() { - assertDoesNotThrow { - val name = "o-connector-test-1" - val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) - - organizationRegistered.security = - OrganizationSecurity( - default = ROLE_NONE, - mutableListOf(OrganizationAccessControl(id = OTHER_TEST_USER_ID, role = ROLE_USER))) - - organizationApiService.updateOrganization( - organizationRegistered.id!!, organizationRegistered) - - // Organization Security cannot be updated via updateOrganization endpoint - // setOrganizationDefaultSecurity or - // addOrganizationAccessControl/updateOrganizationAccessControl/removeOrganizationAccessControl - // Should be used instead - assertNotEquals( - organizationRegistered, - organizationApiService.findOrganizationById(organizationRegistered.id!!)) + organizationApiService.getOrganization(organizationRegistered.id)) } } @@ -327,7 +297,7 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { val name = "o-connector-test-1" runAsDifferentOrganizationUser() val organizationRegistered = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( createTestOrganizationWithSimpleSecurity( name, TEST_USER_ID, ROLE_NONE, ROLE_EDITOR)) @@ -335,11 +305,11 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { organizationRegistered.name = "my-new-name" organizationApiService.updateOrganization( - organizationRegistered.id!!, organizationRegistered) + organizationRegistered.id, UpdateOrganizationRequest(organizationRegistered.name)) assertEquals( organizationRegistered, - organizationApiService.findOrganizationById(organizationRegistered.id!!)) + organizationApiService.getOrganization(organizationRegistered.id)) } } @@ -349,15 +319,15 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { val name = "o-connector-test-1" runAsDifferentOrganizationUser() val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) + organizationApiService.createOrganization(createTestOrganization(name)) runAsOrganizationUser() organizationApiService.updateOrganization( - organizationRegistered.id!!, organizationRegistered) + organizationRegistered.id, UpdateOrganizationRequest("name")) } } @Test - fun getAllPermissions() { + fun listPermissions() { val mapAllPermissions = listOf( ComponentRolePermissions( @@ -438,7 +408,7 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { PERMISSION_WRITE_SECURITY, PERMISSION_DELETE), ))) - assertEquals(mapAllPermissions, organizationApiService.getAllPermissions()) + assertEquals(mapAllPermissions, organizationApiService.listPermissions()) } @Test @@ -446,20 +416,19 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { assertDoesNotThrow { val name = "o-connector-test-1" val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) + organizationApiService.createOrganization(createTestOrganization(name)) var organizationUserPermissions = organizationApiService.getOrganizationPermissions( - organizationRegistered.id!!, ROLE_VIEWER) + organizationRegistered.id, ROLE_VIEWER) assertEquals(mutableListOf(PERMISSION_READ), organizationUserPermissions) organizationUserPermissions = - organizationApiService.getOrganizationPermissions( - organizationRegistered.id!!, ROLE_USER) + organizationApiService.getOrganizationPermissions(organizationRegistered.id, ROLE_USER) assertEquals( mutableListOf(PERMISSION_READ, PERMISSION_READ_SECURITY, PERMISSION_CREATE_CHILDREN), organizationUserPermissions) organizationUserPermissions = organizationApiService.getOrganizationPermissions( - organizationRegistered.id!!, ROLE_EDITOR) + organizationRegistered.id, ROLE_EDITOR) assertEquals( mutableListOf( PERMISSION_READ, @@ -468,8 +437,7 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { PERMISSION_WRITE), organizationUserPermissions) organizationUserPermissions = - organizationApiService.getOrganizationPermissions( - organizationRegistered.id!!, ROLE_ADMIN) + organizationApiService.getOrganizationPermissions(organizationRegistered.id, ROLE_ADMIN) assertEquals( mutableListOf( PERMISSION_READ, @@ -481,7 +449,7 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { organizationUserPermissions) organizationUserPermissions = organizationApiService.getOrganizationPermissions( - organizationRegistered.id!!, UNKNOWN_IDENTIFIER) + organizationRegistered.id, UNKNOWN_IDENTIFIER) assertEquals(emptyList(), organizationUserPermissions) } } @@ -492,22 +460,21 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { val name = "o-connector-test-1" runAsDifferentOrganizationUser() val organizationRegistered = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( createTestOrganizationWithSimpleSecurity(name, TEST_USER_ID, ROLE_NONE, ROLE_USER)) runAsOrganizationUser() var organizationUserPermissions = organizationApiService.getOrganizationPermissions( - organizationRegistered.id!!, ROLE_VIEWER) + organizationRegistered.id, ROLE_VIEWER) assertEquals(mutableListOf(PERMISSION_READ), organizationUserPermissions) organizationUserPermissions = - organizationApiService.getOrganizationPermissions( - organizationRegistered.id!!, ROLE_USER) + organizationApiService.getOrganizationPermissions(organizationRegistered.id, ROLE_USER) assertEquals( mutableListOf(PERMISSION_READ, PERMISSION_READ_SECURITY, PERMISSION_CREATE_CHILDREN), organizationUserPermissions) organizationUserPermissions = organizationApiService.getOrganizationPermissions( - organizationRegistered.id!!, ROLE_EDITOR) + organizationRegistered.id, ROLE_EDITOR) assertEquals( mutableListOf( PERMISSION_READ, @@ -516,8 +483,7 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { PERMISSION_WRITE), organizationUserPermissions) organizationUserPermissions = - organizationApiService.getOrganizationPermissions( - organizationRegistered.id!!, ROLE_ADMIN) + organizationApiService.getOrganizationPermissions(organizationRegistered.id, ROLE_ADMIN) assertEquals( mutableListOf( PERMISSION_READ, @@ -529,7 +495,7 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { organizationUserPermissions) organizationUserPermissions = organizationApiService.getOrganizationPermissions( - organizationRegistered.id!!, UNKNOWN_IDENTIFIER) + organizationRegistered.id, UNKNOWN_IDENTIFIER) assertEquals(emptyList(), organizationUserPermissions) } } @@ -540,9 +506,9 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { val name = "o-connector-test-1" runAsDifferentOrganizationUser() val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) + organizationApiService.createOrganization(createTestOrganization(name)) runAsOrganizationUser() - organizationApiService.getOrganizationPermissions(organizationRegistered.id!!, ROLE_VIEWER) + organizationApiService.getOrganizationPermissions(organizationRegistered.id, ROLE_VIEWER) } } @@ -551,8 +517,8 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { assertDoesNotThrow { val name = "o-connector-test-1" val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) - assertNotNull(organizationApiService.getOrganizationSecurity(organizationRegistered.id!!)) + organizationApiService.createOrganization(createTestOrganization(name)) + assertNotNull(organizationApiService.getOrganizationSecurity(organizationRegistered.id)) } } @@ -569,10 +535,10 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { val name = "o-connector-test-1" runAsDifferentOrganizationUser() val organizationRegistered = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( createTestOrganizationWithSimpleSecurity(name, TEST_USER_ID, ROLE_NONE, ROLE_USER)) runAsOrganizationUser() - assertNotNull(organizationApiService.getOrganizationSecurity(organizationRegistered.id!!)) + assertNotNull(organizationApiService.getOrganizationSecurity(organizationRegistered.id)) } } @@ -582,70 +548,70 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { val name = "o-connector-test-1" runAsDifferentOrganizationUser() val organizationRegistered = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( createTestOrganizationWithSimpleSecurity(name, TEST_USER_ID, ROLE_NONE, ROLE_NONE)) runAsOrganizationUser() - organizationApiService.getOrganizationSecurity(organizationRegistered.id!!) + organizationApiService.getOrganizationSecurity(organizationRegistered.id) } } @Test - fun `setOrganizationDefaultSecurity as resource admin and existing role`() { + fun `updateOrganizationDefaultSecurity as resource admin and existing role`() { assertDoesNotThrow { val name = "o-connector-test-1" val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) - val defaultRoleCreated = organizationRegistered.security?.default + organizationApiService.createOrganization(createTestOrganization(name)) + val defaultRoleCreated = organizationRegistered.security.default assertNotNull( - organizationApiService.setOrganizationDefaultSecurity( - organizationRegistered.id!!, OrganizationRole(ROLE_ADMIN))) + organizationApiService.updateOrganizationDefaultSecurity( + organizationRegistered.id, OrganizationRole(ROLE_ADMIN))) val defaultRoleUpdated = - organizationApiService.getOrganizationSecurity(organizationRegistered.id!!).default + organizationApiService.getOrganizationSecurity(organizationRegistered.id).default assertNotEquals(defaultRoleCreated, defaultRoleUpdated) } } @Test - fun `setOrganizationDefaultSecurity as resource admin and non-existing role`() { + fun `updateOrganizationDefaultSecurity as resource admin and non-existing role`() { assertThrows { val name = "o-connector-test-1" val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) - organizationApiService.setOrganizationDefaultSecurity( - organizationRegistered.id!!, OrganizationRole(UNKNOWN_IDENTIFIER)) + organizationApiService.createOrganization(createTestOrganization(name)) + organizationApiService.updateOrganizationDefaultSecurity( + organizationRegistered.id, OrganizationRole(UNKNOWN_IDENTIFIER)) } } @Test - fun `setOrganizationDefaultSecurity as not resource admin and WRITE_SECURITY_PERMISSION`() { + fun `updateOrganizationDefaultSecurity as not resource admin and WRITE_SECURITY_PERMISSION`() { assertDoesNotThrow { val name = "o-connector-test-1" runAsDifferentOrganizationUser() val organizationRegistered = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( createTestOrganizationWithSimpleSecurity(name, TEST_USER_ID, ROLE_NONE, ROLE_ADMIN)) - val defaultRoleCreated = organizationRegistered.security?.default + val defaultRoleCreated = organizationRegistered.security.default runAsOrganizationUser() assertNotNull( - organizationApiService.setOrganizationDefaultSecurity( - organizationRegistered.id!!, OrganizationRole(ROLE_ADMIN))) + organizationApiService.updateOrganizationDefaultSecurity( + organizationRegistered.id, OrganizationRole(ROLE_ADMIN))) val defaultRoleUpdated = - organizationApiService.getOrganizationSecurity(organizationRegistered.id!!).default + organizationApiService.getOrganizationSecurity(organizationRegistered.id).default assertNotEquals(defaultRoleCreated, defaultRoleUpdated) } } @Test - fun `setOrganizationDefaultSecurity as not resource admin and no WRITE_SECURITY_PERMISSION`() { + fun `updateOrganizationDefaultSecurity as not resource admin and no WRITE_SECURITY_PERMISSION`() { assertThrows { val name = "o-connector-test-1" runAsDifferentOrganizationUser() val organizationRegistered = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( createTestOrganizationWithSimpleSecurity(name, TEST_USER_ID, ROLE_NONE, ROLE_USER)) runAsOrganizationUser() - organizationApiService.setOrganizationDefaultSecurity( - organizationRegistered.id!!, OrganizationRole(ROLE_ADMIN)) + organizationApiService.updateOrganizationDefaultSecurity( + organizationRegistered.id, OrganizationRole(ROLE_ADMIN)) } } @@ -654,10 +620,10 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { assertDoesNotThrow { val name = "o-connector-test-1" val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) + organizationApiService.createOrganization(createTestOrganization(name)) val organizationRole = organizationApiService.getOrganizationAccessControl( - organizationRegistered.id!!, TEST_USER_ID) + organizationRegistered.id, TEST_USER_ID) assertNotNull(organizationRole) assertEquals(ROLE_ADMIN, organizationRole.role) assertEquals(TEST_USER_ID, organizationRole.id) @@ -669,8 +635,8 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { assertThrows { val name = "o-connector-test-1" val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) - organizationApiService.getOrganizationAccessControl(organizationRegistered.id!!, "UNKOWN") + organizationApiService.createOrganization(createTestOrganization(name)) + organizationApiService.getOrganizationAccessControl(organizationRegistered.id, "UNKOWN") } } @@ -680,12 +646,12 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { val name = "o-connector-test-1" runAsDifferentOrganizationUser() val organizationRegistered = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( createTestOrganizationWithSimpleSecurity(name, TEST_USER_ID, ROLE_NONE, ROLE_USER)) runAsOrganizationUser() val organizationRole = organizationApiService.getOrganizationAccessControl( - organizationRegistered.id!!, TEST_USER_ID) + organizationRegistered.id, TEST_USER_ID) assertNotNull(organizationRole) assertEquals(ROLE_USER, organizationRole.role) assertEquals(TEST_USER_ID, organizationRole.id) @@ -698,11 +664,11 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { val name = "o-connector-test-1" runAsDifferentOrganizationUser() val organizationRegistered = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( createTestOrganizationWithSimpleSecurity(name, TEST_USER_ID, ROLE_NONE, ROLE_USER)) runAsOrganizationUser() organizationApiService.getOrganizationAccessControl( - organizationRegistered.id!!, UNKNOWN_IDENTIFIER) + organizationRegistered.id, UNKNOWN_IDENTIFIER) } } @@ -712,90 +678,92 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { val name = "o-connector-test-1" runAsDifferentOrganizationUser() val organizationRegistered = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( createTestOrganizationWithSimpleSecurity(name, TEST_USER_ID, ROLE_NONE, ROLE_NONE)) runAsOrganizationUser() organizationApiService.getOrganizationAccessControl( - organizationRegistered.id!!, UNKNOWN_IDENTIFIER) + organizationRegistered.id, UNKNOWN_IDENTIFIER) } } @Test - fun `addOrganizationAccessControl as resource admin`() { + fun `createOrganizationAccessControl as resource admin`() { assertDoesNotThrow { val name = "o-connector-test-1" val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) + organizationApiService.createOrganization(createTestOrganization(name)) assertThrows { organizationApiService.getOrganizationAccessControl( - organizationRegistered.id!!, OTHER_TEST_USER_ID) + organizationRegistered.id, OTHER_TEST_USER_ID) } val otherUserACL = OrganizationAccessControl(id = OTHER_TEST_USER_ID, role = ROLE_VIEWER) assertNotNull( - organizationApiService.addOrganizationAccessControl( - organizationRegistered.id!!, otherUserACL)) + organizationApiService.createOrganizationAccessControl( + organizationRegistered.id, otherUserACL)) val otherUserACLRetrieved = organizationApiService.getOrganizationAccessControl( - organizationRegistered.id!!, OTHER_TEST_USER_ID) - assertEquals(otherUserACL, otherUserACLRetrieved) + organizationRegistered.id, OTHER_TEST_USER_ID) + assertEquals( + OrganizationAccessControl(id = OTHER_TEST_USER_ID, ROLE_VIEWER), otherUserACLRetrieved) } } @Test - fun `addOrganizationAccessControl as resource admin (ROLE_NONE)`() { + fun `createOrganizationAccessControl as resource admin (ROLE_NONE)`() { assertThrows { val name = "o-connector-test-1" val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) + organizationApiService.createOrganization(createTestOrganization(name)) val otherUserACL = OrganizationAccessControl(id = OTHER_TEST_USER_ID, role = ROLE_NONE) - organizationApiService.addOrganizationAccessControl( - organizationRegistered.id!!, otherUserACL) + organizationApiService.createOrganizationAccessControl( + organizationRegistered.id, otherUserACL) } } @Test - fun `addOrganizationAccessControl as not resource admin and PERMISSION_WRITE_SECURITY`() { + fun `createOrganizationAccessControl as not resource admin and PERMISSION_WRITE_SECURITY`() { assertDoesNotThrow { val name = "o-connector-test-1" runAsDifferentOrganizationUser() val organizationRegistered = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( createTestOrganizationWithSimpleSecurity(name, TEST_USER_ID, ROLE_NONE, ROLE_ADMIN)) runAsOrganizationUser() assertThrows { organizationApiService.getOrganizationAccessControl( - organizationRegistered.id!!, TEST_ADMIN_USER_ID) + organizationRegistered.id, TEST_ADMIN_USER_ID) } val otherUserACL = OrganizationAccessControl(id = TEST_ADMIN_USER_ID, role = ROLE_VIEWER) assertNotNull( - organizationApiService.addOrganizationAccessControl( - organizationRegistered.id!!, otherUserACL)) + organizationApiService.createOrganizationAccessControl( + organizationRegistered.id, otherUserACL)) val otherUserACLRetrieved = organizationApiService.getOrganizationAccessControl( - organizationRegistered.id!!, TEST_ADMIN_USER_ID) - assertEquals(otherUserACL, otherUserACLRetrieved) + organizationRegistered.id, TEST_ADMIN_USER_ID) + assertEquals( + OrganizationAccessControl(TEST_ADMIN_USER_ID, ROLE_VIEWER), otherUserACLRetrieved) } } @Test - fun `addOrganizationAccessControl as not resource admin and no PERMISSION_WRITE_SECURITY`() { + fun `createOrganizationAccessControl as not resource admin and no PERMISSION_WRITE_SECURITY`() { assertThrows { val name = "o-connector-test-1" runAsDifferentOrganizationUser() val organizationRegistered = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( createTestOrganizationWithSimpleSecurity(name, TEST_USER_ID, ROLE_NONE, ROLE_USER)) runAsOrganizationUser() assertThrows { organizationApiService.getOrganizationAccessControl( - organizationRegistered.id!!, TEST_ADMIN_USER_ID) + organizationRegistered.id, TEST_ADMIN_USER_ID) } val otherUserACL = OrganizationAccessControl(id = TEST_ADMIN_USER_ID, role = ROLE_VIEWER) - organizationApiService.addOrganizationAccessControl( - organizationRegistered.id!!, otherUserACL) + organizationApiService.createOrganizationAccessControl( + organizationRegistered.id, otherUserACL) } } @@ -804,9 +772,9 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { assertThrows { val name = "o-connector-test-1" val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) + organizationApiService.createOrganization(createTestOrganization(name)) organizationApiService.updateOrganizationAccessControl( - organizationRegistered.id!!, TEST_USER_ID, OrganizationRole(role = ROLE_VIEWER)) + organizationRegistered.id, TEST_USER_ID, OrganizationRole(role = ROLE_VIEWER)) } } @@ -815,21 +783,21 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { assertDoesNotThrow { val name = "o-connector-test-1" val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) + organizationApiService.createOrganization(createTestOrganization(name)) - organizationApiService.addOrganizationAccessControl( - organizationRegistered.id!!, + organizationApiService.createOrganizationAccessControl( + organizationRegistered.id, OrganizationAccessControl(id = OTHER_TEST_USER_ID, role = ROLE_VIEWER)) assertNotNull( organizationApiService.updateOrganizationAccessControl( - organizationRegistered.id!!, + organizationRegistered.id, OTHER_TEST_USER_ID, OrganizationRole(role = ROLE_EDITOR))) val userACLRetrieved = organizationApiService.getOrganizationAccessControl( - organizationRegistered.id!!, OTHER_TEST_USER_ID) + organizationRegistered.id, OTHER_TEST_USER_ID) assertNotEquals(ROLE_VIEWER, userACLRetrieved.role) assertEquals(ROLE_EDITOR, userACLRetrieved.role) } @@ -840,10 +808,10 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { assertThrows { val name = "o-connector-test-1" val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) + organizationApiService.createOrganization(createTestOrganization(name)) organizationApiService.updateOrganizationAccessControl( - organizationRegistered.id!!, TEST_USER_ID, OrganizationRole(role = ROLE_NONE)) + organizationRegistered.id, TEST_USER_ID, OrganizationRole(role = ROLE_NONE)) } } @@ -852,10 +820,10 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { assertThrows { val name = "o-connector-test-1" val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) + organizationApiService.createOrganization(createTestOrganization(name)) organizationApiService.updateOrganizationAccessControl( - organizationRegistered.id!!, UNKNOWN_IDENTIFIER, OrganizationRole(role = ROLE_EDITOR)) + organizationRegistered.id, UNKNOWN_IDENTIFIER, OrganizationRole(role = ROLE_EDITOR)) } } @@ -864,10 +832,10 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { assertThrows { val name = "o-connector-test-1" val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) + organizationApiService.createOrganization(createTestOrganization(name)) organizationApiService.updateOrganizationAccessControl( - organizationRegistered.id!!, TEST_USER_ID, OrganizationRole(role = UNKNOWN_IDENTIFIER)) + organizationRegistered.id, TEST_USER_ID, OrganizationRole(role = UNKNOWN_IDENTIFIER)) } } @@ -877,23 +845,23 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { val name = "o-connector-test-1" runAsDifferentOrganizationUser() val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) + organizationApiService.createOrganization(createTestOrganization(name)) - organizationApiService.addOrganizationAccessControl( - organizationRegistered.id!!, + organizationApiService.createOrganizationAccessControl( + organizationRegistered.id, OrganizationAccessControl(id = TEST_USER_ID, role = ROLE_ADMIN)) runAsOrganizationUser() assertNotNull( organizationApiService.updateOrganizationAccessControl( - organizationRegistered.id!!, + organizationRegistered.id, OTHER_TEST_USER_ID, OrganizationRole(role = ROLE_EDITOR))) val userACLRetrieved = organizationApiService.getOrganizationAccessControl( - organizationRegistered.id!!, OTHER_TEST_USER_ID) + organizationRegistered.id, OTHER_TEST_USER_ID) assertEquals(ROLE_EDITOR, userACLRetrieved.role) } } @@ -904,16 +872,16 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { val name = "o-connector-test-1" runAsDifferentOrganizationUser() val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) + organizationApiService.createOrganization(createTestOrganization(name)) - organizationApiService.addOrganizationAccessControl( - organizationRegistered.id!!, + organizationApiService.createOrganizationAccessControl( + organizationRegistered.id, OrganizationAccessControl(id = TEST_USER_ID, role = ROLE_VIEWER)) runAsOrganizationUser() organizationApiService.updateOrganizationAccessControl( - organizationRegistered.id!!, OTHER_TEST_USER_ID, OrganizationRole(role = ROLE_EDITOR)) + organizationRegistered.id, OTHER_TEST_USER_ID, OrganizationRole(role = ROLE_EDITOR)) } } @@ -923,106 +891,109 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { val name = "o-connector-test-1" runAsDifferentOrganizationUser() val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) + organizationApiService.createOrganization(createTestOrganization(name)) - organizationApiService.addOrganizationAccessControl( - organizationRegistered.id!!, + organizationApiService.createOrganizationAccessControl( + organizationRegistered.id, OrganizationAccessControl(id = TEST_USER_ID, role = ROLE_VIEWER)) runAsOrganizationUser() organizationApiService.updateOrganizationAccessControl( - organizationRegistered.id!!, OTHER_TEST_USER_ID, OrganizationRole(role = ROLE_NONE)) + organizationRegistered.id, OTHER_TEST_USER_ID, OrganizationRole(role = ROLE_NONE)) } } @Test - fun `removeOrganizationAccessControl as resource admin`() { + fun `deleteOrganizationAccessControl as resource admin`() { val name = "o-connector-test-1" val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) + organizationApiService.createOrganization(createTestOrganization(name)) val otherUserACL = OrganizationAccessControl(id = OTHER_TEST_USER_ID, role = ROLE_VIEWER) - organizationApiService.addOrganizationAccessControl(organizationRegistered.id!!, otherUserACL) + organizationApiService.createOrganizationAccessControl( + organizationRegistered.id, otherUserACL) - organizationApiService.removeOrganizationAccessControl( - organizationRegistered.id!!, OTHER_TEST_USER_ID) + organizationApiService.deleteOrganizationAccessControl( + organizationRegistered.id, OTHER_TEST_USER_ID) assertThrows { organizationApiService.getOrganizationAccessControl( - organizationRegistered.id!!, OTHER_TEST_USER_ID) + organizationRegistered.id, OTHER_TEST_USER_ID) } } @Test - fun `removeOrganizationAccessControl as not resource admin, WRITE_SECURITY permission`() { + fun `deleteOrganizationAccessControl as not resource admin, WRITE_SECURITY permission`() { val name = "o-connector-test-1" runAsDifferentOrganizationUser() val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) + organizationApiService.createOrganization(createTestOrganization(name)) val otherUserACL = OrganizationAccessControl(id = TEST_USER_ID, role = ROLE_ADMIN) - organizationApiService.addOrganizationAccessControl(organizationRegistered.id!!, otherUserACL) + organizationApiService.createOrganizationAccessControl( + organizationRegistered.id, otherUserACL) runAsOrganizationUser() - organizationApiService.removeOrganizationAccessControl( - organizationRegistered.id!!, OTHER_TEST_USER_ID) + organizationApiService.deleteOrganizationAccessControl( + organizationRegistered.id, OTHER_TEST_USER_ID) assertThrows { organizationApiService.getOrganizationAccessControl( - organizationRegistered.id!!, OTHER_TEST_USER_ID) + organizationRegistered.id, OTHER_TEST_USER_ID) } } @Test - fun `removeOrganizationAccessControl as not resource admin, no WRITE_SECURITY permission`() { + fun `deleteOrganizationAccessControl as not resource admin, no WRITE_SECURITY permission`() { val name = "o-connector-test-1" runAsDifferentOrganizationUser() val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) + organizationApiService.createOrganization(createTestOrganization(name)) val otherUserACL = OrganizationAccessControl(id = TEST_USER_ID, role = ROLE_VIEWER) - organizationApiService.addOrganizationAccessControl(organizationRegistered.id!!, otherUserACL) + organizationApiService.createOrganizationAccessControl( + organizationRegistered.id, otherUserACL) runAsOrganizationUser() assertThrows { - organizationApiService.removeOrganizationAccessControl( - organizationRegistered.id!!, OTHER_TEST_USER_ID) + organizationApiService.deleteOrganizationAccessControl( + organizationRegistered.id, OTHER_TEST_USER_ID) } } @Test - fun `getOrganizationSecurityUsers as resource admin`() { + fun `listOrganizationSecurityUsers as resource admin`() { val name = "o-connector-test-1" val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) + organizationApiService.createOrganization(createTestOrganization(name)) val orgaUsers = - organizationApiService.getOrganizationSecurityUsers(organizationRegistered.id!!) + organizationApiService.listOrganizationSecurityUsers(organizationRegistered.id) assertEquals(listOf(TEST_USER_ID), orgaUsers) } @Test - fun `getOrganizationSecurityUsers as not resource admin, READ_SECURITY permission`() { + fun `listOrganizationSecurityUsers as not resource admin, READ_SECURITY permission`() { val name = "o-connector-test-1" runAsDifferentOrganizationUser() val organizationRegistered = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( createTestOrganizationWithSimpleSecurity(name, TEST_USER_ID, ROLE_NONE, ROLE_USER)) runAsOrganizationUser() val orgaUsers = - organizationApiService.getOrganizationSecurityUsers(organizationRegistered.id!!) + organizationApiService.listOrganizationSecurityUsers(organizationRegistered.id) assertEquals(listOf(TEST_USER_ID, OTHER_TEST_USER_ID), orgaUsers) } @Test - fun `getOrganizationSecurityUsers as not resource admin, no READ_SECURITY permission`() { + fun `listOrganizationSecurityUsers as not resource admin, no READ_SECURITY permission`() { val name = "o-connector-test-1" runAsDifferentOrganizationUser() val organizationRegistered = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( createTestOrganizationWithSimpleSecurity(name, TEST_USER_ID, ROLE_NONE, ROLE_NONE)) runAsOrganizationUser() assertThrows { - organizationApiService.getOrganizationSecurityUsers(organizationRegistered.id!!) + organizationApiService.listOrganizationSecurityUsers(organizationRegistered.id) } } @@ -1030,10 +1001,10 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { fun `testVerifyPermissionsAndReturnOrganization`() { val name = "o-connector-test-1" val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) + organizationApiService.createOrganization(createTestOrganization(name)) assertDoesNotThrow { val organizationVerified = - organizationApiService.getVerifiedOrganization(organizationRegistered.id!!) + organizationApiService.getVerifiedOrganization(organizationRegistered.id) assertEquals(organizationRegistered, organizationVerified) } } @@ -1043,11 +1014,11 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { val name = "o-connector-test-1" runAsDifferentOrganizationUser() val organizationRegistered = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( createTestOrganizationWithSimpleSecurity(name, TEST_USER_ID, ROLE_NONE, ROLE_NONE)) runAsOrganizationUser() assertThrows { - organizationApiService.getVerifiedOrganization(organizationRegistered.id!!) + organizationApiService.getVerifiedOrganization(organizationRegistered.id) } } @@ -1059,32 +1030,32 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { } @Test - fun `As a viewer, I can only see my information in security property for findOrganizationById`() { - val organization = makeOrganization(role = ROLE_VIEWER) - var organizationSaved = organizationApiService.registerOrganization(organization) + fun `As a viewer, I can only see my information in security property for getOrganization`() { + val organization = makeOrganizationRequest(role = ROLE_VIEWER) + var organizationSaved = organizationApiService.createOrganization(organization) - organizationSaved = organizationApiService.findOrganizationById(organizationSaved.id!!) + organizationSaved = organizationApiService.getOrganization(organizationSaved.id) assertEquals( OrganizationSecurity( default = ROLE_NONE, mutableListOf(OrganizationAccessControl(TEST_USER_ID, ROLE_VIEWER))), organizationSaved.security) - assertEquals(1, organizationSaved.security!!.accessControlList.size) + assertEquals(1, organizationSaved.security.accessControlList!!.size) } @Test - fun `As a viewer, I can only see my information in security property for findAllOrganizations`() { - val organization = makeOrganization(role = ROLE_VIEWER) - organizationApiService.registerOrganization(organization) + fun `As a viewer, I can only see my information in security property for listOrganizations`() { + val organization = makeOrganizationRequest(role = ROLE_VIEWER) + organizationApiService.createOrganization(organization) - val organizations = organizationApiService.findAllOrganizations(null, null) + val organizations = organizationApiService.listOrganizations(null, null) organizations.forEach { assertEquals( OrganizationSecurity( default = ROLE_NONE, mutableListOf(OrganizationAccessControl(TEST_USER_ID, ROLE_VIEWER))), it.security) - assertEquals(1, it.security!!.accessControlList.size) + assertEquals(1, it.security.accessControlList!!.size) } } } @@ -1102,11 +1073,11 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { val defaultPageSize = csmPlatformProperties.twincache.organization.defaultPageSize batchOrganizationCreation(numberOfOrganizationToCreate) - testFindAllOrganizations(null, null, numberOfOrganizationToCreate) - testFindAllOrganizations(0, null, defaultPageSize) - testFindAllOrganizations(0, 10, 10) - testFindAllOrganizations(1, 200, 0) - testFindAllOrganizations(1, 15, 5) + testlistOrganizations(null, null, numberOfOrganizationToCreate) + testlistOrganizations(0, null, defaultPageSize) + testlistOrganizations(0, 10, 10) + testlistOrganizations(1, 200, 0) + testlistOrganizations(1, 15, 5) } @Test @@ -1131,28 +1102,28 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { @Test fun `find All Organizations with wrong values`() { - testFindAllOrganizationsWithWrongValues() + testlistOrganizationsWithWrongValues() } @Test - fun `findOrganizationById as resource admin`() { + fun `getOrganization as resource admin`() { val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization("o-connector-test-1")) - assertNotNull(organizationApiService.findOrganizationById(organizationRegistered.id!!)) + organizationApiService.createOrganization(createTestOrganization("o-connector-test-1")) + assertNotNull(organizationApiService.getOrganization(organizationRegistered.id)) } @Test - fun `findOrganizationById as not resource admin`() { - testFindOrganizationByIdAsNotOwner(false, null, null, null, false) { runAsPlatformAdmin() } + fun `getOrganization as not resource admin`() { + testgetOrganizationAsNotOwner(false, null, null, null, false) { runAsPlatformAdmin() } } @Test - fun `registerOrganization with minimal values`() { + fun `createOrganization with minimal values`() { assertDoesNotThrow { val name = "o-connector-test-1" val organizationToRegister = createTestOrganization(name) val organizationRegistered = - organizationApiService.registerOrganization(organizationToRegister) + organizationApiService.createOrganization(organizationToRegister) assertEquals( OrganizationSecurity( default = ROLE_NONE, @@ -1160,983 +1131,916 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { OrganizationAccessControl(id = TEST_ADMIN_USER_ID, role = ROLE_ADMIN))), organizationRegistered.security) assertEquals(name, organizationRegistered.name) - assertTrue(organizationRegistered.id!!.startsWith("o-")) + assertTrue(organizationRegistered.id.startsWith("o-")) } } + } - @Test - fun `registerOrganization with null required organization name`() { - assertThrows { - organizationApiService.registerOrganization(Organization(name = null)) - } + @Test + fun `createOrganization without required organization name`() { + assertThrows { + organizationApiService.createOrganization(createTestOrganization("")) } + } - @Test - fun `registerOrganization without required organization name`() { - assertThrows { - organizationApiService.registerOrganization(createTestOrganization("")) - } + @Test + fun `createOrganization with security values`() { + assertDoesNotThrow { + val name = "o-connector-test-1" + val organizationToRegister = + createTestOrganizationWithSimpleSecurity(name, OTHER_TEST_USER_ID, ROLE_USER, ROLE_NONE) + val organizationRegistered = organizationApiService.createOrganization(organizationToRegister) + assertEquals( + OrganizationSecurity( + default = ROLE_USER, + mutableListOf( + OrganizationAccessControl(id = OTHER_TEST_USER_ID, role = ROLE_NONE), + OrganizationAccessControl(id = defaultName, role = ROLE_ADMIN))), + organizationRegistered.security) + assertEquals(name, organizationRegistered.name) + assertTrue(organizationRegistered.id.startsWith("o-")) } + } - @Test - fun `registerOrganization with security values`() { - assertDoesNotThrow { - val name = "o-connector-test-1" - val organizationToRegister = - createTestOrganizationWithSimpleSecurity(name, OTHER_TEST_USER_ID, ROLE_USER, ROLE_NONE) - val organizationRegistered = - organizationApiService.registerOrganization(organizationToRegister) - assertEquals( - OrganizationSecurity( - default = ROLE_USER, - mutableListOf( - OrganizationAccessControl(id = OTHER_TEST_USER_ID, role = ROLE_NONE), - OrganizationAccessControl(id = TEST_ADMIN_USER_ID, role = ROLE_ADMIN))), - organizationRegistered.security) - assertEquals(name, organizationRegistered.name) - assertTrue(organizationRegistered.id!!.startsWith("o-")) - } + @Test + fun `deleteOrganization as resource admin`() { + assertDoesNotThrow { + val name = "o-connector-test-1" + val organizationToRegister = createTestOrganization(name) + val organizationRegistered = organizationApiService.createOrganization(organizationToRegister) + organizationApiService.deleteOrganization(organizationRegistered.id) } + } - @Test - fun `unregisterOrganization as resource admin`() { - assertDoesNotThrow { - val name = "o-connector-test-1" - val organizationToRegister = createTestOrganization(name) - val organizationRegistered = - organizationApiService.registerOrganization(organizationToRegister) - organizationApiService.unregisterOrganization(organizationRegistered.id!!) - } + @Test + fun `deleteOrganization unexisting organization `() { + assertThrows { + organizationApiService.deleteOrganization("o-connector-test-1") } + } - @Test - fun `unregisterOrganization unexisting organization `() { - assertThrows { - organizationApiService.unregisterOrganization("o-connector-test-1") - } + @Test + fun `deleteOrganization as not resource admin `() { + assertDoesNotThrow { + val name = "o-connector-test-1" + runAsDifferentOrganizationUser() + val organizationToRegister = + createTestOrganizationWithSimpleSecurity(name, defaultName, ROLE_NONE, ROLE_NONE) + val organizationRegistered = organizationApiService.createOrganization(organizationToRegister) + runAsPlatformAdmin() + organizationApiService.deleteOrganization(organizationRegistered.id) } + } - @Test - fun `unregisterOrganization as not resource admin `() { - assertDoesNotThrow { - val name = "o-connector-test-1" - runAsDifferentOrganizationUser() - val organizationToRegister = - createTestOrganizationWithSimpleSecurity(name, TEST_ADMIN_USER_ID, ROLE_NONE, ROLE_NONE) - val organizationRegistered = - organizationApiService.registerOrganization(organizationToRegister) - runAsPlatformAdmin() - organizationApiService.unregisterOrganization(organizationRegistered.id!!) - } + @Test + fun `updateOrganization as resource admin organization name`() { + assertDoesNotThrow { + val name = "o-connector-test-1" + val organizationRegistered = + organizationApiService.createOrganization(createTestOrganization(name)) + + organizationRegistered.name = "my-new-name" + organizationApiService.updateOrganization( + organizationRegistered.id, UpdateOrganizationRequest("my-new-name")) + + assertEquals( + organizationRegistered, organizationApiService.getOrganization(organizationRegistered.id)) } + } - @Test - fun `updateOrganization as resource admin organization name`() { - assertDoesNotThrow { - val name = "o-connector-test-1" - val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) + @Test + fun `updateOrganization as not resource admin with WRITE permission`() { + assertDoesNotThrow { + val name = "o-connector-test-1" + runAsDifferentOrganizationUser() + val organizationRegistered = + organizationApiService.createOrganization( + createTestOrganizationWithSimpleSecurity( + name, TEST_ADMIN_USER_ID, ROLE_NONE, ROLE_EDITOR)) - organizationRegistered.name = "my-new-name" - organizationApiService.updateOrganization( - organizationRegistered.id!!, organizationRegistered) + runAsPlatformAdmin() - assertEquals( - organizationRegistered, - organizationApiService.findOrganizationById(organizationRegistered.id!!)) - } - } + organizationRegistered.name = "my-new-name" + organizationApiService.updateOrganization( + organizationRegistered.id, UpdateOrganizationRequest(organizationRegistered.name)) - @Test - fun `updateOrganization as resource admin organization security`() { - assertDoesNotThrow { - val name = "o-connector-test-1" - val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) + assertEquals( + organizationRegistered, organizationApiService.getOrganization(organizationRegistered.id)) + } + } - organizationRegistered.security = - OrganizationSecurity( - default = ROLE_NONE, - mutableListOf(OrganizationAccessControl(id = OTHER_TEST_USER_ID, role = ROLE_USER))) + @Test + fun `updateOrganization as not resource admin with no WRITE permission`() { + assertDoesNotThrow { + val name = "o-connector-test-1" + runAsDifferentOrganizationUser() + val organizationRegistered = + organizationApiService.createOrganization(createTestOrganization(name)) + runAsPlatformAdmin() + organizationApiService.updateOrganization( + organizationRegistered.id, UpdateOrganizationRequest("name")) + } + } - organizationApiService.updateOrganization( - organizationRegistered.id!!, organizationRegistered) + @Test + fun listPermissions() { + val mapAllPermissions = + listOf( + ComponentRolePermissions( + component = "organization", + roles = + mutableMapOf( + ROLE_VIEWER to mutableListOf(PERMISSION_READ), + ROLE_USER to + mutableListOf( + PERMISSION_READ, + PERMISSION_READ_SECURITY, + PERMISSION_CREATE_CHILDREN), + ROLE_EDITOR to + mutableListOf( + PERMISSION_READ, + PERMISSION_READ_SECURITY, + PERMISSION_CREATE_CHILDREN, + PERMISSION_WRITE), + ROLE_ADMIN to + mutableListOf( + PERMISSION_READ, + PERMISSION_READ_SECURITY, + PERMISSION_CREATE_CHILDREN, + PERMISSION_WRITE, + PERMISSION_WRITE_SECURITY, + PERMISSION_DELETE), + )), + ComponentRolePermissions( + component = "workspace", + roles = + mutableMapOf( + ROLE_VIEWER to mutableListOf(PERMISSION_READ), + ROLE_USER to + mutableListOf( + PERMISSION_READ, + PERMISSION_READ_SECURITY, + PERMISSION_CREATE_CHILDREN), + ROLE_EDITOR to + mutableListOf( + PERMISSION_READ, + PERMISSION_READ_SECURITY, + PERMISSION_CREATE_CHILDREN, + PERMISSION_WRITE), + ROLE_ADMIN to + mutableListOf( + PERMISSION_READ, + PERMISSION_READ_SECURITY, + PERMISSION_CREATE_CHILDREN, + PERMISSION_WRITE, + PERMISSION_WRITE_SECURITY, + PERMISSION_DELETE), + )), + ComponentRolePermissions( + component = "runner", + roles = + mutableMapOf( + ROLE_VIEWER to mutableListOf(PERMISSION_READ), + ROLE_EDITOR to + mutableListOf( + PERMISSION_READ, + PERMISSION_READ_SECURITY, + PERMISSION_LAUNCH, + PERMISSION_WRITE), + ROLE_VALIDATOR to + mutableListOf( + PERMISSION_READ, + PERMISSION_READ_SECURITY, + PERMISSION_LAUNCH, + PERMISSION_WRITE, + PERMISSION_VALIDATE), + ROLE_ADMIN to + mutableListOf( + PERMISSION_READ, + PERMISSION_READ_SECURITY, + PERMISSION_LAUNCH, + PERMISSION_WRITE, + PERMISSION_VALIDATE, + PERMISSION_WRITE_SECURITY, + PERMISSION_DELETE), + ))) + assertEquals(mapAllPermissions, organizationApiService.listPermissions()) + } - // Organization Security cannot be updated via updateOrganization endpoint - // setOrganizationDefaultSecurity or - // addOrganizationAccessControl/updateOrganizationAccessControl/removeOrganizationAccessControl - // Should be used instead - assertNotEquals( - organizationRegistered, - organizationApiService.findOrganizationById(organizationRegistered.id!!)) - } + @Test + fun `getOrganizationPermissions as resource admin`() { + assertDoesNotThrow { + val name = "o-connector-test-1" + val organizationRegistered = + organizationApiService.createOrganization(createTestOrganization(name)) + var organizationUserPermissions = + organizationApiService.getOrganizationPermissions(organizationRegistered.id, ROLE_VIEWER) + assertEquals(mutableListOf(PERMISSION_READ), organizationUserPermissions) + organizationUserPermissions = + organizationApiService.getOrganizationPermissions(organizationRegistered.id, ROLE_USER) + assertEquals( + mutableListOf(PERMISSION_READ, PERMISSION_READ_SECURITY, PERMISSION_CREATE_CHILDREN), + organizationUserPermissions) + organizationUserPermissions = + organizationApiService.getOrganizationPermissions(organizationRegistered.id, ROLE_EDITOR) + assertEquals( + mutableListOf( + PERMISSION_READ, + PERMISSION_READ_SECURITY, + PERMISSION_CREATE_CHILDREN, + PERMISSION_WRITE), + organizationUserPermissions) + organizationUserPermissions = + organizationApiService.getOrganizationPermissions(organizationRegistered.id, ROLE_ADMIN) + assertEquals( + mutableListOf( + PERMISSION_READ, + PERMISSION_READ_SECURITY, + PERMISSION_CREATE_CHILDREN, + PERMISSION_WRITE, + PERMISSION_WRITE_SECURITY, + PERMISSION_DELETE), + organizationUserPermissions) + organizationUserPermissions = + organizationApiService.getOrganizationPermissions( + organizationRegistered.id, UNKNOWN_IDENTIFIER) + assertEquals(emptyList(), organizationUserPermissions) } + } - @Test - fun `updateOrganization as not resource admin with WRITE permission`() { - assertDoesNotThrow { - val name = "o-connector-test-1" - runAsDifferentOrganizationUser() - val organizationRegistered = - organizationApiService.registerOrganization( - createTestOrganizationWithSimpleSecurity( - name, TEST_ADMIN_USER_ID, ROLE_NONE, ROLE_EDITOR)) + @Test + fun `getOrganizationPermissions as not resource admin and READ_SECURITY permission`() { + assertDoesNotThrow { + val name = "o-connector-test-1" + runAsDifferentOrganizationUser() + val organizationRegistered = + organizationApiService.createOrganization( + createTestOrganizationWithSimpleSecurity(name, TEST_USER_ID, ROLE_NONE, ROLE_VIEWER)) + runAsPlatformAdmin() + var organizationUserPermissions = + organizationApiService.getOrganizationPermissions(organizationRegistered.id, ROLE_VIEWER) + assertEquals(mutableListOf(PERMISSION_READ), organizationUserPermissions) + organizationUserPermissions = + organizationApiService.getOrganizationPermissions(organizationRegistered.id, ROLE_USER) + assertEquals( + mutableListOf(PERMISSION_READ, PERMISSION_READ_SECURITY, PERMISSION_CREATE_CHILDREN), + organizationUserPermissions) + organizationUserPermissions = + organizationApiService.getOrganizationPermissions(organizationRegistered.id, ROLE_EDITOR) + assertEquals( + mutableListOf( + PERMISSION_READ, + PERMISSION_READ_SECURITY, + PERMISSION_CREATE_CHILDREN, + PERMISSION_WRITE), + organizationUserPermissions) + organizationUserPermissions = + organizationApiService.getOrganizationPermissions(organizationRegistered.id, ROLE_ADMIN) + assertEquals( + mutableListOf( + PERMISSION_READ, + PERMISSION_READ_SECURITY, + PERMISSION_CREATE_CHILDREN, + PERMISSION_WRITE, + PERMISSION_WRITE_SECURITY, + PERMISSION_DELETE), + organizationUserPermissions) + organizationUserPermissions = + organizationApiService.getOrganizationPermissions( + organizationRegistered.id, UNKNOWN_IDENTIFIER) + assertEquals(emptyList(), organizationUserPermissions) + } + } - runAsPlatformAdmin() + @Test + fun `getOrganizationPermissions as not resource admin and no permission`() { + assertDoesNotThrow { + val name = "o-connector-test-1" + runAsDifferentOrganizationUser() + val organizationRegistered = + organizationApiService.createOrganization( + createTestOrganizationWithSimpleSecurity(name, TEST_USER_ID, ROLE_NONE, ROLE_VIEWER)) + runAsPlatformAdmin() + var organizationUserPermissions = + organizationApiService.getOrganizationPermissions(organizationRegistered.id, ROLE_VIEWER) + assertEquals(mutableListOf(PERMISSION_READ), organizationUserPermissions) + organizationUserPermissions = + organizationApiService.getOrganizationPermissions(organizationRegistered.id, ROLE_USER) + assertEquals( + mutableListOf(PERMISSION_READ, PERMISSION_READ_SECURITY, PERMISSION_CREATE_CHILDREN), + organizationUserPermissions) + organizationUserPermissions = + organizationApiService.getOrganizationPermissions(organizationRegistered.id, ROLE_EDITOR) + assertEquals( + mutableListOf( + PERMISSION_READ, + PERMISSION_READ_SECURITY, + PERMISSION_CREATE_CHILDREN, + PERMISSION_WRITE), + organizationUserPermissions) + organizationUserPermissions = + organizationApiService.getOrganizationPermissions(organizationRegistered.id, ROLE_ADMIN) + assertEquals( + mutableListOf( + PERMISSION_READ, + PERMISSION_READ_SECURITY, + PERMISSION_CREATE_CHILDREN, + PERMISSION_WRITE, + PERMISSION_WRITE_SECURITY, + PERMISSION_DELETE), + organizationUserPermissions) + organizationUserPermissions = + organizationApiService.getOrganizationPermissions( + organizationRegistered.id, UNKNOWN_IDENTIFIER) + assertEquals(emptyList(), organizationUserPermissions) + } + } - organizationRegistered.name = "my-new-name" - organizationApiService.updateOrganization( - organizationRegistered.id!!, organizationRegistered) + @Test + fun `getOrganizationSecurity as resource admin`() { + assertDoesNotThrow { + val name = "o-connector-test-1" + val organizationRegistered = + organizationApiService.createOrganization(createTestOrganization(name)) + assertNotNull(organizationApiService.getOrganizationSecurity(organizationRegistered.id)) + } + } - assertEquals( - organizationRegistered, - organizationApiService.findOrganizationById(organizationRegistered.id!!)) - } + @Test + fun `getOrganizationSecurity with non existing organization`() { + assertThrows { + organizationApiService.getOrganizationSecurity(UNKNOWN_IDENTIFIER) } + } - @Test - fun `updateOrganization as not resource admin with no WRITE permission`() { - assertDoesNotThrow { - val name = "o-connector-test-1" - runAsDifferentOrganizationUser() - val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) - runAsPlatformAdmin() - organizationApiService.updateOrganization( - organizationRegistered.id!!, organizationRegistered) - } + @Test + fun `getOrganizationSecurity with no security organization`() { + assertThrows { + organizationApiService.createOrganization(createTestOrganization(name = "org1")) + organizationApiService.getOrganizationSecurity("org1") } + } - @Test - fun getAllPermissions() { - val mapAllPermissions = - listOf( - ComponentRolePermissions( - component = "organization", - roles = - mutableMapOf( - ROLE_VIEWER to mutableListOf(PERMISSION_READ), - ROLE_USER to - mutableListOf( - PERMISSION_READ, - PERMISSION_READ_SECURITY, - PERMISSION_CREATE_CHILDREN), - ROLE_EDITOR to - mutableListOf( - PERMISSION_READ, - PERMISSION_READ_SECURITY, - PERMISSION_CREATE_CHILDREN, - PERMISSION_WRITE), - ROLE_ADMIN to - mutableListOf( - PERMISSION_READ, - PERMISSION_READ_SECURITY, - PERMISSION_CREATE_CHILDREN, - PERMISSION_WRITE, - PERMISSION_WRITE_SECURITY, - PERMISSION_DELETE), - )), - ComponentRolePermissions( - component = "workspace", - roles = - mutableMapOf( - ROLE_VIEWER to mutableListOf(PERMISSION_READ), - ROLE_USER to - mutableListOf( - PERMISSION_READ, - PERMISSION_READ_SECURITY, - PERMISSION_CREATE_CHILDREN), - ROLE_EDITOR to - mutableListOf( - PERMISSION_READ, - PERMISSION_READ_SECURITY, - PERMISSION_CREATE_CHILDREN, - PERMISSION_WRITE), - ROLE_ADMIN to - mutableListOf( - PERMISSION_READ, - PERMISSION_READ_SECURITY, - PERMISSION_CREATE_CHILDREN, - PERMISSION_WRITE, - PERMISSION_WRITE_SECURITY, - PERMISSION_DELETE), - )), - ComponentRolePermissions( - component = "runner", - roles = - mutableMapOf( - ROLE_VIEWER to mutableListOf(PERMISSION_READ), - ROLE_EDITOR to - mutableListOf( - PERMISSION_READ, - PERMISSION_READ_SECURITY, - PERMISSION_LAUNCH, - PERMISSION_WRITE), - ROLE_VALIDATOR to - mutableListOf( - PERMISSION_READ, - PERMISSION_READ_SECURITY, - PERMISSION_LAUNCH, - PERMISSION_WRITE, - PERMISSION_VALIDATE), - ROLE_ADMIN to - mutableListOf( - PERMISSION_READ, - PERMISSION_READ_SECURITY, - PERMISSION_LAUNCH, - PERMISSION_WRITE, - PERMISSION_VALIDATE, - PERMISSION_WRITE_SECURITY, - PERMISSION_DELETE), - ))) - assertEquals(mapAllPermissions, organizationApiService.getAllPermissions()) + @Test + fun `getOrganizationSecurity as not resource admin with READ_SECURITY permission`() { + assertDoesNotThrow { + val name = "o-connector-test-1" + runAsDifferentOrganizationUser() + val organizationRegistered = + organizationApiService.createOrganization( + createTestOrganizationWithSimpleSecurity(name, TEST_USER_ID, ROLE_NONE, ROLE_VIEWER)) + runAsPlatformAdmin() + assertNotNull(organizationApiService.getOrganizationSecurity(organizationRegistered.id)) } + } - @Test - fun `getOrganizationPermissions as resource admin`() { - assertDoesNotThrow { - val name = "o-connector-test-1" - val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) - var organizationUserPermissions = - organizationApiService.getOrganizationPermissions( - organizationRegistered.id!!, ROLE_VIEWER) - assertEquals(mutableListOf(PERMISSION_READ), organizationUserPermissions) - organizationUserPermissions = - organizationApiService.getOrganizationPermissions( - organizationRegistered.id!!, ROLE_USER) - assertEquals( - mutableListOf(PERMISSION_READ, PERMISSION_READ_SECURITY, PERMISSION_CREATE_CHILDREN), - organizationUserPermissions) - organizationUserPermissions = - organizationApiService.getOrganizationPermissions( - organizationRegistered.id!!, ROLE_EDITOR) - assertEquals( - mutableListOf( - PERMISSION_READ, - PERMISSION_READ_SECURITY, - PERMISSION_CREATE_CHILDREN, - PERMISSION_WRITE), - organizationUserPermissions) - organizationUserPermissions = - organizationApiService.getOrganizationPermissions( - organizationRegistered.id!!, ROLE_ADMIN) - assertEquals( - mutableListOf( - PERMISSION_READ, - PERMISSION_READ_SECURITY, - PERMISSION_CREATE_CHILDREN, - PERMISSION_WRITE, - PERMISSION_WRITE_SECURITY, - PERMISSION_DELETE), - organizationUserPermissions) - organizationUserPermissions = - organizationApiService.getOrganizationPermissions( - organizationRegistered.id!!, UNKNOWN_IDENTIFIER) - assertEquals(emptyList(), organizationUserPermissions) - } - } - - @Test - fun `getOrganizationPermissions as not resource admin and READ_SECURITY permission`() { - assertDoesNotThrow { - val name = "o-connector-test-1" - runAsDifferentOrganizationUser() - val organizationRegistered = - organizationApiService.registerOrganization( - createTestOrganizationWithSimpleSecurity( - name, TEST_USER_ID, ROLE_NONE, ROLE_VIEWER)) - runAsPlatformAdmin() - var organizationUserPermissions = - organizationApiService.getOrganizationPermissions( - organizationRegistered.id!!, ROLE_VIEWER) - assertEquals(mutableListOf(PERMISSION_READ), organizationUserPermissions) - organizationUserPermissions = - organizationApiService.getOrganizationPermissions( - organizationRegistered.id!!, ROLE_USER) - assertEquals( - mutableListOf(PERMISSION_READ, PERMISSION_READ_SECURITY, PERMISSION_CREATE_CHILDREN), - organizationUserPermissions) - organizationUserPermissions = - organizationApiService.getOrganizationPermissions( - organizationRegistered.id!!, ROLE_EDITOR) - assertEquals( - mutableListOf( - PERMISSION_READ, - PERMISSION_READ_SECURITY, - PERMISSION_CREATE_CHILDREN, - PERMISSION_WRITE), - organizationUserPermissions) - organizationUserPermissions = - organizationApiService.getOrganizationPermissions( - organizationRegistered.id!!, ROLE_ADMIN) - assertEquals( - mutableListOf( - PERMISSION_READ, - PERMISSION_READ_SECURITY, - PERMISSION_CREATE_CHILDREN, - PERMISSION_WRITE, - PERMISSION_WRITE_SECURITY, - PERMISSION_DELETE), - organizationUserPermissions) - organizationUserPermissions = - organizationApiService.getOrganizationPermissions( - organizationRegistered.id!!, UNKNOWN_IDENTIFIER) - assertEquals(emptyList(), organizationUserPermissions) - } - } - - @Test - fun `getOrganizationPermissions as not resource admin and no permission`() { - assertDoesNotThrow { - val name = "o-connector-test-1" - runAsDifferentOrganizationUser() - val organizationRegistered = - organizationApiService.registerOrganization( - createTestOrganizationWithSimpleSecurity( - name, TEST_USER_ID, ROLE_NONE, ROLE_VIEWER)) - runAsPlatformAdmin() - var organizationUserPermissions = - organizationApiService.getOrganizationPermissions( - organizationRegistered.id!!, ROLE_VIEWER) - assertEquals(mutableListOf(PERMISSION_READ), organizationUserPermissions) - organizationUserPermissions = - organizationApiService.getOrganizationPermissions( - organizationRegistered.id!!, ROLE_USER) - assertEquals( - mutableListOf(PERMISSION_READ, PERMISSION_READ_SECURITY, PERMISSION_CREATE_CHILDREN), - organizationUserPermissions) - organizationUserPermissions = - organizationApiService.getOrganizationPermissions( - organizationRegistered.id!!, ROLE_EDITOR) - assertEquals( - mutableListOf( - PERMISSION_READ, - PERMISSION_READ_SECURITY, - PERMISSION_CREATE_CHILDREN, - PERMISSION_WRITE), - organizationUserPermissions) - organizationUserPermissions = - organizationApiService.getOrganizationPermissions( - organizationRegistered.id!!, ROLE_ADMIN) - assertEquals( - mutableListOf( - PERMISSION_READ, - PERMISSION_READ_SECURITY, - PERMISSION_CREATE_CHILDREN, - PERMISSION_WRITE, - PERMISSION_WRITE_SECURITY, - PERMISSION_DELETE), - organizationUserPermissions) - organizationUserPermissions = - organizationApiService.getOrganizationPermissions( - organizationRegistered.id!!, UNKNOWN_IDENTIFIER) - assertEquals(emptyList(), organizationUserPermissions) - } - } - - @Test - fun `getOrganizationSecurity as resource admin`() { - assertDoesNotThrow { - val name = "o-connector-test-1" - val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) - assertNotNull(organizationApiService.getOrganizationSecurity(organizationRegistered.id!!)) - } - } - - @Test - fun `getOrganizationSecurity with non existing organization`() { - assertThrows { - organizationApiService.getOrganizationSecurity(UNKNOWN_IDENTIFIER) - } - } - - @Test - fun `getOrganizationSecurity with no security organization`() { - assertThrows { - organizationApiService.registerOrganization(createTestOrganization(name = "org1")) - organizationApiService.getOrganizationSecurity("org1") - } - } - - @Test - fun `getOrganizationSecurity as not resource admin with READ_SECURITY permission`() { - assertDoesNotThrow { - val name = "o-connector-test-1" - runAsDifferentOrganizationUser() - val organizationRegistered = - organizationApiService.registerOrganization( - createTestOrganizationWithSimpleSecurity( - name, TEST_USER_ID, ROLE_NONE, ROLE_VIEWER)) - runAsPlatformAdmin() - assertNotNull(organizationApiService.getOrganizationSecurity(organizationRegistered.id!!)) - } - } - - @Test - fun `getOrganizationSecurity as not resource admin with no READ_SECURITY permission`() { - assertDoesNotThrow { - val name = "o-connector-test-1" - runAsDifferentOrganizationUser() - val organizationRegistered = - organizationApiService.registerOrganization( - createTestOrganizationWithSimpleSecurity( - name, TEST_ADMIN_USER_ID, ROLE_NONE, ROLE_NONE)) - runAsPlatformAdmin() - assertNotNull(organizationApiService.getOrganizationSecurity(organizationRegistered.id!!)) - } - } - - @Test - fun `setOrganizationDefaultSecurity as resource admin and existing role`() { - assertDoesNotThrow { - val name = "o-connector-test-1" - val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) - val defaultRoleCreated = organizationRegistered.security?.default - assertNotNull( - organizationApiService.setOrganizationDefaultSecurity( - organizationRegistered.id!!, OrganizationRole(ROLE_ADMIN))) - val defaultRoleUpdated = - organizationApiService.getOrganizationSecurity(organizationRegistered.id!!).default - assertNotEquals(defaultRoleCreated, defaultRoleUpdated) - } - } - - @Test - fun `setOrganizationDefaultSecurity as resource admin and non-existing role`() { - assertThrows { - val name = "o-connector-test-1" - val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) - organizationApiService.setOrganizationDefaultSecurity( - organizationRegistered.id!!, OrganizationRole(UNKNOWN_IDENTIFIER)) - } - } - - @Test - fun `setOrganizationDefaultSecurity as not resource admin`() { - assertDoesNotThrow { - val name = "o-connector-test-1" - runAsDifferentOrganizationUser() - val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) - val defaultRoleCreated = organizationRegistered.security?.default - runAsPlatformAdmin() - assertNotNull( - organizationApiService.setOrganizationDefaultSecurity( - organizationRegistered.id!!, OrganizationRole(ROLE_ADMIN))) - val defaultRoleUpdated = - organizationApiService.getOrganizationSecurity(organizationRegistered.id!!).default - assertNotEquals(defaultRoleCreated, defaultRoleUpdated) - } - } - - @Test - fun `setOrganizationDefaultSecurity as not resource admin and no WRITE_SECURITY_PERMISSION`() { - assertDoesNotThrow { - val name = "o-connector-test-1" - runAsDifferentOrganizationUser() - val organizationRegistered = - organizationApiService.registerOrganization( - createTestOrganizationWithSimpleSecurity( - name, TEST_ADMIN_USER_ID, ROLE_NONE, ROLE_NONE)) - val defaultRoleCreated = organizationRegistered.security?.default - runAsPlatformAdmin() - assertNotNull( - organizationApiService.setOrganizationDefaultSecurity( - organizationRegistered.id!!, OrganizationRole(ROLE_ADMIN))) - val defaultRoleUpdated = - organizationApiService.getOrganizationSecurity(organizationRegistered.id!!).default - assertNotEquals(defaultRoleCreated, defaultRoleUpdated) - } - } - - @Test - fun `getOrganizationAccessControl as not resource admin and current user`() { - assertDoesNotThrow { - val name = "o-connector-test-1" - val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) - val organizationRole = - organizationApiService.getOrganizationAccessControl( - organizationRegistered.id!!, TEST_ADMIN_USER_ID) - assertNotNull(organizationRole) - assertEquals(ROLE_ADMIN, organizationRole.role) - assertEquals(TEST_ADMIN_USER_ID, organizationRole.id) - } - } - - @Test - fun `getOrganizationAccessControl as resource admin and non-existing user`() { - assertThrows { - val name = "o-connector-test-1" - val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) - organizationApiService.getOrganizationAccessControl(organizationRegistered.id!!, "UNKOWN") - } - } - - @Test - fun `getOrganizationAccessControl as not resource admin, READ_SECURITY permission and existing user`() { - assertDoesNotThrow { - val name = "o-connector-test-1" - runAsDifferentOrganizationUser() - val organizationRegistered = - organizationApiService.registerOrganization( - createTestOrganizationWithSimpleSecurity( - name, TEST_ADMIN_USER_ID, ROLE_NONE, ROLE_VIEWER)) - runAsPlatformAdmin() - val organizationRole = - organizationApiService.getOrganizationAccessControl( - organizationRegistered.id!!, TEST_ADMIN_USER_ID) - assertNotNull(organizationRole) - assertEquals(ROLE_VIEWER, organizationRole.role) - assertEquals(TEST_ADMIN_USER_ID, organizationRole.id) - } - } - - @Test - fun `getOrganizationAccessControl as not resource admin, READ_SECURITY permission and non existing user`() { - assertThrows { - val name = "o-connector-test-1" - runAsDifferentOrganizationUser() - val organizationRegistered = - organizationApiService.registerOrganization( - createTestOrganizationWithSimpleSecurity( - name, TEST_ADMIN_USER_ID, ROLE_NONE, ROLE_VIEWER)) - runAsPlatformAdmin() - organizationApiService.getOrganizationAccessControl( - organizationRegistered.id!!, UNKNOWN_IDENTIFIER) - } - } - - @Test - fun `getOrganizationAccessControl as not resource admin, no READ_SECURITY permission, non-existing user`() { - assertThrows { - val name = "o-connector-test-1" - runAsDifferentOrganizationUser() - val organizationRegistered = - organizationApiService.registerOrganization( - createTestOrganizationWithSimpleSecurity( - name, TEST_ADMIN_USER_ID, ROLE_NONE, ROLE_NONE)) - runAsPlatformAdmin() - organizationApiService.getOrganizationAccessControl( - organizationRegistered.id!!, UNKNOWN_IDENTIFIER) - } - } - - @Test - fun `getOrganizationAccessControl as not resource admin, no READ_SECURITY permission, existing user`() { - assertDoesNotThrow { - val name = "o-connector-test-1" - runAsDifferentOrganizationUser() - val organizationRegistered = - organizationApiService.registerOrganization( - createTestOrganizationWithSimpleSecurity( - name, TEST_ADMIN_USER_ID, ROLE_NONE, ROLE_NONE)) - runAsPlatformAdmin() - val organizationAccessControl = - organizationApiService.getOrganizationAccessControl( - organizationRegistered.id!!, TEST_ADMIN_USER_ID) - assertNotNull(organizationAccessControl) - assertEquals(TEST_ADMIN_USER_ID, organizationAccessControl.id) - assertEquals(ROLE_NONE, organizationAccessControl.role) - } - } - - @Test - fun `addOrganizationAccessControl as resource admin`() { - assertDoesNotThrow { - val name = "o-connector-test-1" - val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) - assertThrows { - organizationApiService.getOrganizationAccessControl( - organizationRegistered.id!!, OTHER_TEST_USER_ID) - } - val otherUserACL = OrganizationAccessControl(id = OTHER_TEST_USER_ID, role = ROLE_VIEWER) - assertNotNull( - organizationApiService.addOrganizationAccessControl( - organizationRegistered.id!!, otherUserACL)) - - val otherUserACLRetrieved = - organizationApiService.getOrganizationAccessControl( - organizationRegistered.id!!, OTHER_TEST_USER_ID) - assertEquals(otherUserACL, otherUserACLRetrieved) - } - } - - @Test - fun `addOrganizationAccessControl as resource admin (ROLE_NONE)`() { - assertThrows { - val name = "o-connector-test-1" - val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) - - val otherUserACL = OrganizationAccessControl(id = OTHER_TEST_USER_ID, role = ROLE_NONE) - organizationApiService.addOrganizationAccessControl( - organizationRegistered.id!!, otherUserACL) - } + @Test + fun `getOrganizationSecurity as not resource admin with no READ_SECURITY permission`() { + assertDoesNotThrow { + val name = "o-connector-test-1" + runAsDifferentOrganizationUser() + val organizationRegistered = + organizationApiService.createOrganization( + createTestOrganizationWithSimpleSecurity(name, defaultName, ROLE_NONE, ROLE_NONE)) + runAsPlatformAdmin() + assertNotNull(organizationApiService.getOrganizationSecurity(organizationRegistered.id)) } + } - @Test - fun `addOrganizationAccessControl as not resource admin and PERMISSION_WRITE_SECURITY`() { - assertDoesNotThrow { - val name = "o-connector-test-1" - runAsDifferentOrganizationUser() - val organizationRegistered = - organizationApiService.registerOrganization( - createTestOrganizationWithSimpleSecurity( - name, TEST_ADMIN_USER_ID, ROLE_NONE, ROLE_ADMIN)) - runAsPlatformAdmin() - assertThrows { - organizationApiService.getOrganizationAccessControl( - organizationRegistered.id!!, TEST_USER_ID) - } - val otherUserACL = OrganizationAccessControl(id = TEST_USER_ID, role = ROLE_VIEWER) - assertNotNull( - organizationApiService.addOrganizationAccessControl( - organizationRegistered.id!!, otherUserACL)) - - val otherUserACLRetrieved = - organizationApiService.getOrganizationAccessControl( - organizationRegistered.id!!, TEST_USER_ID) - assertEquals(otherUserACL, otherUserACLRetrieved) - } + @Test + fun `updateOrganizationDefaultSecurity as resource admin and existing role`() { + assertDoesNotThrow { + val name = "o-connector-test-1" + val organizationRegistered = + organizationApiService.createOrganization(createTestOrganization(name)) + val defaultRoleCreated = organizationRegistered.security.default + assertNotNull( + organizationApiService.updateOrganizationDefaultSecurity( + organizationRegistered.id, OrganizationRole(ROLE_ADMIN))) + val defaultRoleUpdated = + organizationApiService.getOrganizationSecurity(organizationRegistered.id).default + assertNotEquals(defaultRoleCreated, defaultRoleUpdated) } + } - @Test - fun `addOrganizationAccessControl as not resource admin and no PERMISSION_WRITE_SECURITY`() { - assertDoesNotThrow { - val name = "o-connector-test-1" - runAsDifferentOrganizationUser() - val organizationRegistered = - organizationApiService.registerOrganization( - createTestOrganizationWithSimpleSecurity( - name, TEST_ADMIN_USER_ID, ROLE_NONE, ROLE_NONE)) - runAsPlatformAdmin() - assertThrows { - organizationApiService.getOrganizationAccessControl( - organizationRegistered.id!!, TEST_USER_ID) - } - val otherUserACL = OrganizationAccessControl(id = TEST_USER_ID, role = ROLE_VIEWER) - assertNotNull( - organizationApiService.addOrganizationAccessControl( - organizationRegistered.id!!, otherUserACL)) - - val otherUserACLRetrieved = - organizationApiService.getOrganizationAccessControl( - organizationRegistered.id!!, TEST_USER_ID) - assertEquals(otherUserACL, otherUserACLRetrieved) - } + @Test + fun `updateOrganizationDefaultSecurity as resource admin and non-existing role`() { + assertThrows { + val name = "o-connector-test-1" + val organizationRegistered = + organizationApiService.createOrganization(createTestOrganization(name)) + organizationApiService.updateOrganizationDefaultSecurity( + organizationRegistered.id, OrganizationRole(UNKNOWN_IDENTIFIER)) } + } - @Test - fun `updateOrganizationAccessControl as resource admin cannot update last admin`() { - assertThrows { - val name = "o-connector-test-1" - val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) - organizationApiService.updateOrganizationAccessControl( - organizationRegistered.id!!, TEST_ADMIN_USER_ID, OrganizationRole(role = ROLE_VIEWER)) - } + @Test + fun `updateOrganizationDefaultSecurity as not resource admin`() { + assertDoesNotThrow { + val name = "o-connector-test-1" + runAsDifferentOrganizationUser() + val organizationRegistered = + organizationApiService.createOrganization(createTestOrganization(name)) + val defaultRoleCreated = organizationRegistered.security.default + runAsPlatformAdmin() + assertNotNull( + organizationApiService.updateOrganizationDefaultSecurity( + organizationRegistered.id, OrganizationRole(ROLE_ADMIN))) + val defaultRoleUpdated = + organizationApiService.getOrganizationSecurity(organizationRegistered.id).default + assertNotEquals(defaultRoleCreated, defaultRoleUpdated) } + } - @Test - fun `updateOrganizationAccessControl as resource admin can update user (!= ROLE_NONE)`() { - assertDoesNotThrow { - val name = "o-connector-test-1" - val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) - - organizationApiService.addOrganizationAccessControl( - organizationRegistered.id!!, - OrganizationAccessControl(id = OTHER_TEST_USER_ID, role = ROLE_VIEWER)) - - assertNotNull( - organizationApiService.updateOrganizationAccessControl( - organizationRegistered.id!!, - OTHER_TEST_USER_ID, - OrganizationRole(role = ROLE_EDITOR))) + @Test + fun `updateOrganizationDefaultSecurity as not resource admin and no WRITE_SECURITY_PERMISSION`() { + assertDoesNotThrow { + val name = "o-connector-test-1" + runAsDifferentOrganizationUser() + val organizationRegistered = + organizationApiService.createOrganization( + createTestOrganizationWithSimpleSecurity( + name, TEST_ADMIN_USER_ID, ROLE_NONE, ROLE_NONE)) + val defaultRoleCreated = organizationRegistered.security.default + runAsPlatformAdmin() + assertNotNull( + organizationApiService.updateOrganizationDefaultSecurity( + organizationRegistered.id, OrganizationRole(ROLE_ADMIN))) + val defaultRoleUpdated = + organizationApiService.getOrganizationSecurity(organizationRegistered.id).default + assertNotEquals(defaultRoleCreated, defaultRoleUpdated) + } + } - val userACLRetrieved = - organizationApiService.getOrganizationAccessControl( - organizationRegistered.id!!, OTHER_TEST_USER_ID) - assertNotEquals(ROLE_VIEWER, userACLRetrieved.role) - assertEquals(ROLE_EDITOR, userACLRetrieved.role) - } + @Test + fun `getOrganizationAccessControl as not resource admin and current user`() { + assertDoesNotThrow { + val name = "o-connector-test-1" + val organizationRegistered = + organizationApiService.createOrganization(createTestOrganization(name)) + val organizationRole = + organizationApiService.getOrganizationAccessControl( + organizationRegistered.id, defaultName) + assertNotNull(organizationRole) + assertEquals(ROLE_ADMIN, organizationRole.role) + assertEquals(defaultName, organizationRole.id) } + } - @Test - fun `updateOrganizationAccessControl as resource admin cannot update user (= ROLE_NONE)`() { - assertThrows { - val name = "o-connector-test-1" - val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) + @Test + fun `getOrganizationAccessControl as resource admin and non-existing user`() { + assertThrows { + val name = "o-connector-test-1" + val organizationRegistered = + organizationApiService.createOrganization(createTestOrganization(name)) + organizationApiService.getOrganizationAccessControl(organizationRegistered.id, "UNKOWN") + } + } - organizationApiService.updateOrganizationAccessControl( - organizationRegistered.id!!, TEST_USER_ID, OrganizationRole(role = ROLE_NONE)) - } + @Test + fun `getOrganizationAccessControl as not resource admin, READ_SECURITY permission and existing user`() { + assertDoesNotThrow { + val name = "o-connector-test-1" + runAsDifferentOrganizationUser() + val organizationRegistered = + organizationApiService.createOrganization( + createTestOrganizationWithSimpleSecurity(name, TEST_USER_ID, ROLE_NONE, ROLE_VIEWER)) + runAsPlatformAdmin() + val organizationRole = + organizationApiService.getOrganizationAccessControl( + organizationRegistered.id, TEST_USER_ID) + assertNotNull(organizationRole) + assertEquals(ROLE_VIEWER, organizationRole.role) + assertEquals(TEST_USER_ID, organizationRole.id) } + } - @Test - fun `updateOrganizationAccessControl as resource admin and unknown ACL user`() { - assertThrows { - val name = "o-connector-test-1" - val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) + @Test + fun `getOrganizationAccessControl as not resource admin, READ_SECURITY permission and non existing user`() { + assertThrows { + val name = "o-connector-test-1" + runAsDifferentOrganizationUser() + val organizationRegistered = + organizationApiService.createOrganization( + createTestOrganizationWithSimpleSecurity(name, TEST_USER_ID, ROLE_NONE, ROLE_VIEWER)) + runAsPlatformAdmin() + organizationApiService.getOrganizationAccessControl( + organizationRegistered.id, UNKNOWN_IDENTIFIER) + } + } - organizationApiService.updateOrganizationAccessControl( - organizationRegistered.id!!, UNKNOWN_IDENTIFIER, OrganizationRole(role = ROLE_EDITOR)) - } + @Test + fun `getOrganizationAccessControl as not resource admin, no READ_SECURITY permission, non-existing user`() { + assertThrows { + val name = "o-connector-test-1" + runAsDifferentOrganizationUser() + val organizationRegistered = + organizationApiService.createOrganization( + createTestOrganizationWithSimpleSecurity( + name, TEST_ADMIN_USER_ID, ROLE_NONE, ROLE_NONE)) + runAsPlatformAdmin() + organizationApiService.getOrganizationAccessControl( + organizationRegistered.id, UNKNOWN_IDENTIFIER) } + } - @Test - fun `updateOrganizationAccessControl as resource admin and wrong role`() { - assertThrows { - val name = "o-connector-test-1" - val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) + @Test + fun `getOrganizationAccessControl as not resource admin, no READ_SECURITY permission, existing user`() { + assertDoesNotThrow { + val name = "o-connector-test-1" + runAsDifferentOrganizationUser() + val organizationRegistered = + organizationApiService.createOrganization( + createTestOrganizationWithSimpleSecurity(name, TEST_USER_ID, ROLE_NONE, ROLE_NONE)) + runAsPlatformAdmin() + val organizationAccessControl = + organizationApiService.getOrganizationAccessControl( + organizationRegistered.id, TEST_USER_ID) + assertNotNull(organizationAccessControl) + assertEquals(TEST_USER_ID, organizationAccessControl.id) + assertEquals(ROLE_NONE, organizationAccessControl.role) + } + } - organizationApiService.updateOrganizationAccessControl( - organizationRegistered.id!!, TEST_USER_ID, OrganizationRole(role = UNKNOWN_IDENTIFIER)) + @Test + fun `createOrganizationAccessControl as resource admin`() { + assertDoesNotThrow { + val name = "o-connector-test-1" + val organizationRegistered = + organizationApiService.createOrganization(createTestOrganization(name)) + assertThrows { + organizationApiService.getOrganizationAccessControl( + organizationRegistered.id, OTHER_TEST_USER_ID) } + val otherUserACL = OrganizationAccessControl(id = OTHER_TEST_USER_ID, role = ROLE_VIEWER) + assertNotNull( + organizationApiService.createOrganizationAccessControl( + organizationRegistered.id, otherUserACL)) + + val otherUserACLRetrieved = + organizationApiService.getOrganizationAccessControl( + organizationRegistered.id, OTHER_TEST_USER_ID) + assertEquals( + OrganizationAccessControl(OTHER_TEST_USER_ID, ROLE_VIEWER), otherUserACLRetrieved) } + } - @Test - fun `updateOrganizationAccessControl as not resource admin, WRITE_SECURITY permission, can update user (!= ROLE_NONE)`() { - assertDoesNotThrow { - val name = "o-connector-test-1" - runAsDifferentOrganizationUser() - val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) + @Test + fun `createOrganizationAccessControl as resource admin (ROLE_NONE)`() { + assertThrows { + val name = "o-connector-test-1" + val organizationRegistered = + organizationApiService.createOrganization(createTestOrganization(name)) - organizationApiService.addOrganizationAccessControl( - organizationRegistered.id!!, - OrganizationAccessControl(id = TEST_ADMIN_USER_ID, role = ROLE_ADMIN)) + val otherUserACL = OrganizationAccessControl(id = OTHER_TEST_USER_ID, role = ROLE_NONE) + organizationApiService.createOrganizationAccessControl( + organizationRegistered.id, otherUserACL) + } + } - runAsPlatformAdmin() + @Test + fun `createOrganizationAccessControl as not resource admin and PERMISSION_WRITE_SECURITY`() { + assertDoesNotThrow { + val name = "o-connector-test-1" + runAsDifferentOrganizationUser() + val organizationRegistered = + organizationApiService.createOrganization( + createTestOrganizationWithSimpleSecurity( + name, TEST_ADMIN_USER_ID, ROLE_NONE, ROLE_ADMIN)) + runAsPlatformAdmin() + assertThrows { + organizationApiService.getOrganizationAccessControl(organizationRegistered.id, TEST_USER_ID) + } + val otherUserACL = OrganizationAccessControl(id = TEST_USER_ID, role = ROLE_VIEWER) + assertNotNull( + organizationApiService.createOrganizationAccessControl( + organizationRegistered.id, otherUserACL)) - assertNotNull( - organizationApiService.updateOrganizationAccessControl( - organizationRegistered.id!!, - OTHER_TEST_USER_ID, - OrganizationRole(role = ROLE_EDITOR))) + val otherUserACLRetrieved = + organizationApiService.getOrganizationAccessControl( + organizationRegistered.id, TEST_USER_ID) + assertEquals(OrganizationAccessControl(TEST_USER_ID, ROLE_VIEWER), otherUserACLRetrieved) + } + } - val userACLRetrieved = - organizationApiService.getOrganizationAccessControl( - organizationRegistered.id!!, OTHER_TEST_USER_ID) - assertEquals(ROLE_EDITOR, userACLRetrieved.role) + @Test + fun `createOrganizationAccessControl as not resource admin and no PERMISSION_WRITE_SECURITY`() { + assertDoesNotThrow { + val name = "o-connector-test-1" + runAsDifferentOrganizationUser() + val organizationRegistered = + organizationApiService.createOrganization( + createTestOrganizationWithSimpleSecurity(name, defaultName, ROLE_NONE, ROLE_NONE)) + runAsPlatformAdmin() + assertThrows { + organizationApiService.getOrganizationAccessControl(organizationRegistered.id, TEST_USER_ID) } + val otherUserACL = OrganizationAccessControl(id = TEST_USER_ID, role = ROLE_VIEWER) + assertNotNull( + organizationApiService.createOrganizationAccessControl( + organizationRegistered.id, otherUserACL)) + + val otherUserACLRetrieved = + organizationApiService.getOrganizationAccessControl( + organizationRegistered.id, TEST_USER_ID) + assertEquals(OrganizationAccessControl(TEST_USER_ID, ROLE_VIEWER), otherUserACLRetrieved) } + } - @Test - fun `updateOrganizationAccessControl as not resource admin, no WRITE_SECURITY permission`() { - assertDoesNotThrow { - val name = "o-connector-test-1" - runAsDifferentOrganizationUser() - val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) + @Test + fun `updateOrganizationAccessControl as resource admin cannot update last admin`() { + assertThrows { + val name = "o-connector-test-1" + val organizationRegistered = + organizationApiService.createOrganization(createTestOrganization(name)) + organizationApiService.updateOrganizationAccessControl( + organizationRegistered.id, defaultName, OrganizationRole(role = ROLE_VIEWER)) + } + } - organizationApiService.addOrganizationAccessControl( - organizationRegistered.id!!, - OrganizationAccessControl(id = TEST_ADMIN_USER_ID, role = ROLE_VIEWER)) + @Test + fun `updateOrganizationAccessControl as resource admin can update user (!= ROLE_NONE)`() { + assertDoesNotThrow { + val name = "o-connector-test-1" + val organizationRegistered = + organizationApiService.createOrganization(createTestOrganization(name)) - runAsPlatformAdmin() + organizationApiService.createOrganizationAccessControl( + organizationRegistered.id, + OrganizationAccessControl(id = OTHER_TEST_USER_ID, role = ROLE_VIEWER)) - assertNotNull( - organizationApiService.updateOrganizationAccessControl( - organizationRegistered.id!!, - TEST_ADMIN_USER_ID, - OrganizationRole(role = ROLE_EDITOR))) + assertNotNull( + organizationApiService.updateOrganizationAccessControl( + organizationRegistered.id, OTHER_TEST_USER_ID, OrganizationRole(role = ROLE_EDITOR))) - val userACLRetrieved = - organizationApiService.getOrganizationAccessControl( - organizationRegistered.id!!, TEST_ADMIN_USER_ID) - assertEquals(ROLE_EDITOR, userACLRetrieved.role) - } + val userACLRetrieved = + organizationApiService.getOrganizationAccessControl( + organizationRegistered.id, OTHER_TEST_USER_ID) + assertNotEquals(ROLE_VIEWER, userACLRetrieved.role) + assertEquals(ROLE_EDITOR, userACLRetrieved.role) } + } - @Test - fun `updateOrganizationAccessControl as not resource admin, no WRITE_SECURITY permission, ROLE_NONE`() { - assertThrows { - val name = "o-connector-test-1" - runAsDifferentOrganizationUser() - val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) + @Test + fun `updateOrganizationAccessControl as resource admin cannot update user (= ROLE_NONE)`() { + assertThrows { + val name = "o-connector-test-1" + val organizationRegistered = + organizationApiService.createOrganization(createTestOrganization(name)) - organizationApiService.addOrganizationAccessControl( - organizationRegistered.id!!, - OrganizationAccessControl(id = TEST_USER_ID, role = ROLE_VIEWER)) + organizationApiService.updateOrganizationAccessControl( + organizationRegistered.id, TEST_USER_ID, OrganizationRole(role = ROLE_NONE)) + } + } - runAsPlatformAdmin() + @Test + fun `updateOrganizationAccessControl as resource admin and unknown ACL user`() { + assertThrows { + val name = "o-connector-test-1" + val organizationRegistered = + organizationApiService.createOrganization(createTestOrganization(name)) - organizationApiService.updateOrganizationAccessControl( - organizationRegistered.id!!, OTHER_TEST_USER_ID, OrganizationRole(role = ROLE_NONE)) - } + organizationApiService.updateOrganizationAccessControl( + organizationRegistered.id, UNKNOWN_IDENTIFIER, OrganizationRole(role = ROLE_EDITOR)) } + } - @Test - fun `removeOrganizationAccessControl as resource admin`() { + @Test + fun `updateOrganizationAccessControl as resource admin and wrong role`() { + assertThrows { val name = "o-connector-test-1" val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) - - val otherUserACL = OrganizationAccessControl(id = OTHER_TEST_USER_ID, role = ROLE_VIEWER) - organizationApiService.addOrganizationAccessControl(organizationRegistered.id!!, otherUserACL) + organizationApiService.createOrganization(createTestOrganization(name)) - organizationApiService.removeOrganizationAccessControl( - organizationRegistered.id!!, OTHER_TEST_USER_ID) - assertThrows { - organizationApiService.getOrganizationAccessControl( - organizationRegistered.id!!, OTHER_TEST_USER_ID) - } + organizationApiService.updateOrganizationAccessControl( + organizationRegistered.id, TEST_USER_ID, OrganizationRole(role = UNKNOWN_IDENTIFIER)) } + } - @Test - fun `removeOrganizationAccessControl as not resource admin, WRITE_SECURITY permission`() { + @Test + fun `updateOrganizationAccessControl as not resource admin, WRITE_SECURITY permission, can update user (!= ROLE_NONE)`() { + assertDoesNotThrow { val name = "o-connector-test-1" runAsDifferentOrganizationUser() val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) + organizationApiService.createOrganization(createTestOrganization(name)) - val otherUserACL = OrganizationAccessControl(id = TEST_USER_ID, role = ROLE_ADMIN) - organizationApiService.addOrganizationAccessControl(organizationRegistered.id!!, otherUserACL) + organizationApiService.createOrganizationAccessControl( + organizationRegistered.id, + OrganizationAccessControl(id = TEST_ADMIN_USER_ID, role = ROLE_ADMIN)) runAsPlatformAdmin() - organizationApiService.removeOrganizationAccessControl( - organizationRegistered.id!!, OTHER_TEST_USER_ID) - assertThrows { - organizationApiService.getOrganizationAccessControl( - organizationRegistered.id!!, OTHER_TEST_USER_ID) - } + + assertNotNull( + organizationApiService.updateOrganizationAccessControl( + organizationRegistered.id, OTHER_TEST_USER_ID, OrganizationRole(role = ROLE_EDITOR))) + + val userACLRetrieved = + organizationApiService.getOrganizationAccessControl( + organizationRegistered.id, OTHER_TEST_USER_ID) + assertEquals(ROLE_EDITOR, userACLRetrieved.role) } + } - @Test - fun `removeOrganizationAccessControl as not resource admin, no WRITE_SECURITY permission`() { + @Test + fun `updateOrganizationAccessControl as not resource admin, no WRITE_SECURITY permission`() { + assertDoesNotThrow { val name = "o-connector-test-1" runAsDifferentOrganizationUser() val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) + organizationApiService.createOrganization(createTestOrganization(name)) - val otherUserACL = OrganizationAccessControl(id = TEST_USER_ID, role = ROLE_ADMIN) - organizationApiService.addOrganizationAccessControl(organizationRegistered.id!!, otherUserACL) + organizationApiService.createOrganizationAccessControl( + organizationRegistered.id, + OrganizationAccessControl(id = TEST_ADMIN_USER_ID, role = ROLE_VIEWER)) runAsPlatformAdmin() - organizationApiService.removeOrganizationAccessControl( - organizationRegistered.id!!, OTHER_TEST_USER_ID) - assertThrows { - organizationApiService.getOrganizationAccessControl( - organizationRegistered.id!!, OTHER_TEST_USER_ID) - } - } - @Test - fun `getOrganizationSecurityUsers as resource admin`() { - val name = "o-connector-test-1" - val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) + assertNotNull( + organizationApiService.updateOrganizationAccessControl( + organizationRegistered.id, TEST_ADMIN_USER_ID, OrganizationRole(role = ROLE_EDITOR))) - val orgaUsers = - organizationApiService.getOrganizationSecurityUsers(organizationRegistered.id!!) - assertEquals(listOf(TEST_ADMIN_USER_ID), orgaUsers) + val userACLRetrieved = + organizationApiService.getOrganizationAccessControl( + organizationRegistered.id, TEST_ADMIN_USER_ID) + assertEquals(ROLE_EDITOR, userACLRetrieved.role) } + } - @Test - fun `getOrganizationSecurityUsers as not resource admin, READ_SECURITY permission`() { + @Test + fun `updateOrganizationAccessControl as not resource admin, no WRITE_SECURITY permission, ROLE_NONE`() { + assertThrows { val name = "o-connector-test-1" runAsDifferentOrganizationUser() val organizationRegistered = - organizationApiService.registerOrganization( - createTestOrganizationWithSimpleSecurity(name, TEST_USER_ID, ROLE_NONE, ROLE_VIEWER)) + organizationApiService.createOrganization(createTestOrganization(name)) + + organizationApiService.createOrganizationAccessControl( + organizationRegistered.id, + OrganizationAccessControl(id = TEST_USER_ID, role = ROLE_VIEWER)) + runAsPlatformAdmin() - val orgaUsers = - organizationApiService.getOrganizationSecurityUsers(organizationRegistered.id!!) - assertEquals(listOf(TEST_USER_ID, OTHER_TEST_USER_ID), orgaUsers) + + organizationApiService.updateOrganizationAccessControl( + organizationRegistered.id, OTHER_TEST_USER_ID, OrganizationRole(role = ROLE_NONE)) } + } - @Test - fun `getOrganizationSecurityUsers as not resource admin, no READ_SECURITY permission`() { - val name = "o-connector-test-1" - runAsDifferentOrganizationUser() - val organizationRegistered = - organizationApiService.registerOrganization( - createTestOrganizationWithSimpleSecurity(name, TEST_USER_ID, ROLE_NONE, ROLE_NONE)) - runAsPlatformAdmin() - val orgaUsers = - organizationApiService.getOrganizationSecurityUsers(organizationRegistered.id!!) - assertEquals(listOf(TEST_USER_ID, OTHER_TEST_USER_ID), orgaUsers) + @Test + fun `deleteOrganizationAccessControl as resource admin`() { + val name = "o-connector-test-1" + val organizationRegistered = + organizationApiService.createOrganization(createTestOrganization(name)) + + val otherUserACL = OrganizationAccessControl(id = OTHER_TEST_USER_ID, role = ROLE_VIEWER) + organizationApiService.createOrganizationAccessControl(organizationRegistered.id, otherUserACL) + + organizationApiService.deleteOrganizationAccessControl( + organizationRegistered.id, OTHER_TEST_USER_ID) + assertThrows { + organizationApiService.getOrganizationAccessControl( + organizationRegistered.id, OTHER_TEST_USER_ID) } + } - @Test - fun `access control list shouldn't contain more than one time each user on creation`() { - val brokenOrganization = - Organization( - name = "organization", - security = - OrganizationSecurity( - default = ROLE_NONE, - accessControlList = - mutableListOf( - OrganizationAccessControl(TEST_USER_ID, ROLE_ADMIN), - OrganizationAccessControl(TEST_USER_ID, ROLE_EDITOR)))) - assertThrows { - organizationApiService.registerOrganization(brokenOrganization) - } + @Test + fun `deleteOrganizationAccessControl as not resource admin, WRITE_SECURITY permission`() { + val name = "o-connector-test-1" + runAsDifferentOrganizationUser() + val organizationRegistered = + organizationApiService.createOrganization(createTestOrganization(name)) + + val otherUserACL = OrganizationAccessControl(id = TEST_USER_ID, role = ROLE_ADMIN) + organizationApiService.createOrganizationAccessControl(organizationRegistered.id, otherUserACL) + + runAsPlatformAdmin() + organizationApiService.deleteOrganizationAccessControl( + organizationRegistered.id, OTHER_TEST_USER_ID) + assertThrows { + organizationApiService.getOrganizationAccessControl( + organizationRegistered.id, OTHER_TEST_USER_ID) } + } - @Test - fun `access control list shouldn't contain more than one time each user on ACL addition`() { - val workingOrganization = - Organization( - name = "organization", - security = - OrganizationSecurity( - default = ROLE_NONE, - accessControlList = - mutableListOf(OrganizationAccessControl(TEST_USER_ID, ROLE_ADMIN)))) - val organizationSaved = organizationApiService.registerOrganization(workingOrganization) + @Test + fun `deleteOrganizationAccessControl as not resource admin, no WRITE_SECURITY permission`() { + val name = "o-connector-test-1" + runAsDifferentOrganizationUser() + val organizationRegistered = + organizationApiService.createOrganization(createTestOrganization(name)) - assertThrows { - organizationApiService.addOrganizationAccessControl( - organizationSaved.id!!, OrganizationAccessControl(TEST_USER_ID, ROLE_EDITOR)) - } + val otherUserACL = OrganizationAccessControl(id = TEST_USER_ID, role = ROLE_ADMIN) + organizationApiService.createOrganizationAccessControl(organizationRegistered.id, otherUserACL) + + runAsPlatformAdmin() + organizationApiService.deleteOrganizationAccessControl( + organizationRegistered.id, OTHER_TEST_USER_ID) + assertThrows { + organizationApiService.getOrganizationAccessControl( + organizationRegistered.id, OTHER_TEST_USER_ID) } + } - @Test - fun `testVerifyPermissionsAndReturnOrganization`() { - val name = "o-connector-test-1" - val organizationRegistered = - organizationApiService.registerOrganization(createTestOrganization(name)) - assertDoesNotThrow { - val organizationVerified = - organizationApiService.getVerifiedOrganization(organizationRegistered.id!!) - assertEquals(organizationRegistered, organizationVerified) - } + @Test + fun `listOrganizationSecurityUsers as resource admin`() { + val name = "o-connector-test-1" + val organizationRegistered = + organizationApiService.createOrganization(createTestOrganization(name)) + + val orgaUsers = organizationApiService.listOrganizationSecurityUsers(organizationRegistered.id) + assertEquals(listOf(defaultName), orgaUsers) + } + + @Test + fun `listOrganizationSecurityUsers as not resource admin, READ_SECURITY permission`() { + val name = "o-connector-test-1" + runAsDifferentOrganizationUser() + val organizationRegistered = + organizationApiService.createOrganization( + createTestOrganizationWithSimpleSecurity(name, TEST_USER_ID, ROLE_NONE, ROLE_VIEWER)) + runAsPlatformAdmin() + val orgaUsers = organizationApiService.listOrganizationSecurityUsers(organizationRegistered.id) + assertEquals(listOf(TEST_USER_ID, OTHER_TEST_USER_ID), orgaUsers) + } + + @Test + fun `listOrganizationSecurityUsers as not resource admin, no READ_SECURITY permission`() { + val name = "o-connector-test-1" + runAsDifferentOrganizationUser() + val organizationRegistered = + organizationApiService.createOrganization( + createTestOrganizationWithSimpleSecurity(name, TEST_USER_ID, ROLE_NONE, ROLE_NONE)) + runAsPlatformAdmin() + val orgaUsers = organizationApiService.listOrganizationSecurityUsers(organizationRegistered.id) + assertEquals(listOf(TEST_USER_ID, OTHER_TEST_USER_ID), orgaUsers) + } + + @Test + fun `access control list shouldn't contain more than one time each user on creation`() { + val brokenOrganization = + OrganizationCreationRequest( + name = "organization", + security = + OrganizationSecurity( + default = ROLE_NONE, + accessControlList = + mutableListOf( + OrganizationAccessControl(TEST_USER_ID, ROLE_ADMIN), + OrganizationAccessControl(TEST_USER_ID, ROLE_EDITOR)))) + assertThrows { + organizationApiService.createOrganization(brokenOrganization) } + } - @Test - fun `testVerifyPermissionsAndReturnOrganization with organization with restricted permission`() { - val name = "o-connector-test-1" - runAsDifferentOrganizationUser() - val organizationRegistered = - organizationApiService.registerOrganization( - createTestOrganizationWithSimpleSecurity(name, TEST_USER_ID, ROLE_NONE, ROLE_NONE)) - runAsPlatformAdmin() - assertDoesNotThrow { - val organizationVerified = - organizationApiService.getVerifiedOrganization(organizationRegistered.id!!) - assertEquals(organizationRegistered, organizationVerified) - } + @Test + fun `access control list shouldn't contain more than one time each user on ACL addition`() { + val workingOrganization = + OrganizationCreationRequest( + name = "organization", + security = + OrganizationSecurity( + default = ROLE_NONE, + accessControlList = + mutableListOf(OrganizationAccessControl(defaultName, ROLE_ADMIN)))) + val organizationSaved = organizationApiService.createOrganization(workingOrganization) + + assertThrows { + organizationApiService.createOrganizationAccessControl( + organizationSaved.id, OrganizationAccessControl(defaultName, ROLE_EDITOR)) } + } - @Test - fun `testVerifyPermissionsAndReturnOrganization with unknown organization id`() { - assertThrows { - organizationApiService.getVerifiedOrganization("wrong_orga_id") - } + @Test + fun `testVerifyPermissionsAndReturnOrganization`() { + val name = "o-connector-test-1" + val organizationRegistered = + organizationApiService.createOrganization(createTestOrganization(name)) + assertDoesNotThrow { + val organizationVerified = + organizationApiService.getVerifiedOrganization(organizationRegistered.id) + assertEquals(organizationRegistered, organizationVerified) + } + } + + @Test + fun `testVerifyPermissionsAndReturnOrganization with organization with restricted permission`() { + val name = "o-connector-test-1" + runAsDifferentOrganizationUser() + val organizationRegistered = + organizationApiService.createOrganization( + createTestOrganizationWithSimpleSecurity(name, TEST_USER_ID, ROLE_NONE, ROLE_NONE)) + runAsPlatformAdmin() + assertDoesNotThrow { + val organizationVerified = + organizationApiService.getVerifiedOrganization(organizationRegistered.id) + assertEquals(organizationRegistered, organizationVerified) + } + } + + @Test + fun `testVerifyPermissionsAndReturnOrganization with unknown organization id`() { + assertThrows { + organizationApiService.getVerifiedOrganization("wrong_orga_id") } } @@ -2146,32 +2050,31 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { ) { val defaultPageSize = csmPlatformProperties.twincache.organization.defaultPageSize - testFindAllOrganizations(null, null, numberOfOrganizationReachableByTestUser) - testFindAllOrganizations(0, null, defaultPageSize) - testFindAllOrganizations( - 0, numberOfOrganizationCreated, numberOfOrganizationReachableByTestUser) - testFindAllOrganizations(1, 200, 0) - testFindAllOrganizations(1, 15, 15) + testlistOrganizations(null, null, numberOfOrganizationReachableByTestUser) + testlistOrganizations(0, null, defaultPageSize) + testlistOrganizations(0, numberOfOrganizationCreated, numberOfOrganizationReachableByTestUser) + testlistOrganizations(1, 200, 0) + testlistOrganizations(1, 15, 15) } - private fun testFindAllOrganizationsWithWrongValues() { + private fun testlistOrganizationsWithWrongValues() { logger.info("Should throw IllegalArgumentException when page and size are zeros") - assertThrows { organizationApiService.findAllOrganizations(0, 0) } + assertThrows { organizationApiService.listOrganizations(0, 0) } logger.info("Should throw IllegalArgumentException when page is negative") - assertThrows { organizationApiService.findAllOrganizations(-1, 10) } + assertThrows { organizationApiService.listOrganizations(-1, 10) } logger.info("Should throw IllegalArgumentException when size is negative") - assertThrows { organizationApiService.findAllOrganizations(0, -1) } + assertThrows { organizationApiService.listOrganizations(0, -1) } } - private fun testFindOrganizationByIdAsNotOwner( + private fun testgetOrganizationAsNotOwner( hasUserSecurity: Boolean, userId: String?, defaultRole: String?, userRole: String?, throwException: Boolean, - runFindOrganizationByIdAs: () -> Unit + rungetOrganizationAs: () -> Unit ) { runAsDifferentOrganizationUser() val organizationId = "o-connector-test-1" @@ -2182,12 +2085,12 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { } else { createTestOrganization(organizationId) } - val organizationRegistered = organizationApiService.registerOrganization(organization) + val organizationRegistered = organizationApiService.createOrganization(organization) - runFindOrganizationByIdAs() + rungetOrganizationAs() if (throwException) { assertThrows { - (organizationApiService.findOrganizationById(organizationRegistered.id!!)) + (organizationApiService.getOrganization(organizationRegistered.id)) } } else { assertNotNull(organizationRegistered) @@ -2224,7 +2127,7 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { logger.info("Creating $numberOfOrganizationToCreate connectors...") IntRange(1, numberOfOrganizationToCreate).forEach { val newOrganization = createTestOrganization("o-connector-test-$it") - organizationApiService.registerOrganization(newOrganization) + organizationApiService.createOrganization(newOrganization) } } @@ -2248,7 +2151,7 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { userId, defaultSecurity, securityRole) - organizationApiService.registerOrganization(organization) + organizationApiService.createOrganization(organization) numberOfOrganizationCreated++ } } @@ -2256,8 +2159,8 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { } /** Create default test Connector */ - internal fun createTestOrganization(name: String): Organization { - return Organization(name = name) + internal fun createTestOrganization(name: String): OrganizationCreationRequest { + return OrganizationCreationRequest(name = name) } /** Create default test Connector */ @@ -2266,25 +2169,23 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { userName: String, defaultSecurity: String, role: String, - ): Organization { - return Organization( - id = "organization_id", + ): OrganizationCreationRequest { + return OrganizationCreationRequest( name = name, security = OrganizationSecurity( default = defaultSecurity, - accessControlList = mutableListOf(OrganizationAccessControl(userName, role)))) + accessControlList = + mutableListOf(OrganizationAccessControl(id = userName, role = role)))) } - fun makeOrganization( + fun makeOrganizationRequest( id: String = "organization_id", userName: String = TEST_USER_ID, role: String = ROLE_ADMIN - ): Organization { - return Organization( - id = id, + ): OrganizationCreationRequest { + return OrganizationCreationRequest( name = "Organization Name", - ownerId = "my.account-tester@cosmotech.com", security = OrganizationSecurity( default = ROLE_NONE, @@ -2294,8 +2195,8 @@ class OrganizationServiceIntegrationTest : CsmRedisTestBase() { OrganizationAccessControl(id = userName, role = role)))) } - internal fun testFindAllOrganizations(page: Int?, size: Int?, expectedResultSize: Int) { - val organizationList = organizationApiService.findAllOrganizations(page, size) + internal fun testlistOrganizations(page: Int?, size: Int?, expectedResultSize: Int) { + val organizationList = organizationApiService.listOrganizations(page, size) logger.info("Organization list retrieved contains : ${organizationList.size} elements") assertEquals(expectedResultSize, organizationList.size) } diff --git a/organization/src/integrationTest/kotlin/com/cosmotech/organization/service/OrganizationServiceRBACTest.kt b/organization/src/integrationTest/kotlin/com/cosmotech/organization/service/OrganizationServiceRBACTest.kt index a9a748c51..6b615d4f5 100644 --- a/organization/src/integrationTest/kotlin/com/cosmotech/organization/service/OrganizationServiceRBACTest.kt +++ b/organization/src/integrationTest/kotlin/com/cosmotech/organization/service/OrganizationServiceRBACTest.kt @@ -22,8 +22,10 @@ import com.cosmotech.api.utils.getCurrentAuthenticatedUserName import com.cosmotech.organization.OrganizationApiServiceInterface import com.cosmotech.organization.domain.Organization import com.cosmotech.organization.domain.OrganizationAccessControl +import com.cosmotech.organization.domain.OrganizationCreationRequest import com.cosmotech.organization.domain.OrganizationRole import com.cosmotech.organization.domain.OrganizationSecurity +import com.cosmotech.organization.domain.UpdateOrganizationRequest import com.redis.om.spring.RediSearchIndexer import io.mockk.every import io.mockk.junit5.MockKExtension @@ -85,16 +87,16 @@ class OrganizationServiceRBACTest : CsmRedisTestBase() { ) .map { (role, shouldThrow) -> DynamicTest.dynamicTest("Test RBAC findAllOrganizations : $role") { - organizationApiService.registerOrganization( + organizationApiService.createOrganization( mockOrganizationWithRole(id = TEST_USER_MAIL, role = role)) - val organizations = organizationApiService.findAllOrganizations(null, null) + val organizations = organizationApiService.listOrganizations(null, null) assertEquals(shouldThrow, organizations.size) } } @TestFactory - fun `test RBAC findOrganizationById`() = + fun `test RBAC getOrganization`() = mapOf( ROLE_VIEWER to false, ROLE_EDITOR to false, @@ -104,30 +106,28 @@ class OrganizationServiceRBACTest : CsmRedisTestBase() { ROLE_ADMIN to false, ) .map { (role, shouldThrow) -> - DynamicTest.dynamicTest("Test RBAC findOrganizationById : $role") { + DynamicTest.dynamicTest("Test RBAC getOrganization : $role") { every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL val organization = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( mockOrganizationWithRole(TEST_USER_MAIL, role)) if (shouldThrow) { val exception = assertThrows { - organizationApiService.findOrganizationById(organization.id!!) + organizationApiService.getOrganization(organization.id) } assertEquals( - "RBAC ${organization.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organization.id} - User does not have permission $PERMISSION_READ", exception.message) } else { - assertDoesNotThrow { - organizationApiService.findOrganizationById(organization.id!!) - } + assertDoesNotThrow { organizationApiService.getOrganization(organization.id) } } } } @TestFactory - fun `test RBAC unregisterOrganization`() = + fun `test RBAC deleteOrganization`() = mapOf( ROLE_VIEWER to true, ROLE_EDITOR to true, @@ -137,23 +137,21 @@ class OrganizationServiceRBACTest : CsmRedisTestBase() { ROLE_ADMIN to false, ) .map { (role, shouldThrow) -> - DynamicTest.dynamicTest("Test RBAC unregisterOrganization : $role") { + DynamicTest.dynamicTest("Test RBAC deleteOrganization : $role") { val organization = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( mockOrganizationWithRole(TEST_USER_MAIL, role)) if (shouldThrow) { val exception = assertThrows { - organizationApiService.unregisterOrganization(organization.id!!) + organizationApiService.deleteOrganization(organization.id) } assertEquals( - "RBAC ${organization.id!!} - User does not have permission $PERMISSION_DELETE", + "RBAC ${organization.id} - User does not have permission $PERMISSION_DELETE", exception.message) } else { - assertDoesNotThrow { - organizationApiService.unregisterOrganization(organization.id!!) - } + assertDoesNotThrow { organizationApiService.deleteOrganization(organization.id) } } } } @@ -171,23 +169,22 @@ class OrganizationServiceRBACTest : CsmRedisTestBase() { .map { (role, shouldThrow) -> DynamicTest.dynamicTest("Test RBAC updateOrganization : $role") { val organization = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( mockOrganizationWithRole(id = TEST_USER_MAIL, role = role)) if (shouldThrow) { val exception = assertThrows { organizationApiService.updateOrganization( - organization.id!!, - mockOrganizationWithRole(id = TEST_USER_MAIL, role = role)) + organization.id, UpdateOrganizationRequest("name")) } assertEquals( - "RBAC ${organization.id!!} - User does not have permission $PERMISSION_WRITE", + "RBAC ${organization.id} - User does not have permission $PERMISSION_WRITE", exception.message) } else { assertDoesNotThrow { organizationApiService.updateOrganization( - organization.id!!, mockOrganizationWithRole(id = TEST_USER_MAIL, role = role)) + organization.id, UpdateOrganizationRequest("name")) } } } @@ -206,20 +203,20 @@ class OrganizationServiceRBACTest : CsmRedisTestBase() { .map { (role, shouldThrow) -> DynamicTest.dynamicTest("Test RBAC getOrganizationPermissions : $role") { val organization = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( mockOrganizationWithRole(TEST_USER_MAIL, role)) if (shouldThrow) { val exception = assertThrows { - organizationApiService.getOrganizationPermissions(organization.id!!, role) + organizationApiService.getOrganizationPermissions(organization.id, role) } assertEquals( - "RBAC ${organization.id!!} - User does not have permission $PERMISSION_READ_SECURITY", + "RBAC ${organization.id} - User does not have permission $PERMISSION_READ_SECURITY", exception.message) } else assertDoesNotThrow { - organizationApiService.getOrganizationPermissions(organization.id!!, role) + organizationApiService.getOrganizationPermissions(organization.id, role) } } } @@ -237,27 +234,27 @@ class OrganizationServiceRBACTest : CsmRedisTestBase() { .map { (role, shouldThrow) -> DynamicTest.dynamicTest("Test RBAC getOrganizationSecurity : $role") { val organization = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( mockOrganizationWithRole(TEST_USER_MAIL, role)) if (shouldThrow) { val exception = assertThrows { - organizationApiService.getOrganizationSecurity(organization.id!!) + organizationApiService.getOrganizationSecurity(organization.id) } assertEquals( - "RBAC ${organization.id!!} - User does not have permission $PERMISSION_READ_SECURITY", + "RBAC ${organization.id} - User does not have permission $PERMISSION_READ_SECURITY", exception.message) } else { assertDoesNotThrow { - organizationApiService.getOrganizationSecurity(organization.id!!) + organizationApiService.getOrganizationSecurity(organization.id) } } } } @TestFactory - fun `test RBAC setOrganizationDefaultSecurity`() = + fun `test RBAC updateOrganizationDefaultSecurity`() = mapOf( ROLE_VIEWER to true, ROLE_EDITOR to true, @@ -267,31 +264,31 @@ class OrganizationServiceRBACTest : CsmRedisTestBase() { ROLE_ADMIN to false, ) .map { (role, shouldThrow) -> - DynamicTest.dynamicTest("Test RBAC setOrganizationDefaultSecurity : $role") { + DynamicTest.dynamicTest("Test RBAC updateOrganizationDefaultSecurity : $role") { val organization = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( mockOrganizationWithRole(TEST_USER_MAIL, role)) if (shouldThrow) { val exception = assertThrows { - organizationApiService.setOrganizationDefaultSecurity( - organization.id!!, OrganizationRole(role)) + organizationApiService.updateOrganizationDefaultSecurity( + organization.id, OrganizationRole(role)) } assertEquals( - "RBAC ${organization.id!!} - User does not have permission $PERMISSION_WRITE_SECURITY", + "RBAC ${organization.id} - User does not have permission $PERMISSION_WRITE_SECURITY", exception.message) } else { assertDoesNotThrow { - organizationApiService.setOrganizationDefaultSecurity( - organization.id!!, OrganizationRole(role)) + organizationApiService.updateOrganizationDefaultSecurity( + organization.id, OrganizationRole(role)) } } } } @TestFactory - fun `test RBAC addOrganizationAccessControl`() = + fun `test RBAC createOrganizationAccessControl`() = mapOf( ROLE_VIEWER to true, ROLE_EDITOR to true, @@ -301,24 +298,24 @@ class OrganizationServiceRBACTest : CsmRedisTestBase() { ROLE_ADMIN to false, ) .map { (role, shouldThrow) -> - DynamicTest.dynamicTest("Test RBAC addOrganizationAccessControl : $role") { + DynamicTest.dynamicTest("Test RBAC createOrganizationAccessControl : $role") { val organization = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( mockOrganizationWithRole(TEST_USER_MAIL, role)) if (shouldThrow) { val exception = assertThrows { - organizationApiService.addOrganizationAccessControl( - organization.id!!, OrganizationAccessControl("id", role)) + organizationApiService.createOrganizationAccessControl( + organization.id, OrganizationAccessControl("id", role)) } assertEquals( - "RBAC ${organization.id!!} - User does not have permission $PERMISSION_WRITE_SECURITY", + "RBAC ${organization.id} - User does not have permission $PERMISSION_WRITE_SECURITY", exception.message) } else { assertDoesNotThrow { - organizationApiService.addOrganizationAccessControl( - organization.id!!, OrganizationAccessControl("id", role)) + organizationApiService.createOrganizationAccessControl( + organization.id, OrganizationAccessControl("id", role)) } } } @@ -337,29 +334,29 @@ class OrganizationServiceRBACTest : CsmRedisTestBase() { .map { (role, shouldThrow) -> DynamicTest.dynamicTest("Test RBAC getOrganizationAccessControl : $role") { val organization = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( mockOrganizationWithRole(TEST_USER_MAIL, role)) if (shouldThrow) { val exception = assertThrows { organizationApiService.getOrganizationAccessControl( - organization.id!!, TEST_USER_MAIL) + organization.id, TEST_USER_MAIL) } assertEquals( - "RBAC ${organization.id!!} - User does not have permission $PERMISSION_READ_SECURITY", + "RBAC ${organization.id} - User does not have permission $PERMISSION_READ_SECURITY", exception.message) } else { assertDoesNotThrow { organizationApiService.getOrganizationAccessControl( - organization.id!!, TEST_USER_MAIL) + organization.id, TEST_USER_MAIL) } } } } @TestFactory - fun `test RBAC removeOrganizationAccessControl`() = + fun `test RBAC deleteOrganizationAccessControl`() = mapOf( ROLE_VIEWER to true, ROLE_EDITOR to true, @@ -369,24 +366,24 @@ class OrganizationServiceRBACTest : CsmRedisTestBase() { ROLE_ADMIN to false, ) .map { (role, shouldThrow) -> - DynamicTest.dynamicTest("Test RBAC removeOrganizationAccessControl : $role") { + DynamicTest.dynamicTest("Test RBAC deleteOrganizationAccessControl : $role") { val organization = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( mockOrganizationWithRole(TEST_USER_MAIL, role)) if (shouldThrow) { val exception = assertThrows { - organizationApiService.removeOrganizationAccessControl( - organization.id!!, TEST_USER_MAIL) + organizationApiService.deleteOrganizationAccessControl( + organization.id, TEST_USER_MAIL) } assertEquals( - "RBAC ${organization.id!!} - User does not have permission $PERMISSION_WRITE_SECURITY", + "RBAC ${organization.id} - User does not have permission $PERMISSION_WRITE_SECURITY", exception.message) } else { assertDoesNotThrow { - organizationApiService.removeOrganizationAccessControl( - organization.id!!, TEST_USER_MAIL) + organizationApiService.deleteOrganizationAccessControl( + organization.id, TEST_USER_MAIL) } } } @@ -405,29 +402,29 @@ class OrganizationServiceRBACTest : CsmRedisTestBase() { .map { (role, shouldThrow) -> DynamicTest.dynamicTest("Test RBAC updateOrganizationAccessControl : $role") { val organization = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( mockOrganizationWithRole(TEST_USER_MAIL, role)) if (shouldThrow) { val exception = assertThrows { organizationApiService.updateOrganizationAccessControl( - organization.id!!, TEST_USER_MAIL, OrganizationRole(role)) + organization.id, TEST_USER_MAIL, OrganizationRole(role)) } assertEquals( - "RBAC ${organization.id!!} - User does not have permission $PERMISSION_WRITE_SECURITY", + "RBAC ${organization.id} - User does not have permission $PERMISSION_WRITE_SECURITY", exception.message) } else { assertDoesNotThrow { organizationApiService.updateOrganizationAccessControl( - organization.id!!, TEST_USER_MAIL, OrganizationRole(role)) + organization.id, TEST_USER_MAIL, OrganizationRole(role)) } } } } @TestFactory - fun `test RBAC getOrganizationSecurityUsers`() = + fun `test RBAC listOrganizationSecurityUsers`() = mapOf( ROLE_VIEWER to true, ROLE_EDITOR to false, @@ -437,32 +434,30 @@ class OrganizationServiceRBACTest : CsmRedisTestBase() { ROLE_ADMIN to false, ) .map { (role, shouldThrow) -> - DynamicTest.dynamicTest("Test RBAC getOrganizationSecurityUsers : $role") { + DynamicTest.dynamicTest("Test RBAC listOrganizationSecurityUsers : $role") { val organization = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( mockOrganizationWithRole(TEST_USER_MAIL, role)) if (shouldThrow) { val exception = assertThrows { - organizationApiService.getOrganizationSecurityUsers(organization.id!!) + organizationApiService.listOrganizationSecurityUsers(organization.id) } assertEquals( - "RBAC ${organization.id!!} - User does not have permission $PERMISSION_READ_SECURITY", + "RBAC ${organization.id} - User does not have permission $PERMISSION_READ_SECURITY", exception.message) } else { assertDoesNotThrow { - organizationApiService.getOrganizationSecurityUsers(organization.id!!) + organizationApiService.listOrganizationSecurityUsers(organization.id) } } } } - fun mockOrganizationWithRole(id: String, role: String): Organization { - return Organization( - id = UUID.randomUUID().toString(), + fun mockOrganizationWithRole(id: String, role: String): OrganizationCreationRequest { + return OrganizationCreationRequest( name = "Organization Name", - ownerId = "my.account-tester@cosmotech.com", security = OrganizationSecurity( default = ROLE_NONE, diff --git a/organization/src/main/kotlin/com/cosmotech/organization/service/OrganizationServiceImpl.kt b/organization/src/main/kotlin/com/cosmotech/organization/service/OrganizationServiceImpl.kt index 9d84e3b7d..27a92d0eb 100644 --- a/organization/src/main/kotlin/com/cosmotech/organization/service/OrganizationServiceImpl.kt +++ b/organization/src/main/kotlin/com/cosmotech/organization/service/OrganizationServiceImpl.kt @@ -17,7 +17,6 @@ import com.cosmotech.api.rbac.getAllRolesDefinition import com.cosmotech.api.rbac.getCommonRolesDefinition import com.cosmotech.api.rbac.model.RbacAccessControl import com.cosmotech.api.rbac.model.RbacSecurity -import com.cosmotech.api.utils.changed import com.cosmotech.api.utils.constructPageRequest import com.cosmotech.api.utils.findAllPaginated import com.cosmotech.api.utils.getCurrentAccountIdentifier @@ -26,8 +25,10 @@ import com.cosmotech.organization.OrganizationApiServiceInterface import com.cosmotech.organization.domain.ComponentRolePermissions import com.cosmotech.organization.domain.Organization import com.cosmotech.organization.domain.OrganizationAccessControl +import com.cosmotech.organization.domain.OrganizationCreationRequest import com.cosmotech.organization.domain.OrganizationRole import com.cosmotech.organization.domain.OrganizationSecurity +import com.cosmotech.organization.domain.UpdateOrganizationRequest import com.cosmotech.organization.repository.OrganizationRepository import org.springframework.data.repository.findByIdOrNull import org.springframework.stereotype.Service @@ -40,7 +41,7 @@ class OrganizationServiceImpl( private val organizationRepository: OrganizationRepository ) : CsmPhoenixService(), OrganizationApiServiceInterface { - override fun findAllOrganizations(page: Int?, size: Int?): List { + override fun listOrganizations(page: Int?, size: Int?): List { val defaultPageSize = csmPlatformProperties.twincache.organization.defaultPageSize val pageable = constructPageRequest(page, size, defaultPageSize) val isAdmin = csmAdmin.verifyCurrentRolesAdmin() @@ -71,27 +72,36 @@ class OrganizationServiceImpl( return result } - override fun findOrganizationById(organizationId: String): Organization { + override fun getOrganization(organizationId: String): Organization { return updateSecurityVisibility(getVerifiedOrganization(organizationId, PERMISSION_READ)) } - override fun registerOrganization(organization: Organization): Organization { - logger.trace("Registering organization: {}", organization) + override fun createOrganization( + organizationCreationRequest: OrganizationCreationRequest + ): Organization { + logger.trace("Registering organization: {}", organizationCreationRequest) - if (organization.name.isNullOrBlank()) { + if (organizationCreationRequest.name.isBlank()) { throw IllegalArgumentException("Organization name must not be null or blank") } + val organizationId = idGenerator.generate("organization") + // val security = val createdOrganization = - organization.copy( - id = idGenerator.generate("organization"), - ownerId = getCurrentAuthenticatedUserName(csmPlatformProperties)) - createdOrganization.setRbac(csmRbac.initSecurity(organization.getRbac())) + Organization( + id = organizationId, + name = organizationCreationRequest.name, + ownerId = getCurrentAuthenticatedUserName(csmPlatformProperties), + security = + csmRbac + .initSecurity( + organizationCreationRequest.security.toGenericSecurity(organizationId)) + .toResourceSecurity()) return organizationRepository.save(createdOrganization) } - override fun unregisterOrganization(organizationId: String) { + override fun deleteOrganization(organizationId: String) { val organization = getVerifiedOrganization(organizationId, PERMISSION_DELETE) organizationRepository.delete(organization) this.eventPublisher.publishEvent(OrganizationUnregistered(this, organizationId)) @@ -99,22 +109,16 @@ class OrganizationServiceImpl( override fun updateOrganization( organizationId: String, - organization: Organization + updateOrganizationRequest: UpdateOrganizationRequest ): Organization { val existingOrganization = getVerifiedOrganization(organizationId, PERMISSION_WRITE) var hasChanged = false - if (organization.name != null && organization.changed(existingOrganization) { name }) { - existingOrganization.name = organization.name + if (updateOrganizationRequest.name != existingOrganization.name) { + existingOrganization.name = updateOrganizationRequest.name hasChanged = true } - if (organization.security != existingOrganization.security) { - logger.warn( - "Security modification has not been applied to organization $organizationId," + - " please refer to the appropriate security endpoints to perform this maneuver") - } - return if (hasChanged) { organizationRepository.save(existingOrganization) } else { @@ -122,7 +126,7 @@ class OrganizationServiceImpl( } } - override fun getAllPermissions(): List { + override fun listPermissions(): List { return getAllRolesDefinition().mapNotNull { ComponentRolePermissions(it.key, it.value) } } @@ -134,18 +138,19 @@ class OrganizationServiceImpl( override fun getOrganizationSecurity(organizationId: String): OrganizationSecurity { val organization = getVerifiedOrganization(organizationId, PERMISSION_READ_SECURITY) return organization.security - ?: throw CsmResourceNotFoundException("RBAC not defined for ${organization.id}") } - override fun setOrganizationDefaultSecurity( + override fun updateOrganizationDefaultSecurity( organizationId: String, organizationRole: OrganizationRole ): OrganizationSecurity { val organization = getVerifiedOrganization(organizationId, PERMISSION_WRITE_SECURITY) - val rbacSecurity = csmRbac.setDefault(organization.getRbac(), organizationRole.role) - organization.setRbac(rbacSecurity) + val rbacSecurity = + csmRbac.setDefault( + organization.security.toGenericSecurity(organizationId), organizationRole.role) + organization.security = rbacSecurity.toResourceSecurity() organizationRepository.save(organization) - return organization.security as OrganizationSecurity + return organization.security } override fun getOrganizationAccessControl( @@ -153,29 +158,34 @@ class OrganizationServiceImpl( identityId: String ): OrganizationAccessControl { val organization = getVerifiedOrganization(organizationId, PERMISSION_READ_SECURITY) - val rbacAccessControl = csmRbac.getAccessControl(organization.getRbac(), identityId) - return OrganizationAccessControl(rbacAccessControl.id, rbacAccessControl.role) + val rbacAccessControl = + csmRbac.getAccessControl( + organization.security.toGenericSecurity(organizationId), identityId) + return OrganizationAccessControl(id = rbacAccessControl.id, role = rbacAccessControl.role) } - override fun addOrganizationAccessControl( + override fun createOrganizationAccessControl( organizationId: String, organizationAccessControl: OrganizationAccessControl ): OrganizationAccessControl { val organization = getVerifiedOrganization(organizationId, PERMISSION_WRITE_SECURITY) - val users = getOrganizationSecurityUsers(organizationId) + val users = listOrganizationSecurityUsers(organizationId) if (users.contains(organizationAccessControl.id)) { throw IllegalArgumentException("User is already in this Organization security") } val rbacSecurity = csmRbac.setUserRole( - organization.getRbac(), organizationAccessControl.id, organizationAccessControl.role) - organization.setRbac(rbacSecurity) + organization.security.toGenericSecurity(organizationId), + organizationAccessControl.id, + organizationAccessControl.role) + organization.security = rbacSecurity.toResourceSecurity() organizationRepository.save(organization) val rbacAccessControl = - csmRbac.getAccessControl(organization.getRbac(), organizationAccessControl.id) - return OrganizationAccessControl(rbacAccessControl.id, rbacAccessControl.role) + csmRbac.getAccessControl( + organization.security.toGenericSecurity(organizationId), organizationAccessControl.id) + return OrganizationAccessControl(id = rbacAccessControl.id, role = rbacAccessControl.role) } override fun updateOrganizationAccessControl( @@ -185,27 +195,33 @@ class OrganizationServiceImpl( ): OrganizationAccessControl { val organization = getVerifiedOrganization(organizationId, PERMISSION_WRITE_SECURITY) csmRbac.checkUserExists( - organization.getRbac(), + organization.security.toGenericSecurity(organizationId), identityId, "User '$identityId' not found in organization $organizationId") val rbacSecurity = - csmRbac.setUserRole(organization.getRbac(), identityId, organizationRole.role) - organization.setRbac(rbacSecurity) + csmRbac.setUserRole( + organization.security.toGenericSecurity(organizationId), + identityId, + organizationRole.role) + organization.security = rbacSecurity.toResourceSecurity() organizationRepository.save(organization) - val rbacAccessControl = csmRbac.getAccessControl(organization.getRbac(), identityId) - return OrganizationAccessControl(rbacAccessControl.id, rbacAccessControl.role) + val rbacAccessControl = + csmRbac.getAccessControl( + organization.security.toGenericSecurity(organizationId), identityId) + return OrganizationAccessControl(id = rbacAccessControl.id, role = rbacAccessControl.role) } - override fun removeOrganizationAccessControl(organizationId: String, identityId: String) { + override fun deleteOrganizationAccessControl(organizationId: String, identityId: String) { val organization = getVerifiedOrganization(organizationId, PERMISSION_WRITE_SECURITY) - val rbacSecurity = csmRbac.removeUser(organization.getRbac(), identityId) - organization.setRbac(rbacSecurity) + val rbacSecurity = + csmRbac.removeUser(organization.security.toGenericSecurity(organizationId), identityId) + organization.security = rbacSecurity.toResourceSecurity() organizationRepository.save(organization) } - override fun getOrganizationSecurityUsers(organizationId: String): List { + override fun listOrganizationSecurityUsers(organizationId: String): List { val organization = getVerifiedOrganization(organizationId, PERMISSION_READ_SECURITY) - return csmRbac.getUsers(organization.getRbac()) + return csmRbac.getUsers(organization.security.toGenericSecurity(organizationId)) } override fun getVerifiedOrganization( @@ -215,7 +231,7 @@ class OrganizationServiceImpl( val organization = organizationRepository.findByIdOrNull(organizationId) ?: throw CsmResourceNotFoundException("Organization $organizationId does not exist!") - csmRbac.verify(organization.getRbac(), requiredPermission) + csmRbac.verify(organization.security.toGenericSecurity(organizationId), requiredPermission) return organization } @@ -224,44 +240,43 @@ class OrganizationServiceImpl( requiredPermissions: List ): Organization { val organization = getVerifiedOrganization(organizationId) - requiredPermissions.forEach { csmRbac.verify(organization.getRbac(), it) } + requiredPermissions.forEach { + csmRbac.verify(organization.security.toGenericSecurity(organizationId), it) + } return organization } fun updateSecurityVisibility(organization: Organization): Organization { - if (csmRbac.check(organization.getRbac(), PERMISSION_READ_SECURITY).not()) { + if (csmRbac + .check(organization.security.toGenericSecurity(organization.id), PERMISSION_READ_SECURITY) + .not()) { val username = getCurrentAccountIdentifier(csmPlatformProperties) - val retrievedAC = organization.security!!.accessControlList.firstOrNull { it.id == username } + val retrievedAC = organization.security.accessControlList.firstOrNull { it.id == username } return if (retrievedAC != null) { organization.copy( security = OrganizationSecurity( - default = organization.security!!.default, + default = organization.security.default, accessControlList = mutableListOf(retrievedAC))) } else { organization.copy( security = OrganizationSecurity( - default = organization.security!!.default, accessControlList = mutableListOf())) + default = organization.security.default, accessControlList = mutableListOf())) } } return organization } } -fun Organization.getRbac(): RbacSecurity { - return RbacSecurity( - this.id, - this.security?.default ?: ROLE_NONE, - this.security?.accessControlList?.map { RbacAccessControl(it.id, it.role) }?.toMutableList() - ?: mutableListOf()) -} +fun OrganizationSecurity?.toGenericSecurity(organizationId: String) = + RbacSecurity( + organizationId, + this?.default ?: ROLE_NONE, + this?.accessControlList?.map { RbacAccessControl(it.id, it.role) }?.toMutableList() + ?: mutableListOf()) -fun Organization.setRbac(rbacSecurity: RbacSecurity) { - this.security = - OrganizationSecurity( - rbacSecurity.default, - rbacSecurity.accessControlList - .map { OrganizationAccessControl(it.id, it.role) } - .toMutableList()) -} +fun RbacSecurity.toResourceSecurity() = + OrganizationSecurity( + this.default, + this.accessControlList.map { OrganizationAccessControl(it.id, it.role) }.toMutableList()) diff --git a/organization/src/main/openapi/organization.yaml b/organization/src/main/openapi/organization.yaml index c312e008d..0291b5430 100644 --- a/organization/src/main/openapi/organization.yaml +++ b/organization/src/main/openapi/organization.yaml @@ -1,8 +1,9 @@ openapi: 3.0.3 info: - title: "" - version: "" + title: "Cosmo Tech Organization Manager API" + description: "Cosmo Tech Organization Manager API" + version: "1.0.0" security: - oAuth2AuthCode: [] @@ -14,17 +15,17 @@ tags: paths: /organizations: post: - operationId: registerOrganization + operationId: createOrganization tags: - organization - summary: Register a new organization + summary: create a new organization requestBody: - description: the Organization to register + description: the Organization to create required: true content: application/json: schema: - $ref: '#/components/schemas/Organization' + $ref: '#/components/schemas/OrganizationCreationRequest' examples: NewOrganizationIn: $ref: '#/components/examples/NewOrganizationIn' @@ -48,7 +49,7 @@ paths: "400": description: Bad request get: - operationId: findAllOrganizations + operationId: listOrganizations parameters: - name: page in: query @@ -87,7 +88,7 @@ paths: schema: type: string get: - operationId: findOrganizationById + operationId: getOrganization tags: - organization summary: Get the details of an Organization @@ -114,13 +115,13 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Organization' + $ref: '#/components/schemas/UpdateOrganizationRequest' examples: ChangeName: summary: Change Name of Organization - description: Change the name of Organization 1 to CosmoTech Digital Twins Engine + description: Change the name of an organization value: - name: "CosmoTech Digital Twins Engine" + name: "Digital Twin Solutions" application/yaml: schema: type: string @@ -128,9 +129,9 @@ paths: examples: ChangeName: summary: Change Name of Organization - description: Change the name of Organization 1 to CosmoTech Digital Twins Engine + description: Change the name of an organization value: - name: "CosmoTech Digital Twins Engine" + name: "Digital Twin Solutions" responses: "200": description: the organization details @@ -139,17 +140,17 @@ paths: schema: $ref: '#/components/schemas/Organization' examples: - CosmoThreeUsers: - $ref: '#/components/examples/CosmoThreeUsers' + UpdatedOrganization: + $ref: '#/components/examples/UpdatedOrganization' "400": description: Bad request "404": description: the Organization specified is unknown or you don't have access to it delete: - operationId: unregisterOrganization + operationId: deleteOrganization tags: - organization - summary: Unregister an organization + summary: delete an organization responses: "204": description: Request succeeded @@ -158,7 +159,7 @@ paths: /organizations/permissions: get: - operationId: getAllPermissions + operationId: listPermissions tags: - organization summary: Get all permissions per components @@ -175,7 +176,6 @@ paths: permissions: $ref: '#/components/examples/Permissions' - /organizations/{organization_id}/permissions/{role}: parameters: - name: organization_id @@ -231,7 +231,7 @@ paths: $ref: '#/components/schemas/OrganizationSecurity' examples: OrganizationSecurity: - $ref: '#/components/examples/BreweryOrganizationSecurity' + $ref: '#/components/examples/OrganizationSecurity' "404": description: the Organization specified is unknown or you don't have access to it @@ -244,10 +244,10 @@ paths: schema: type: string post: - operationId: setOrganizationDefaultSecurity + operationId: updateOrganizationDefaultSecurity tags: - organization - summary: Set the Organization default security + summary: Update the Organization default security requestBody: description: This change the organization default security. The default security is the role assigned to any person not on the Access Control List. @@ -258,15 +258,15 @@ paths: schema: $ref: '#/components/schemas/OrganizationRole' examples: - BreweryOrganizationRole: - $ref: '#/components/examples/BreweryOrganizationRole' + DefaultRole: + $ref: '#/components/examples/DefaultRole' application/yaml: schema: type: string format: binary examples: - BreweryOrganizationRole: - $ref: '#/components/examples/BreweryOrganizationRole' + DefaultRole: + $ref: '#/components/examples/DefaultRole' responses: "201": description: The Organization default visibility @@ -275,8 +275,8 @@ paths: schema: $ref: '#/components/schemas/OrganizationSecurity' examples: - WriterOrganizationSecurity: - $ref: '#/components/examples/BreweryDefaultSecurityRoleWriter' + UpdatedSecurity: + $ref: '#/components/examples/UpdatedSecurity' "404": description: the Organization specified is unknown or you don't have access to it @@ -289,7 +289,7 @@ paths: schema: type: string post: - operationId: addOrganizationAccessControl + operationId: createOrganizationAccessControl tags: - organization summary: Add a control access to the Organization @@ -302,14 +302,14 @@ paths: $ref: '#/components/schemas/OrganizationAccessControl' examples: OrganizationAccess: - $ref: '#/components/examples/BreweryOrganizationAccessControl' + $ref: '#/components/examples/OrganizationAccess' application/yaml: schema: type: string format: binary examples: OrganizationAccess: - $ref: '#/components/examples/BreweryOrganizationAccessControl' + $ref: '#/components/examples/OrganizationAccess' responses: "201": description: The Organization access @@ -319,7 +319,7 @@ paths: $ref: '#/components/schemas/OrganizationAccessControl' examples: OrganizationAccessControl: - $ref: '#/components/examples/BreweryOrganizationAccessControl' + $ref: '#/components/examples/OrganizationAccessControl' "404": description: the Organization specified is unknown or you don't have access to it @@ -351,7 +351,7 @@ paths: $ref: '#/components/schemas/OrganizationAccessControl' examples: OrganizationAccessControl: - $ref: '#/components/examples/BreweryOrganizationAccessControl' + $ref: '#/components/examples/OrganizationAccessControl' "404": description: The Organization or user specified is unknown or you don't have access to it patch: @@ -367,8 +367,8 @@ paths: schema: $ref: '#/components/schemas/OrganizationRole' examples: - BreweryOrganizationRole: - $ref: '#/components/examples/BreweryOrganizationRole' + UpdateRole: + $ref: '#/components/examples/UpdateRole' responses: "200": description: The Organization access @@ -377,12 +377,12 @@ paths: schema: $ref: '#/components/schemas/OrganizationAccessControl' examples: - OrganizationAccessControl: - $ref: '#/components/examples/BreweryOrganizationAccessControl' + UpdatedAccessControl: + $ref: '#/components/examples/UpdatedAccessControl' "404": description: The Organization specified is unknown or you don't have access to it delete: - operationId: removeOrganizationAccessControl + operationId: deleteOrganizationAccessControl tags: - organization summary: Remove the specified access from the given Organization @@ -401,7 +401,7 @@ paths: schema: type: string get: - operationId: getOrganizationSecurityUsers + operationId: listOrganizationSecurityUsers tags: - organization summary: Get the Organization security users list @@ -415,8 +415,8 @@ paths: items: type: string example: - - alice@mycompany.com - - bob@mycompany.com + - "alice@mycompany.com" + - "bob@mycompany.com" "404": description: the Organization specified is unknown or you don't have access to it @@ -431,6 +431,7 @@ components: tokenUrl: "https://example.com/token" scopes: {} schemas: + # Base Organization object that includes all information Organization: type: object x-class-extra-annotation: "@com.redis.om.spring.annotations.Document" @@ -453,11 +454,40 @@ components: x-field-extra-annotation: "@com.redis.om.spring.annotations.Indexed" allOf: - $ref: '#/components/schemas/OrganizationSecurity' -# required: -# - name + required: + - id + - name + - ownerId + - security + + # CRUD Operation Schemas + OrganizationCreationRequest: + type: object + description: Request object for creating a new organization + properties: + name: + type: string + x-field-extra-annotation: "@com.redis.om.spring.annotations.Searchable" + description: the Organization name + security: + $ref: '#/components/schemas/OrganizationSecurity' + required: + - name + + UpdateOrganizationRequest: + type: object + description: Request object for updating an organization + properties: + name: + type: string + description: the Organization name + required: + - name + + # Security Operation Schemas OrganizationSecurity: type: object - description: the Organization security information + description: Response object for organization security information properties: default: type: string @@ -472,9 +502,10 @@ components: required: - default - accessControlList + OrganizationAccessControl: type: object - description: a Organization access control item + description: Response object for organization access control properties: id: type: string @@ -487,6 +518,7 @@ components: required: - id - role + OrganizationRole: type: object description: the Organization Role @@ -496,6 +528,7 @@ components: description: the Organization Role required: - role + ComponentRolePermissions: type: object description: a RBAC by component @@ -508,164 +541,188 @@ components: type: array items: type: string + required: + - component + - roles + examples: NewOrganizationIn: summary: Create a new organization - description: Create a new organization with 2 users + description: Create a new organization with security settings value: - name: Cosmo Tech + name: "Digital Twin Solutions" security: - default: reader + default: "viewer" accessControlList: - - id: "jane.doe@cosmotech.com" + - id: "admin@company.com" + role: "admin" + - id: "editor@company.com" role: "editor" - - id: "john.doe@cosmotech.com" - role: "viewer" + CosmoOrganization: - summary: Cosmo Tech Organization example - description: Cosmo Tech Organization example + summary: Organization response example + description: Example of an organization response with full details value: - id: "1" - name: Cosmo Tech - ownerId: "1" + id: "org-123" + name: "Digital Twin Solutions" + ownerId: "admin-user-123" security: - default: reader + default: "viewer" accessControlList: - - id: "jane.doe@cosmotech.com" + - id: "admin@company.com" + role: "admin" + - id: "editor@company.com" role: "editor" - - id: "john.doe@cosmotech.com" - role: "viewer" - BreweryOrganizationSecurity: - summary: Brewery Organization security - description: Brewery Organization security example - value: - default: "viewer" - accessControlList: - - id: "bob@mycosmocompany.com" - role: "editor" - BreweryOrganizationAccessControl: - summary: Set an access control. - description: Set an access control for a user to an organization. - value: - id: "bob@mycompany.com" - role: "editor" - BreweryOrganizationRole: - summary: Set an Organization Role. - description: Set an role for a user to an organization. - value: - role: "editor" - CosmoThreeUsers: - summary: Cosmo Tech Organization with 3 users - description: Cosmo Tech Organization 3 users example + + UpdatedOrganization: + summary: Updated organization example + description: Example of an organization after update value: - id: "1" - name: Cosmo Tech + id: "org-123" + name: "Updated Digital Twin Solutions" + ownerId: "admin-user-123" security: - default: reader + default: "viewer" accessControlList: - - id: "bob.doe@cosmotech.com" - role: "viewer" - - id: "alice.doe@cosmotech.com" - role: "viewer" - - id: "xavier.doe@cosmotech.com" + - id: "admin@company.com" + role: "admin" + - id: "editor@company.com" role: "editor" + TwoOrganizations: - summary: Two Orgnizations - description: Two Organizations example + summary: Multiple organizations example + description: Example of multiple organizations in a list value: - - id: "1" - name: Cosmo Tech - ownerId: "1" + - id: "org-123" + name: "Digital Twin Solutions" + ownerId: "admin-user-123" security: - default: reader + default: "viewer" accessControlList: - - id: "bob.doe@cosmotech.com" - role: "editor" - - id: "alice.doe@cosmotech.com" - role: "viewer" - - id: "2" - name: Phoenix + - id: "admin@company.com" + role: "admin" + - id: "org-456" + name: "Supply Chain Analytics" + ownerId: "admin-user-456" security: - default: rolereader + default: "viewer" accessControlList: - - id: "bob.doe@cosmotech.com" - role: "editor" - BreweryDefaultSecurityRoleWriter: - summary: Brewery Scenario Writer default security - description: Brewery Scenario example + - id: "manager@company.com" + role: "admin" + + OrganizationSecurity: + summary: Organization security example + description: Example of organization security settings + value: + default: "viewer" + accessControlList: + - id: "admin@company.com" + role: "admin" + - id: "editor@company.com" + role: "editor" + + OrganizationAccess: + summary: Organization access control example + description: Example of adding a new access control + value: + id: "new.user@company.com" + role: "editor" + + OrganizationAccessControl: + summary: Organization access control response + description: Example of access control response value: - default: "editor" + id: "user@company.com" + role: "editor" + + DefaultRole: + summary: Update default role + description: Example of updating the default role + value: + role: "viewer" + + UpdateRole: + summary: Update user role + description: Example of updating a user's role + value: + role: "editor" + + UpdatedAccessControl: + summary: Updated access control + description: Example of updated access control + value: + id: "user@company.com" + role: "editor" + + UpdatedSecurity: + summary: Updated security settings + description: Example of updated security settings + value: + default: "viewer" + accessControlList: + - id: "admin@company.com" + role: "admin" + - id: "editor@company.com" + role: "editor" + Permissions: - summary: Permissions - description: Permissions for Organization + summary: Component permissions + description: Example of component role permissions value: - - component: organization + - component: "organization" roles: none: [] viewer: - - read - - read_security - user: - - read - - read_security - - create_children + - "read" + - "read_security" editor: - - read - - read_security - - create_children - - write + - "read" + - "read_security" + - "write" admin: - - read - - read_security - - create_children - - write - - write_security - - delete - - component: workspace + - "read" + - "read_security" + - "write" + - "write_security" + - "delete" + - component: "workspace" roles: none: [] viewer: - - read - - read_security - user: - - read - - read_security - - create_children + - "read" + - "read_security" editor: - - read - - read_security - - create_children - - write + - "read" + - "read_security" + - "write" admin: - - read - - read_security - - create_children - - write - - write_security - - delete - - component: runner + - "read" + - "read_security" + - "write" + - "write_security" + - "delete" + - component: "runner" roles: none: [] viewer: - - read - - read_security + - "read" + - "read_security" editor: - - read - - read_security - - launch - - write + - "read" + - "read_security" + - "launch" + - "write" validator: - - read - - read_security - - launch - - write - - validate + - "read" + - "read_security" + - "launch" + - "write" + - "validate" admin: - - read - - read_security - - launch - - write - - validate - - write_security - - delete - + - "read" + - "read_security" + - "launch" + - "write" + - "validate" + - "write_security" + - "delete" diff --git a/organization/src/test/kotlin/com/cosmotech/organization/service/OrganizationServiceImplTests.kt b/organization/src/test/kotlin/com/cosmotech/organization/service/OrganizationServiceImplTests.kt index 1da3b9921..b42af6f0d 100644 --- a/organization/src/test/kotlin/com/cosmotech/organization/service/OrganizationServiceImplTests.kt +++ b/organization/src/test/kotlin/com/cosmotech/organization/service/OrganizationServiceImplTests.kt @@ -24,6 +24,7 @@ import com.cosmotech.organization.domain.Organization import com.cosmotech.organization.domain.OrganizationAccessControl import com.cosmotech.organization.domain.OrganizationRole import com.cosmotech.organization.domain.OrganizationSecurity +import com.cosmotech.organization.domain.UpdateOrganizationRequest import com.cosmotech.organization.repository.OrganizationRepository import io.mockk.MockKAnnotations import io.mockk.every @@ -80,7 +81,7 @@ class OrganizationServiceImplTests { val rbacSecurity = RbacSecurity( organization.id, - organization.security!!.default, + organization.security.default!!, mutableListOf(RbacAccessControl("ID", ROLE_VIEWER))) val rbacAccessControl = RbacAccessControl(USER_ID, ROLE_ADMIN) every { organizationRepository.findByIdOrNull(any()) } returns organization @@ -88,15 +89,15 @@ class OrganizationServiceImplTests { every { csmRbac.checkUserExists(any(), any(), any()) } returns rbacAccessControl every { csmRbac.setUserRole(any(), any(), any()) } returns rbacSecurity - assertEquals(organization.security?.default, rbacSecurity.default) + assertEquals(organization.security.default, rbacSecurity.default) assertEquals( - organization.security!!.accessControlList[0].id, rbacSecurity.accessControlList[0].id) + organization.security.accessControlList!![0].id, rbacSecurity.accessControlList[0].id) assertEquals( - organization.security!!.accessControlList[0].role, rbacSecurity.accessControlList[0].role) + organization.security.accessControlList!![0].role, rbacSecurity.accessControlList[0].role) every { organizationRepository.save(any()) } returns organization every { csmRbac.getAccessControl(any(), any()) } returns rbacAccessControl - var organizationAccessControl = + val organizationAccessControl = organizationApiService.updateOrganizationAccessControl( ORGANIZATION_ID, USER_ID, organizationRole) assertEquals(organizationAccessControl.id, rbacAccessControl.id) @@ -120,7 +121,7 @@ class OrganizationServiceImplTests { @Test fun `getRbac extension test`() { val organization = getMockOrganization() - val rbacExtension = organization.getRbac() + val rbacExtension = organization.security.toGenericSecurity(organization.id) val expectedRbac = RbacSecurity( id = organization.id, @@ -129,15 +130,6 @@ class OrganizationServiceImplTests { assertEquals(expectedRbac, rbacExtension) } - @Test - fun `getRbac extension test with empty Rbac`() { - val organization = Organization(id = "myTestOrganization") - val rbacExtension = organization.getRbac() - val expectedRbac = - RbacSecurity(id = organization.id, default = ROLE_NONE, accessControlList = mutableListOf()) - assertEquals(expectedRbac, rbacExtension) - } - @Test fun `setRbac extension test`() { val organization = getMockOrganization() @@ -146,8 +138,8 @@ class OrganizationServiceImplTests { id = organization.id, default = ROLE_VIEWER, accessControlList = mutableListOf(RbacAccessControl(id = "ID2", role = ROLE_ADMIN))) - organization.setRbac(newRbacSecurity) - assertEquals(newRbacSecurity, organization.getRbac()) + organization.security = newRbacSecurity.toResourceSecurity() + assertEquals(newRbacSecurity, organization.security.toGenericSecurity(organization.id)) val expectedOrganizationSecurity = OrganizationSecurity( @@ -168,7 +160,7 @@ class OrganizationServiceImplTests { .map { (role, shouldThrow) -> rbacTest("Test RBAC read: $role", role, shouldThrow) { every { organizationRepository.findByIdOrNull(any()) } returns it - organizationApiService.findOrganizationById(it.id!!) + organizationApiService.getOrganization(it.id) } } @@ -185,7 +177,7 @@ class OrganizationServiceImplTests { rbacTest("Test RBAC unregister : $role", role, shouldThrow) { every { organizationRepository.findByIdOrNull(any()) } returns it every { organizationRepository.delete(any()) } returns Unit - organizationApiService.unregisterOrganization(it.id!!) + organizationApiService.deleteOrganization(it.id) } } @@ -202,8 +194,7 @@ class OrganizationServiceImplTests { rbacTest("Test RBAC update : $role", role, shouldThrow) { every { organizationRepository.findByIdOrNull(any()) } returns it every { organizationRepository.save(any()) } returns it - organizationApiService.updateOrganization( - it.id!!, makeOrganizationWithRole(it.id!!, "modifiedOrganization", role)) + organizationApiService.updateOrganization(it.id, UpdateOrganizationRequest("toto")) } } @@ -219,7 +210,7 @@ class OrganizationServiceImplTests { .map { (role, shouldThrow) -> rbacTest("Test RBAC getOrganizationSecurity : $role", role, shouldThrow) { every { organizationRepository.findByIdOrNull(any()) } returns it - organizationApiService.getOrganizationSecurity(it.id!!) + organizationApiService.getOrganizationSecurity(it.id) } } @@ -236,7 +227,8 @@ class OrganizationServiceImplTests { rbacTest("Test RBAC setOrganizationDefaultSecurity : $role", role, shouldThrow) { every { organizationRepository.findByIdOrNull(any()) } returns it every { organizationRepository.save(any()) } returns it - organizationApiService.setOrganizationDefaultSecurity(it.id!!, OrganizationRole(role)) + organizationApiService.updateOrganizationDefaultSecurity( + it.id, OrganizationRole(role)) } } @@ -252,7 +244,7 @@ class OrganizationServiceImplTests { .map { (role, shouldThrow) -> rbacTest("Test RBAC getOrganizationAccessControl : $role", role, shouldThrow) { every { organizationRepository.findByIdOrNull(any()) } returns it - organizationApiService.getOrganizationAccessControl(it.id!!, USER_ID) + organizationApiService.getOrganizationAccessControl(it.id, USER_ID) } } @@ -269,8 +261,8 @@ class OrganizationServiceImplTests { rbacTest("Test RBAC addOrganizationAccessControl : $role", role, shouldThrow) { every { organizationRepository.findByIdOrNull(any()) } returns it every { organizationRepository.save(any()) } returns it - organizationApiService.addOrganizationAccessControl( - it.id!!, OrganizationAccessControl("id", "viewer")) + organizationApiService.createOrganizationAccessControl( + it.id, OrganizationAccessControl("id", "viewer")) } } @@ -288,7 +280,7 @@ class OrganizationServiceImplTests { every { organizationRepository.findByIdOrNull(any()) } returns it every { organizationRepository.save(any()) } returns it organizationApiService.updateOrganizationAccessControl( - it.id!!, "2$USER_ID", OrganizationRole("user")) + it.id, "2$USER_ID", OrganizationRole("user")) } } @@ -305,7 +297,7 @@ class OrganizationServiceImplTests { rbacTest("Test RBAC removeOrganizationAccessControl : $role", role, shouldThrow) { every { organizationRepository.findByIdOrNull(any()) } returns it every { organizationRepository.save(any()) } returns it - organizationApiService.removeOrganizationAccessControl(it.id!!, "2$USER_ID") + organizationApiService.deleteOrganizationAccessControl(it.id, "2$USER_ID") } } @@ -321,7 +313,7 @@ class OrganizationServiceImplTests { .map { (role, shouldThrow) -> rbacTest("Test RBAC get users with role : $role", role, shouldThrow) { every { organizationRepository.findByIdOrNull(any()) } returns it - organizationApiService.getOrganizationSecurityUsers(it.id!!) + organizationApiService.listOrganizationSecurityUsers(it.id) } } @@ -331,7 +323,7 @@ class OrganizationServiceImplTests { shouldThrow: Boolean, testLambda: (organization: Organization) -> Unit ): DynamicTest? { - val organization = makeOrganizationWithRole("id", USER_ID, role) + val organization = makeOrganizationRequestWithRole(USER_ID, role) return DynamicTest.dynamicTest(name) { if (shouldThrow) { assertThrows { testLambda(organization) } @@ -341,27 +333,27 @@ class OrganizationServiceImplTests { } } - fun makeOrganizationWithRole(id: String, name: String, role: String): Organization { + fun makeOrganizationRequestWithRole(name: String, role: String): Organization { return Organization( - id = id, - name = name, - ownerId = name, + id = "o-123456789", + name = "test-orga", + ownerId = USER_ID, security = OrganizationSecurity( default = "none", accessControlList = mutableListOf( OrganizationAccessControl(name, role), - OrganizationAccessControl("2$name", "viewer")))) + OrganizationAccessControl("2$name", "viewer"), + OrganizationAccessControl("admin", ROLE_ADMIN)))) } fun getMockOrganization(): Organization { - val organization = Organization() - organization.id = ORGANIZATION_ID - val organizationSecurity = + val security = OrganizationSecurity( ROLE_VIEWER, mutableListOf(OrganizationAccessControl("ID", ROLE_VIEWER))) - organization.security = organizationSecurity + val organization = + Organization(id = ORGANIZATION_ID, name = "name", ownerId = "ownerId", security = security) return organization } } diff --git a/run/src/integrationTest/kotlin/com/cosmotech/run/service/RunServiceIntegrationTest.kt b/run/src/integrationTest/kotlin/com/cosmotech/run/service/RunServiceIntegrationTest.kt index 8bf921b16..286fb8d61 100644 --- a/run/src/integrationTest/kotlin/com/cosmotech/run/service/RunServiceIntegrationTest.kt +++ b/run/src/integrationTest/kotlin/com/cosmotech/run/service/RunServiceIntegrationTest.kt @@ -20,6 +20,7 @@ import com.cosmotech.dataset.domain.IngestionStatusEnum import com.cosmotech.organization.OrganizationApiServiceInterface import com.cosmotech.organization.domain.Organization import com.cosmotech.organization.domain.OrganizationAccessControl +import com.cosmotech.organization.domain.OrganizationCreationRequest import com.cosmotech.organization.domain.OrganizationSecurity import com.cosmotech.run.RunApiServiceInterface import com.cosmotech.run.RunContainerFactory @@ -110,7 +111,7 @@ class RunServiceIntegrationTest : CsmRunTestBase() { lateinit var connector: Connector lateinit var dataset: Dataset lateinit var solution: Solution - lateinit var organization: Organization + lateinit var organization: OrganizationCreationRequest lateinit var workspace: Workspace lateinit var connectorSaved: Connector @@ -140,21 +141,21 @@ class RunServiceIntegrationTest : CsmRunTestBase() { connector = mockConnector("Connector") connectorSaved = connectorApiService.registerConnector(connector) - organization = mockOrganization("Organization") - organizationSaved = organizationApiService.registerOrganization(organization) + organization = makeOrganizationRequest("Organization") + organizationSaved = organizationApiService.createOrganization(organization) - dataset = mockDataset(organizationSaved.id!!, "Dataset", connectorSaved) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + dataset = mockDataset(organizationSaved.id, "Dataset", connectorSaved) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) - solution = mockSolution(organizationSaved.id!!) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solution = mockSolution(organizationSaved.id) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) - workspace = mockWorkspace(organizationSaved.id!!, solutionSaved.id!!, "Workspace") - workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspace = mockWorkspace(organizationSaved.id, solutionSaved.id!!, "Workspace") + workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id, workspace) runnerSaved = mockRunner( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, solutionSaved.runTemplates[0].id, @@ -162,7 +163,7 @@ class RunServiceIntegrationTest : CsmRunTestBase() { mutableListOf(datasetSaved.id!!)) every { workflowService.launchRun(any(), any(), any(), any()) } returns - mockWorkflowRun(organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + mockWorkflowRun(organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) every { datasetApiService.findDatasetById(any(), any()) } returns datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS } every { datasetApiService.createSubDataset(any(), any(), any()) } returns mockk(relaxed = true) @@ -181,7 +182,7 @@ class RunServiceIntegrationTest : CsmRunTestBase() { } fun mockDataset( - organizationId: String = organizationSaved.id!!, + organizationId: String = organizationSaved.id, name: String = "Dataset", connector: Connector = connectorSaved, roleName: String = defaultName, @@ -200,7 +201,7 @@ class RunServiceIntegrationTest : CsmRunTestBase() { ) } - fun mockSolution(organizationId: String = organizationSaved.id!!): Solution { + fun mockSolution(organizationId: String = organizationSaved.id): Solution { return Solution( id = "solutionId", key = UUID.randomUUID().toString(), @@ -222,11 +223,9 @@ class RunServiceIntegrationTest : CsmRunTestBase() { SolutionAccessControl(id = CONNECTED_READER_USER, role = ROLE_ADMIN)))) } - fun mockOrganization(id: String = "organizationId"): Organization { - return Organization( - id = id, + fun makeOrganizationRequest(id: String = "organizationId"): OrganizationCreationRequest { + return OrganizationCreationRequest( name = "Organization Name", - ownerId = "my.account-tester@cosmotech.com", security = OrganizationSecurity( default = ROLE_NONE, @@ -237,7 +236,7 @@ class RunServiceIntegrationTest : CsmRunTestBase() { } fun mockWorkspace( - organizationId: String = organizationSaved.id!!, + organizationId: String = organizationSaved.id, solutionId: String = solutionSaved.id!!, name: String = "workspace" ): Workspace { @@ -256,7 +255,7 @@ class RunServiceIntegrationTest : CsmRunTestBase() { } fun mockRunner( - organizationId: String = organizationSaved.id!!, + organizationId: String = organizationSaved.id, workspaceId: String = workspaceSaved.id!!, solutionId: String = solutionSaved.id!!, runTemplateId: String = solutionSaved.runTemplates[0].id, @@ -307,41 +306,41 @@ class RunServiceIntegrationTest : CsmRunTestBase() { runSavedId = mockStartRun( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, solutionSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, solutionSaved.id!!) assertNotEquals("", runSavedId) logger.info("should find 1 Run") var runs = runApiService.listRuns( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, null, null) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, null, null) assertEquals(1, runs.size) logger.info("should find Run by id") val foundRun = runApiService.getRun( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, runSavedId) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, runSavedId) assertEquals(runSavedId, foundRun.id) - assertEquals(organizationSaved.id!!, foundRun.organizationId) + assertEquals(organizationSaved.id, foundRun.organizationId) assertEquals(workspaceSaved.id!!, foundRun.workspaceId) assertEquals(runnerSaved.id!!, foundRun.runnerId) logger.info("should create second Run") val runSaved2id = mockStartRun( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, solutionSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, solutionSaved.id!!) logger.info("should find all Runs by Runner id and assert size is 2") runs = runApiService.listRuns( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, null, null) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, null, null) assertEquals(2, runs.size) logger.info("should delete second Run and assert size is 1") runApiService.deleteRun( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, runSaved2id) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, runSaved2id) runs = runApiService.listRuns( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, null, null) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, null, null) assertEquals(1, runs.size) } @@ -352,32 +351,30 @@ class RunServiceIntegrationTest : CsmRunTestBase() { val expectedSize = 15 IntRange(1, numberOfRuns).forEach { - mockStartRun( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, solutionSaved.id!!) + mockStartRun(organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, solutionSaved.id!!) } logger.info("should find all Runs and assert there are $numberOfRuns") var runs = runApiService.listRuns( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, null, numberOfRuns * 2) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, null, numberOfRuns * 2) assertEquals(numberOfRuns, runs.size) logger.info("should find all Runs and assert it equals defaultPageSize: $defaultPageSize") runs = - runApiService.listRuns( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, 0, null) + runApiService.listRuns(organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, 0, null) assertEquals(defaultPageSize, runs.size) logger.info("should find all Runs and assert there are expected size: $expectedSize") runs = runApiService.listRuns( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, 0, expectedSize) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, 0, expectedSize) assertEquals(expectedSize, runs.size) logger.info("should find all Runs and assert it returns the second / last page") runs = runApiService.listRuns( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, 1, expectedSize) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, 1, expectedSize) assertEquals(numberOfRuns - expectedSize, runs.size) } @@ -385,17 +382,17 @@ class RunServiceIntegrationTest : CsmRunTestBase() { fun `test find All Runs with wrong pagination params`() { logger.info("Should throw IllegalArgumentException when page and size are zeros") assertThrows { - runApiService.listRuns(organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, 0, 0) + runApiService.listRuns(organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, 0, 0) } logger.info("Should throw IllegalArgumentException when page is negative") assertThrows { - runApiService.listRuns(organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, -1, 10) + runApiService.listRuns(organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, -1, 10) } logger.info("Should throw IllegalArgumentException when size is negative") assertThrows { - runApiService.listRuns(organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, 0, -1) + runApiService.listRuns(organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, 0, -1) } } @@ -408,7 +405,7 @@ class RunServiceIntegrationTest : CsmRunTestBase() { fun setUp() { runSavedId = mockStartRun( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, solutionSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, solutionSaved.id!!) assertTrue(adminRunStorageTemplate.existDB(runSavedId)) val internalResultServices = csmPlatformProperties.internalResultServices!! @@ -425,7 +422,7 @@ class RunServiceIntegrationTest : CsmRunTestBase() { @Test fun `test deleteRun should remove the database`() { runApiService.deleteRun( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, runSavedId) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, runSavedId) assertFalse(adminRunStorageTemplate.existDB(runSavedId)) } @@ -440,11 +437,7 @@ class RunServiceIntegrationTest : CsmRunTestBase() { val requestBody = SendRunDataRequest(id = tableName, data = data) val runDataResult = runApiService.sendRunData( - organizationSaved.id!!, - workspaceSaved.id!!, - runnerSaved.id!!, - runSavedId, - requestBody) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, runSavedId, requestBody) assertEquals(tableName.toDataTableName(false), runDataResult.tableName) @@ -467,7 +460,7 @@ class RunServiceIntegrationTest : CsmRunTestBase() { mapOf("param3" to JSONObject(mapOf("param4" to "value4")))) val requestBody = SendRunDataRequest(id = tableName, data = data) runApiService.sendRunData( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, runSavedId, requestBody) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, runSavedId, requestBody) assertTrue(readerRunStorageTemplate.existTable(tableName.toDataTableName(false))) @@ -481,7 +474,7 @@ class RunServiceIntegrationTest : CsmRunTestBase() { val data2 = listOf(mapOf("param1" to "value1"), mapOf("param2" to 2)) val requestBody2 = SendRunDataRequest(id = tableName2, data = data2) runApiService.sendRunData( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, runSavedId, requestBody2) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, runSavedId, requestBody2) assertTrue(readerRunStorageTemplate.existTable(tableName2.toDataTableName(false))) @@ -500,11 +493,11 @@ class RunServiceIntegrationTest : CsmRunTestBase() { val requestBody = SendRunDataRequest(id = tableName, data = data) val requestBody2 = SendRunDataRequest(id = tableName, data = data2) runApiService.sendRunData( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, runSavedId, requestBody) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, runSavedId, requestBody) assertFailsWith(SQLException::class, "Schema should have been rejected") { runApiService.sendRunData( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, runSavedId, requestBody2) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, runSavedId, requestBody2) } } @@ -516,10 +509,10 @@ class RunServiceIntegrationTest : CsmRunTestBase() { val requestBody = SendRunDataRequest(id = tableName, data = data) val requestBody2 = SendRunDataRequest(id = tableName, data = data2) runApiService.sendRunData( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, runSavedId, requestBody) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, runSavedId, requestBody) runApiService.sendRunData( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, runSavedId, requestBody2) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, runSavedId, requestBody2) val rows = readerRunStorageTemplate.queryForList( @@ -539,7 +532,7 @@ class RunServiceIntegrationTest : CsmRunTestBase() { assertFailsWith( IllegalArgumentException::class, "sendRunData must fail if data is an empty list") { runApiService.sendRunData( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, runSavedId, @@ -557,10 +550,10 @@ class RunServiceIntegrationTest : CsmRunTestBase() { val customDataId = "CustomData" val requestBody = SendRunDataRequest(id = customDataId, data = data) runApiService.sendRunData( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, runSavedId, requestBody) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, runSavedId, requestBody) val queryResult = runApiService.queryRunData( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, runSavedId, @@ -583,11 +576,11 @@ class RunServiceIntegrationTest : CsmRunTestBase() { val customDataId = "CustomData" val requestBody = SendRunDataRequest(id = customDataId, data = data) runApiService.sendRunData( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, runSavedId, requestBody) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, runSavedId, requestBody) val exception = assertThrows { runApiService.queryRunData( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, runSavedId, @@ -608,11 +601,11 @@ class RunServiceIntegrationTest : CsmRunTestBase() { val customDataId = "CustomData" val requestBody = SendRunDataRequest(id = customDataId, data = data) runApiService.sendRunData( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, runSavedId, requestBody) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, runSavedId, requestBody) var e = assertThrows { runApiService.queryRunData( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, runSavedId, @@ -623,7 +616,7 @@ class RunServiceIntegrationTest : CsmRunTestBase() { e = assertThrows { runApiService.queryRunData( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, runSavedId, @@ -642,16 +635,16 @@ class RunServiceIntegrationTest : CsmRunTestBase() { mapOf("param3" to mapOf("param4" to "value4"))) var requestBody = SendRunDataRequest(id = "table1", data = data) runApiService.sendRunData( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, runSavedId, requestBody) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, runSavedId, requestBody) requestBody = SendRunDataRequest(id = "table2", data = data) runApiService.sendRunData( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, runSavedId, requestBody) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, runSavedId, requestBody) requestBody = SendRunDataRequest(id = "table3", data = data) runApiService.sendRunData( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, runSavedId, requestBody) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, runSavedId, requestBody) val queryResult = runApiService.queryRunData( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, runSavedId, diff --git a/run/src/main/kotlin/com/cosmotech/run/RunContainerFactory.kt b/run/src/main/kotlin/com/cosmotech/run/RunContainerFactory.kt index cb99acc08..0d81e605c 100644 --- a/run/src/main/kotlin/com/cosmotech/run/RunContainerFactory.kt +++ b/run/src/main/kotlin/com/cosmotech/run/RunContainerFactory.kt @@ -103,7 +103,7 @@ class RunContainerFactory( workflowType: String, runId: String ): StartInfo { - val organization = organizationService.findOrganizationById(organizationId) + val organization = organizationService.getOrganization(organizationId) val workspace = workspaceService.findWorkspaceById(organizationId, workspaceId) if (workspace.solution.solutionId == null) throw CsmClientException( @@ -192,7 +192,7 @@ class RunContainerFactory( getCommonEnvVars( csmPlatformProperties, csmSimulationId, - organization.id!!, + organization.id, workspace.id!!, runner.id!!, runId) @@ -231,7 +231,7 @@ class RunContainerFactory( mapOf( CSM_JOB_ID_LABEL_KEY to runId, WORKFLOW_TYPE_LABEL to workflowType, - ORGANIZATION_ID_LABEL to organization.id!!, + ORGANIZATION_ID_LABEL to organization.id, WORKSPACE_ID_LABEL to workspace.id!!, RUNNER_ID_LABEL to runner.id!!, )) diff --git a/run/src/test/kotlin/com/cosmotech/run/ContainerFactoryTests.kt b/run/src/test/kotlin/com/cosmotech/run/ContainerFactoryTests.kt index 709060771..0d36e8228 100644 --- a/run/src/test/kotlin/com/cosmotech/run/ContainerFactoryTests.kt +++ b/run/src/test/kotlin/com/cosmotech/run/ContainerFactoryTests.kt @@ -4,8 +4,11 @@ package com.cosmotech.run import com.cosmotech.api.config.CsmPlatformProperties import com.cosmotech.api.containerregistry.ContainerRegistryService +import com.cosmotech.api.rbac.ROLE_ADMIN import com.cosmotech.organization.api.OrganizationApiService import com.cosmotech.organization.domain.Organization +import com.cosmotech.organization.domain.OrganizationAccessControl +import com.cosmotech.organization.domain.OrganizationSecurity import com.cosmotech.run.domain.ContainerResourceSizeInfo import com.cosmotech.run.domain.ContainerResourceSizing import com.cosmotech.run.domain.RunContainer @@ -189,7 +192,7 @@ class ContainerFactoryTests { "IDP_BASE_URL" to csmPlatformProperties.identityProvider.serverBaseUrl, "IDP_TENANT_ID" to csmPlatformProperties.identityProvider.identity.tenantId, "CSM_SIMULATION_ID" to CSM_SIMULATION_ID, - "CSM_ORGANIZATION_ID" to organization.id!!, + "CSM_ORGANIZATION_ID" to organization.id, "CSM_WORKSPACE_ID" to workspace.id!!, "CSM_RUNNER_ID" to runner.id!!, "CSM_RUN_ID" to runId, @@ -270,6 +273,9 @@ class ContainerFactoryTests { return Organization( id = "Organizationid", name = "Organization Test", - ) + ownerId = "ownerId", + security = + OrganizationSecurity( + ROLE_ADMIN, mutableListOf(OrganizationAccessControl("user", ROLE_ADMIN)))) } } diff --git a/runner/src/integrationTest/kotlin/com/cosmotech/runner/service/RunnerServiceIntegrationTest.kt b/runner/src/integrationTest/kotlin/com/cosmotech/runner/service/RunnerServiceIntegrationTest.kt index 89ddb5fe1..4a4a8b5d4 100644 --- a/runner/src/integrationTest/kotlin/com/cosmotech/runner/service/RunnerServiceIntegrationTest.kt +++ b/runner/src/integrationTest/kotlin/com/cosmotech/runner/service/RunnerServiceIntegrationTest.kt @@ -35,6 +35,7 @@ import com.cosmotech.dataset.repository.DatasetRepository import com.cosmotech.organization.api.OrganizationApiService import com.cosmotech.organization.domain.Organization import com.cosmotech.organization.domain.OrganizationAccessControl +import com.cosmotech.organization.domain.OrganizationCreationRequest import com.cosmotech.organization.domain.OrganizationSecurity import com.cosmotech.runner.RunnerApiServiceInterface import com.cosmotech.runner.domain.* @@ -106,7 +107,7 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { lateinit var connector: Connector lateinit var dataset: Dataset lateinit var solution: Solution - lateinit var organization: Organization + lateinit var organization: OrganizationCreationRequest lateinit var workspace: Workspace lateinit var runner: Runner lateinit var parentRunner: Runner @@ -158,22 +159,22 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { connector = makeConnector("Connector") connectorSaved = connectorApiService.registerConnector(connector) - organization = makeOrganization("Organization") - organizationSaved = organizationApiService.registerOrganization(organization) + organization = makeOrganizationRequest() + organizationSaved = organizationApiService.createOrganization(organization) - dataset = makeDataset(organizationSaved.id!!, "Dataset", connectorSaved) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + dataset = makeDataset(organizationSaved.id, "Dataset", connectorSaved) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() - solution = makeSolution(organizationSaved.id!!) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solution = makeSolution(organizationSaved.id) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) - workspace = makeWorkspace(organizationSaved.id!!, solutionSaved.id!!, "Workspace") - workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspace = makeWorkspace(organizationSaved.id, solutionSaved.id!!, "Workspace") + workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id, workspace) parentRunner = makeRunner( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, "RunnerParent", @@ -181,11 +182,11 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { parametersValues = mutableListOf(runTemplateParameterValue1)) parentRunnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, parentRunner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, parentRunner) runner = makeRunner( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, name = "Runner", @@ -193,7 +194,7 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { datasetList = mutableListOf(datasetSaved.id!!), parametersValues = mutableListOf(runTemplateParameterValue2)) - runnerSaved = runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerSaved = runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) } @Test @@ -208,7 +209,7 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { "should create a new Runner and retrieve parameter varType from solution ignoring the one declared") val newRunner = makeRunner( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, "NewRunner", @@ -218,7 +219,7 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { RunnerRunTemplateParameterValue( parameterId = "param1", value = "7", varType = "ignored_var_type"))) val newRunnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, newRunner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, newRunner) assertNotNull(newRunnerSaved.parametersValues) assertTrue(newRunnerSaved.parametersValues!!.size == 1) @@ -237,14 +238,14 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { parameterId = "param1", value = "7", varType = "ignored_var_type") val newRunner = makeRunner( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, "NewRunner", mutableListOf(datasetSaved.id!!), parametersValues = mutableListOf(creationParameterValue)) val newRunnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, newRunner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, newRunner) assertNotNull(newRunnerSaved.parametersValues) assertTrue(newRunnerSaved.parametersValues!!.size == 1) @@ -255,7 +256,7 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { parameterId = "param1", value = "10", varType = "still_ignored_var_type") val updateRunnerSaved = runnerApiService.updateRunner( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, newRunnerSaved.id!!, newRunnerSaved.apply { parametersValues = mutableListOf(newParameterValue) }) @@ -272,33 +273,33 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns "random_user_with_patform_admin_role" every { getCurrentAuthenticatedRoles(any()) } returns listOf(ROLE_PLATFORM_ADMIN) var initialRunnerList = - runnerApiService.listRunners(organizationSaved.id!!, workspaceSaved.id!!, null, null) + runnerApiService.listRunners(organizationSaved.id, workspaceSaved.id!!, null, null) logger.info("should create a new Runner") val newRunner = makeRunner( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, "NewRunner", mutableListOf(datasetSaved.id!!)) val newRunnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, newRunner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, newRunner) logger.info("should find all Runners and assert there is one more") var runnerList = - runnerApiService.listRunners(organizationSaved.id!!, workspaceSaved.id!!, null, null) + runnerApiService.listRunners(organizationSaved.id, workspaceSaved.id!!, null, null) assertEquals(initialRunnerList.size + 1, runnerList.size) logger.info("should find a Runner by Id and assert it is the one created") val runnerRetrieved = - runnerApiService.getRunner(organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + runnerApiService.getRunner(organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) assertEquals(runnerSaved, runnerRetrieved) logger.info("should update the Runner and assert the name has been updated") val runnerUpdated = runnerApiService.updateRunner( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerRetrieved.id!!, runnerRetrieved.copy(name = "Runner Updated")) @@ -307,15 +308,15 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { runnerUpdated.copy(creationDate = null, lastUpdate = null)) logger.info("should delete the Runner and assert there is one less Runner left") - runnerApiService.deleteRunner(organizationSaved.id!!, workspaceSaved.id!!, newRunnerSaved.id!!) + runnerApiService.deleteRunner(organizationSaved.id, workspaceSaved.id!!, newRunnerSaved.id!!) val runnerListAfterDelete = - runnerApiService.listRunners(organizationSaved.id!!, workspaceSaved.id!!, null, null) + runnerApiService.listRunners(organizationSaved.id, workspaceSaved.id!!, null, null) assertEquals(runnerList.size - 1, runnerListAfterDelete.size) // We create more runner than there can be on one page of default size to assert // deleteAllRunners still works with high quantities of runners repeat(csmPlatformProperties.twincache.runner.defaultPageSize + 1) { - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, makeRunner()) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, makeRunner()) } } @@ -328,32 +329,31 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { IntRange(1, numberOfRunners - 1).forEach { val runner = makeRunner( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, "Runner$it", mutableListOf(datasetSaved.id!!)) - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) } logger.info("should find all Runners and assert there are $numberOfRunners") var runnerList = - runnerApiService.listRunners(organizationSaved.id!!, workspaceSaved.id!!, null, null) + runnerApiService.listRunners(organizationSaved.id, workspaceSaved.id!!, null, null) assertEquals(defaultPageSize, runnerList.size) logger.info("should find all Runners and assert it equals defaultPageSize: $defaultPageSize") - runnerList = runnerApiService.listRunners(organizationSaved.id!!, workspaceSaved.id!!, 0, null) + runnerList = runnerApiService.listRunners(organizationSaved.id, workspaceSaved.id!!, 0, null) assertEquals(defaultPageSize, runnerList.size) logger.info("should find all Runners and assert there are expected size: $expectedSize") runnerList = - runnerApiService.listRunners(organizationSaved.id!!, workspaceSaved.id!!, 0, expectedSize) + runnerApiService.listRunners(organizationSaved.id, workspaceSaved.id!!, 0, expectedSize) assertEquals(expectedSize, runnerList.size) logger.info("should find all Runners and assert it returns the second / last page") runnerList = - runnerApiService.listRunners( - organizationSaved.id!!, workspaceSaved.id!!, 1, defaultPageSize) + runnerApiService.listRunners(organizationSaved.id, workspaceSaved.id!!, 1, defaultPageSize) assertEquals(1, runnerList.size) } @@ -361,17 +361,17 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { fun `test find All Runners with wrong pagination params`() { logger.info("Should throw IllegalArgumentException when page and size are zeros") assertThrows { - runnerApiService.listRunners(organizationSaved.id!!, workspaceSaved.id!!, 0, 0) + runnerApiService.listRunners(organizationSaved.id, workspaceSaved.id!!, 0, 0) } logger.info("Should throw IllegalArgumentException when page is negative") assertThrows { - runnerApiService.listRunners(organizationSaved.id!!, workspaceSaved.id!!, -1, 10) + runnerApiService.listRunners(organizationSaved.id, workspaceSaved.id!!, -1, 10) } logger.info("Should throw IllegalArgumentException when size is negative") assertThrows { - runnerApiService.listRunners(organizationSaved.id!!, workspaceSaved.id!!, 0, -1) + runnerApiService.listRunners(organizationSaved.id, workspaceSaved.id!!, 0, -1) } } @@ -380,48 +380,47 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { // Create a 3 level hierarchy: grandParent <- parent <- child val grandParentCreation = makeRunner( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, ) val grandParentRunner = runnerApiService.createRunner( - organizationSaved.id!!, workspaceSaved.id!!, grandParentCreation) + organizationSaved.id, workspaceSaved.id!!, grandParentCreation) val parentCreation = makeRunner( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, parentId = grandParentRunner.id) val parentRunner = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, parentCreation) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, parentCreation) val childCreation = makeRunner( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, parentId = parentRunner.id) val childRunner = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, childCreation) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, childCreation) // Initial parents check assertEquals(grandParentRunner.id, parentRunner.parentId) assertEquals(parentRunner.id, childRunner.parentId) // Delete intermediate parent, child should refer to grandParent - runnerApiService.deleteRunner(organizationSaved.id!!, workspaceSaved.id!!, parentRunner.id!!) + runnerApiService.deleteRunner(organizationSaved.id, workspaceSaved.id!!, parentRunner.id!!) var newChildParentId = runnerApiService - .getRunner(organizationSaved.id!!, workspaceSaved.id!!, childRunner.id!!) + .getRunner(organizationSaved.id, workspaceSaved.id!!, childRunner.id!!) .parentId assertEquals(grandParentRunner.id, newChildParentId) // Delete root grandParent, child should clear its parent - runnerApiService.deleteRunner( - organizationSaved.id!!, workspaceSaved.id!!, grandParentRunner.id!!) + runnerApiService.deleteRunner(organizationSaved.id, workspaceSaved.id!!, grandParentRunner.id!!) newChildParentId = runnerApiService - .getRunner(organizationSaved.id!!, workspaceSaved.id!!, childRunner.id!!) + .getRunner(organizationSaved.id, workspaceSaved.id!!, childRunner.id!!) .parentId assertNull(newChildParentId) } @@ -432,34 +431,34 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { // <- parent2 <- child2 val grandParentCreation = makeRunner( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, ) val grandParentRunner = runnerApiService.createRunner( - organizationSaved.id!!, workspaceSaved.id!!, grandParentCreation) + organizationSaved.id, workspaceSaved.id!!, grandParentCreation) val parentCreation = makeRunner( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, parentId = grandParentRunner.id) val parentRunner1 = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, parentCreation) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, parentCreation) val parentRunner2 = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, parentCreation) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, parentCreation) var childCreation = makeRunner( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, parentId = parentRunner1.id) val childRunner1 = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, childCreation) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, childCreation) childCreation.parentId = parentRunner2.id val childRunner2 = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, childCreation) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, childCreation) // Initial parents check assertEquals(grandParentRunner.id, parentRunner1.parentId) @@ -473,25 +472,24 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { assertEquals(grandParentRunner.id, childRunner2.rootId) // Delete grand parent - runnerApiService.deleteRunner( - organizationSaved.id!!, workspaceSaved.id!!, grandParentRunner.id!!) + runnerApiService.deleteRunner(organizationSaved.id, workspaceSaved.id!!, grandParentRunner.id!!) assertNull( runnerApiService - .getRunner(organizationSaved.id!!, workspaceSaved.id!!, parentRunner1.id!!) + .getRunner(organizationSaved.id, workspaceSaved.id!!, parentRunner1.id!!) .rootId) assertNull( runnerApiService - .getRunner(organizationSaved.id!!, workspaceSaved.id!!, parentRunner2.id!!) + .getRunner(organizationSaved.id, workspaceSaved.id!!, parentRunner2.id!!) .rootId) assertEquals( parentRunner1.id, runnerApiService - .getRunner(organizationSaved.id!!, workspaceSaved.id!!, childRunner1.id!!) + .getRunner(organizationSaved.id, workspaceSaved.id!!, childRunner1.id!!) .rootId) assertEquals( parentRunner2.id, runnerApiService - .getRunner(organizationSaved.id!!, workspaceSaved.id!!, childRunner2.id!!) + .getRunner(organizationSaved.id, workspaceSaved.id!!, childRunner2.id!!) .rootId) } @@ -502,14 +500,14 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { logger.info("should test default security is set to ROLE_NONE") val runnerSecurity = runnerApiService.getRunnerSecurity( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) assertEquals(ROLE_NONE, runnerSecurity.default) logger.info("should set default security to ROLE_VIEWER and assert it has been set") val runnerRole = RunnerRole(ROLE_VIEWER) val runnerSecurityRegistered = runnerApiService.setRunnerDefaultSecurity( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, runnerRole) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, runnerRole) assertEquals(runnerRole.role, runnerSecurityRegistered.default) } @@ -521,14 +519,14 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { // Test default security assertThrows { runnerApiService.getRunnerSecurity( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } logger.info("should throw CsmAccessForbiddenException when trying to set default security") val runnerRole = RunnerRole(ROLE_VIEWER) assertThrows { runnerApiService.setRunnerDefaultSecurity( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, runnerRole) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, runnerRole) } } @@ -538,27 +536,27 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { val runnerAccessControl = RunnerAccessControl(TEST_USER_MAIL, ROLE_VIEWER) var runnerAccessControlRegistered = runnerApiService.addRunnerAccessControl( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, runnerAccessControl) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, runnerAccessControl) assertEquals(runnerAccessControl, runnerAccessControlRegistered) logger.info("should get the Access Control and assert it is the one created") runnerAccessControlRegistered = runnerApiService.getRunnerAccessControl( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) assertEquals(runnerAccessControl, runnerAccessControlRegistered) logger.info( "should add an Access Control and assert it is the one created in the linked datasets") runnerSaved.datasetList!!.forEach { assertDoesNotThrow { - datasetApiService.getDatasetAccessControl(organizationSaved.id!!, it, TEST_USER_MAIL) + datasetApiService.getDatasetAccessControl(organizationSaved.id, it, TEST_USER_MAIL) } } logger.info("should update the Access Control and assert it has been updated") runnerAccessControlRegistered = runnerApiService.updateRunnerAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL, @@ -569,31 +567,29 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { runnerSaved.datasetList!!.forEach { assertEquals( ROLE_VIEWER, - datasetApiService - .getDatasetAccessControl(organizationSaved.id!!, it, TEST_USER_MAIL) - .role) + datasetApiService.getDatasetAccessControl(organizationSaved.id, it, TEST_USER_MAIL).role) } logger.info("should get the list of users and assert there are 2") val userList = runnerApiService.getRunnerSecurityUsers( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) assertEquals(3, userList.size) logger.info("should remove the Access Control and assert it has been removed") runnerApiService.removeRunnerAccessControl( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) assertThrows { runnerAccessControlRegistered = runnerApiService.getRunnerAccessControl( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) } logger.info( "should remove the Access Control and assert it has been removed in the linked datasets") runnerSaved.datasetList!!.forEach { assertThrows { - datasetApiService.getDatasetAccessControl(organizationSaved.id!!, it, TEST_USER_MAIL) + datasetApiService.getDatasetAccessControl(organizationSaved.id, it, TEST_USER_MAIL) } } } @@ -606,20 +602,20 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { val runnerAccessControl = RunnerAccessControl(TEST_USER_MAIL, ROLE_VIEWER) assertThrows { runnerApiService.addRunnerAccessControl( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, runnerAccessControl) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, runnerAccessControl) } logger.info("should throw CsmAccessForbiddenException when trying to get RunnerAccessControl") assertThrows { runnerApiService.getRunnerAccessControl( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) } logger.info( "should throw CsmAccessForbiddenException when trying to update RunnerAccessControl") assertThrows { runnerApiService.updateRunnerAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL, @@ -629,14 +625,14 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { logger.info("should throw CsmAccessForbiddenException when getting the list of users") assertThrows { runnerApiService.getRunnerSecurityUsers( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } logger.info( "should throw CsmAccessForbiddenException when trying to remove RunnerAccessControl") assertThrows { runnerApiService.removeRunnerAccessControl( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) } } @@ -644,7 +640,7 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { fun `test deleting a running runner`() { runnerSaved.lastRunId = "run-genid12345" runnerApiService.updateRunner( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, runnerSaved) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, runnerSaved) every { eventPublisher.publishEvent(any()) } answers { @@ -653,8 +649,7 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { val exception = assertThrows { - runnerApiService.deleteRunner( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + runnerApiService.deleteRunner(organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } assertEquals( "Can't delete runner ${runnerSaved.id}: at least one run is still running", @@ -663,10 +658,10 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { @Test fun `test on runner delete keep datasets`() { - runnerApiService.deleteRunner(organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + runnerApiService.deleteRunner(organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) runnerSaved.datasetList!!.forEach { dataset -> - assertDoesNotThrow { datasetApiService.findDatasetById(organizationSaved.id!!, dataset) } + assertDoesNotThrow { datasetApiService.findDatasetById(organizationSaved.id, dataset) } } } @@ -679,13 +674,12 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { val parentId = runnerApiService .createRunner( - organizationSaved.id!!, workspaceSaved.id!!, parentRunnerWithEmptyDatasetList) + organizationSaved.id, workspaceSaved.id!!, parentRunnerWithEmptyDatasetList) .id val childRunnerWithNullDatasetList = makeRunner(parentId = parentId, datasetList = null) val childRunnerDatasetList = runnerApiService - .createRunner( - organizationSaved.id!!, workspaceSaved.id!!, childRunnerWithNullDatasetList) + .createRunner(organizationSaved.id, workspaceSaved.id!!, childRunnerWithNullDatasetList) .datasetList assertNotNull(childRunnerDatasetList) @@ -702,13 +696,12 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { val parentId = runnerApiService .createRunner( - organizationSaved.id!!, workspaceSaved.id!!, parentRunnerWithNonEmptyDatasetList) + organizationSaved.id, workspaceSaved.id!!, parentRunnerWithNonEmptyDatasetList) .id val childRunnerWithNullDatasetList = makeRunner(parentId = parentId, datasetList = null) val childRunnerDatasetList = runnerApiService - .createRunner( - organizationSaved.id!!, workspaceSaved.id!!, childRunnerWithNullDatasetList) + .createRunner(organizationSaved.id, workspaceSaved.id!!, childRunnerWithNullDatasetList) .datasetList assertNotNull(childRunnerDatasetList) @@ -725,14 +718,14 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { val parentId = runnerApiService .createRunner( - organizationSaved.id!!, workspaceSaved.id!!, parentRunnerWithNonEmptyDatasetList) + organizationSaved.id, workspaceSaved.id!!, parentRunnerWithNonEmptyDatasetList) .id val childRunnerWithEmptyDatasetList = makeRunner(parentId = parentId, datasetList = mutableListOf()) val childRunnerDatasetList = runnerApiService .createRunner( - organizationSaved.id!!, workspaceSaved.id!!, childRunnerWithEmptyDatasetList) + organizationSaved.id, workspaceSaved.id!!, childRunnerWithEmptyDatasetList) .datasetList assertNotNull(childRunnerDatasetList) @@ -749,7 +742,7 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { val parentId = runnerApiService .createRunner( - organizationSaved.id!!, workspaceSaved.id!!, parentRunnerWithNonEmptyDatasetList) + organizationSaved.id, workspaceSaved.id!!, parentRunnerWithNonEmptyDatasetList) .id val childDatasetList = mutableListOf("fakeDatasetIdChildRunner") val childRunnerWithNonEmptyDatasetList = @@ -757,7 +750,7 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { val childRunnerDatasetList = runnerApiService .createRunner( - organizationSaved.id!!, workspaceSaved.id!!, childRunnerWithNonEmptyDatasetList) + organizationSaved.id, workspaceSaved.id!!, childRunnerWithNonEmptyDatasetList) .datasetList assertNotNull(childRunnerDatasetList) @@ -766,10 +759,10 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { @Test fun `test updating (adding) runner's datasetList add runner users to new dataset`() { - val newDataset = datasetApiService.createDataset(organizationSaved.id!!, makeDataset()) + val newDataset = datasetApiService.createDataset(organizationSaved.id, makeDataset()) runnerSaved = runnerApiService.updateRunner( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, runner.copy( @@ -782,19 +775,19 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { val runnerUserList = runnerApiService.getRunnerSecurityUsers( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) val datasetUserList = - datasetApiService.getDatasetSecurityUsers(organizationSaved.id!!, newDataset.id!!) + datasetApiService.getDatasetSecurityUsers(organizationSaved.id, newDataset.id!!) datasetUserList.containsAll(runnerUserList) } @Test fun `access control list shouldn't contain more than one time each user on creation`() { organizationSaved = - organizationApiService.registerOrganization(makeOrganization("organization")) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, makeSolution()) - workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id!!, makeWorkspace()) + organizationApiService.createOrganization(makeOrganizationRequest("organization")) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, makeSolution()) + workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id, makeWorkspace()) val brokenRunner = Runner( name = "runner", @@ -806,28 +799,28 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { RunnerAccessControl(CONNECTED_ADMIN_USER, ROLE_ADMIN), RunnerAccessControl(CONNECTED_ADMIN_USER, ROLE_EDITOR)))) assertThrows { - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, brokenRunner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, brokenRunner) } } @Test fun `access control list can't add an existing user`() { organizationSaved = - organizationApiService.registerOrganization(makeOrganization("organization")) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, makeSolution()) - workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id!!, makeWorkspace()) + organizationApiService.createOrganization(makeOrganizationRequest("organization")) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, makeSolution()) + workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id, makeWorkspace()) val workingRunner = makeRunner() runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, workingRunner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, workingRunner) val runnerSavedSecurityUsers = runnerApiService.getRunnerSecurityUsers( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) assertEquals(2, runnerSavedSecurityUsers.size) assertThrows { runnerApiService.addRunnerAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, RunnerAccessControl(defaultName, ROLE_EDITOR)) @@ -835,7 +828,7 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { val runnerSecurityUsers = runnerApiService.getRunnerSecurityUsers( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) assertEquals(2, runnerSecurityUsers.size) assert(runnerSavedSecurityUsers == runnerSecurityUsers) } @@ -843,21 +836,21 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { @Test fun `access control list can't update a non-existing user`() { organizationSaved = - organizationApiService.registerOrganization(makeOrganization("organization")) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, makeSolution()) - workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id!!, makeWorkspace()) + organizationApiService.createOrganization(makeOrganizationRequest("organization")) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, makeSolution()) + workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id, makeWorkspace()) val workingRunner = makeRunner() runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, workingRunner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, workingRunner) val runnerSavedSecurityUsers = runnerApiService.getRunnerSecurityUsers( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) assertEquals(2, runnerSavedSecurityUsers.size) assertThrows { runnerApiService.updateRunnerAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, "invalid user", @@ -866,7 +859,7 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { val runnerSecurityUsers = runnerApiService.getRunnerSecurityUsers( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) assertEquals(2, runnerSecurityUsers.size) assert(runnerSavedSecurityUsers == runnerSecurityUsers) } @@ -880,16 +873,16 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { solution = WorkspaceSolution(solutionSaved.id!!), id = "id", datasetCopy = false) - workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id, workspace) runner = makeRunner(datasetList = mutableListOf(datasetSaved.id!!)) - runnerSaved = runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerSaved = runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) datasetSaved = - datasetApiService.findDatasetById(organizationSaved.id!!, runnerSaved.datasetList!![0]) - runnerApiService.deleteRunner(organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + datasetApiService.findDatasetById(organizationSaved.id, runnerSaved.datasetList!![0]) + runnerApiService.deleteRunner(organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) assertDoesNotThrow { - datasetApiService.findDatasetById(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.findDatasetById(organizationSaved.id, datasetSaved.id!!) } } @@ -902,20 +895,20 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { solution = WorkspaceSolution(solutionSaved.id!!), id = "id", datasetCopy = true) - workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id, workspace) runner = makeRunner(datasetList = mutableListOf(datasetSaved.id!!)) - runnerSaved = runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerSaved = runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) datasetSaved = - datasetApiService.findDatasetById(organizationSaved.id!!, runnerSaved.datasetList!![0]) + datasetApiService.findDatasetById(organizationSaved.id, runnerSaved.datasetList!![0]) runnerApiService.addRunnerAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, RunnerAccessControl(id = "id", role = ROLE_EDITOR)) val datasetAC = - datasetApiService.getDatasetAccessControl(organizationSaved.id!!, datasetSaved.id!!, "id") + datasetApiService.getDatasetAccessControl(organizationSaved.id, datasetSaved.id!!, "id") assertEquals(ROLE_EDITOR, datasetAC.role) } @@ -923,7 +916,7 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { fun `test runner creation with unknown runtemplateId`() { val runnerWithWrongRunTemplateId = makeRunner( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, name = "Runner_With_unknown_runtemplate_id", @@ -935,7 +928,7 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { val assertThrows = assertThrows { runnerApiService.createRunner( - organizationSaved.id!!, workspaceSaved.id!!, runnerWithWrongRunTemplateId) + organizationSaved.id, workspaceSaved.id!!, runnerWithWrongRunTemplateId) } assertEquals( "Run Template not found: ${runnerWithWrongRunTemplateId.runTemplateId}", @@ -947,7 +940,7 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { val parentId = "unknown_parent_id" val runnerWithWrongParentId = makeRunner( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, name = "Runner_With_unknown_parent", @@ -958,7 +951,7 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { val assertThrows = assertThrows { runnerApiService.createRunner( - organizationSaved.id!!, workspaceSaved.id!!, runnerWithWrongParentId) + organizationSaved.id, workspaceSaved.id!!, runnerWithWrongParentId) } assertTrue(assertThrows.message!!.startsWith("Parent Id $parentId define on")) } @@ -978,11 +971,11 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { val parentRunnerWithEmptyParams = makeRunner(name = "parent") val parentRunnerSaved = runnerApiService.createRunner( - organizationSaved.id!!, workspaceSaved.id!!, parentRunnerWithEmptyParams) + organizationSaved.id, workspaceSaved.id!!, parentRunnerWithEmptyParams) val parentRunnerUpdated = runnerApiService.updateRunner( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, parentRunnerSaved.id!!, parentRunnerSaved.apply { @@ -999,7 +992,7 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { val childRunnerWithEmptyParamsSaved = runnerApiService.createRunner( - organizationSaved.id!!, workspaceSaved.id!!, childRunnerWithEmptyParams) + organizationSaved.id, workspaceSaved.id!!, childRunnerWithEmptyParams) assertNotNull(childRunnerWithEmptyParamsSaved.parametersValues) assertEquals(1, childRunnerWithEmptyParamsSaved.parametersValues!!.size) @@ -1015,13 +1008,12 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { firstArg().response = expectedRunId } - val run = - runnerApiService.startRun(organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + val run = runnerApiService.startRun(organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) assertEquals(expectedRunId, run.id) val lastRunId = runnerApiService - .getRunner(organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + .getRunner(organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) .lastRunId assertEquals(expectedRunId, lastRunId) } @@ -1030,10 +1022,10 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { fun `As a viewer, I can only see my information in security property for getRunner`() { every { getCurrentAccountIdentifier(any()) } returns defaultName runner = makeRunner(userName = defaultName, role = ROLE_VIEWER) - runnerSaved = runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerSaved = runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) runnerSaved = - runnerApiService.getRunner(organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + runnerApiService.getRunner(organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) assertEquals( RunnerSecurity( default = ROLE_NONE, mutableListOf(RunnerAccessControl(defaultName, ROLE_VIEWER))), @@ -1044,17 +1036,17 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { @Test fun `As a viewer, I can only see my information in security property for listRunners`() { every { getCurrentAccountIdentifier(any()) } returns defaultName - organizationSaved = organizationApiService.registerOrganization(organization) - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + organizationSaved = organizationApiService.createOrganization(organization) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) materializeTwingraph() - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) workspace = makeWorkspace() - workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id, workspace) runner = makeRunner(userName = defaultName, role = ROLE_VIEWER) - runnerSaved = runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerSaved = runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) val runners = - runnerApiService.listRunners(organizationSaved.id!!, workspaceSaved.id!!, null, null) + runnerApiService.listRunners(organizationSaved.id, workspaceSaved.id!!, null, null) runners.forEach { assertEquals( RunnerSecurity( @@ -1074,7 +1066,7 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { } fun makeDataset( - organizationId: String = organizationSaved.id!!, + organizationId: String = organizationSaved.id, name: String = "name", connector: Connector = connectorSaved ): Dataset { @@ -1098,7 +1090,7 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { DatasetAccessControl(defaultName, ROLE_USER)))) } - fun makeSolution(organizationId: String = organizationSaved.id!!): Solution { + fun makeSolution(organizationId: String = organizationSaved.id): Solution { return Solution( id = "solutionId", key = UUID.randomUUID().toString(), @@ -1132,15 +1124,12 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { SolutionAccessControl(id = defaultName, role = ROLE_USER)))) } - fun makeOrganization( - id: String = "id", + fun makeOrganizationRequest( userName: String = defaultName, role: String = ROLE_ADMIN - ): Organization { - return Organization( - id = id, + ): OrganizationCreationRequest { + return OrganizationCreationRequest( name = "Organization Name", - ownerId = "my.account-tester@cosmotech.com", security = OrganizationSecurity( default = ROLE_NONE, @@ -1152,7 +1141,7 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { } fun makeWorkspace( - organizationId: String = organizationSaved.id!!, + organizationId: String = organizationSaved.id, solutionId: String = solutionSaved.id!!, name: String = "name", userName: String = defaultName, @@ -1176,7 +1165,7 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() { } fun makeRunner( - organizationId: String = organizationSaved.id!!, + organizationId: String = organizationSaved.id, workspaceId: String = workspaceSaved.id!!, solutionId: String = solutionSaved.id!!, name: String = "name", diff --git a/runner/src/integrationTest/kotlin/com/cosmotech/runner/service/RunnerServiceRBACTest.kt b/runner/src/integrationTest/kotlin/com/cosmotech/runner/service/RunnerServiceRBACTest.kt index 9a2783f30..d4dee0683 100644 --- a/runner/src/integrationTest/kotlin/com/cosmotech/runner/service/RunnerServiceRBACTest.kt +++ b/runner/src/integrationTest/kotlin/com/cosmotech/runner/service/RunnerServiceRBACTest.kt @@ -35,6 +35,7 @@ import com.cosmotech.dataset.repository.DatasetRepository import com.cosmotech.organization.api.OrganizationApiService import com.cosmotech.organization.domain.Organization import com.cosmotech.organization.domain.OrganizationAccessControl +import com.cosmotech.organization.domain.OrganizationCreationRequest import com.cosmotech.organization.domain.OrganizationSecurity import com.cosmotech.runner.api.RunnerApiService import com.cosmotech.runner.domain.Runner @@ -138,50 +139,49 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = role) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = role) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) every { datasetApiService.createSubDataset(any(), any(), any()) } returns datasetSaved - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.listRunners( - organizationSaved.id!!, workspaceSaved.id!!, null, null) + organizationSaved.id, workspaceSaved.id!!, null, null) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { runnerApiService.listRunners( - organizationSaved.id!!, workspaceSaved.id!!, null, null) + organizationSaved.id, workspaceSaved.id!!, null, null) } } } @@ -202,39 +202,39 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) every { datasetApiService.createSubDataset(any(), any(), any()) } returns datasetSaved - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, solutionSaved.id!!, id = TEST_USER_MAIL, role = role) + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = role) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.listRunners( - organizationSaved.id!!, workspaceSaved.id!!, null, null) + organizationSaved.id, workspaceSaved.id!!, null, null) } assertEquals( "RBAC ${workspaceSaved.id!!} - User does not have permission $PERMISSION_READ", @@ -242,7 +242,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.listRunners( - organizationSaved.id!!, workspaceSaved.id!!, null, null) + organizationSaved.id, workspaceSaved.id!!, null, null) } } } @@ -263,42 +263,42 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) every { datasetApiService.createSubDataset(any(), any(), any()) } returns datasetSaved - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, role) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, role) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.listRunners( - organizationSaved.id!!, workspaceSaved.id!!, null, null) + organizationSaved.id, workspaceSaved.id!!, null, null) } assertEquals( "RBAC ${solutionSaved.id!!} - User does not have permission $PERMISSION_READ", @@ -306,7 +306,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.listRunners( - organizationSaved.id!!, workspaceSaved.id!!, null, null) + organizationSaved.id, workspaceSaved.id!!, null, null) } } } @@ -327,42 +327,41 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) - val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, role) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) + val dataset = makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, role) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) every { datasetApiService.createSubDataset(any(), any(), any()) } returns datasetSaved - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.listRunners( - organizationSaved.id!!, workspaceSaved.id!!, null, null) + organizationSaved.id, workspaceSaved.id!!, null, null) } assertEquals( "RBAC ${datasetSaved.id!!} - User does not have permission $PERMISSION_READ", @@ -370,7 +369,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.listRunners( - organizationSaved.id!!, workspaceSaved.id!!, null, null) + organizationSaved.id, workspaceSaved.id!!, null, null) } } } @@ -391,48 +390,47 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = role) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = role) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.createRunner( - organizationSaved.id!!, workspaceSaved.id!!, runner) + organizationSaved.id, workspaceSaved.id!!, runner) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) } } } @@ -453,41 +451,40 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) - val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, role) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) + val dataset = makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, role) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.createRunner( - organizationSaved.id!!, workspaceSaved.id!!, runner) + organizationSaved.id, workspaceSaved.id!!, runner) } if (role == ROLE_NONE || role == ROLE_VALIDATOR) { assertEquals( @@ -500,7 +497,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } } else { assertDoesNotThrow { - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) } } } @@ -521,48 +518,48 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, role) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, role) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.createRunner( - organizationSaved.id!!, workspaceSaved.id!!, runner) + organizationSaved.id, workspaceSaved.id!!, runner) } assertEquals( "RBAC ${solutionSaved.id!!} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) } } } @@ -583,38 +580,38 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, solutionSaved.id!!, id = TEST_USER_MAIL, role = role) + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = role) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.createRunner( - organizationSaved.id!!, workspaceSaved.id!!, runner) + organizationSaved.id, workspaceSaved.id!!, runner) } if (role == ROLE_VALIDATOR || role == ROLE_NONE) { assertEquals( @@ -627,7 +624,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } } else { assertDoesNotThrow { - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) } } } @@ -648,50 +645,49 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = role) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = role) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.getRunner( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { runnerApiService.getRunner( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } } } @@ -712,42 +708,41 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) - val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, role) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) + val dataset = makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, role) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.getRunner( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } assertEquals( "RBAC ${datasetSaved.id!!} - User does not have permission $PERMISSION_READ", @@ -755,7 +750,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.getRunner( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } } } @@ -776,42 +771,42 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, role) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, role) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.getRunner( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } assertEquals( "RBAC ${solutionSaved.id!!} - User does not have permission $PERMISSION_READ", @@ -819,7 +814,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.getRunner( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } } } @@ -840,39 +835,39 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, solutionSaved.id!!, id = TEST_USER_MAIL, role = role) + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = role) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.getRunner( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } assertEquals( "RBAC ${workspaceSaved.id!!} - User does not have permission $PERMISSION_READ", @@ -880,7 +875,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.getRunner( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } } } @@ -900,42 +895,42 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = role) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.getRunner( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } assertEquals( "RBAC ${runnerSaved.id!!} - User does not have permission $PERMISSION_READ", @@ -943,7 +938,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.getRunner( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } } } @@ -964,52 +959,51 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = role) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = role) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) every { datasetApiService.createSubDataset(any(), any(), any()) } returns datasetSaved every { datasetApiService.deleteDataset(any(), any()) } returns Unit - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.deleteRunner( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { runnerApiService.deleteRunner( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } } } @@ -1030,44 +1024,43 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) - val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, role) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) + val dataset = makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, role) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) every { datasetApiService.createSubDataset(any(), any(), any()) } returns datasetSaved every { datasetApiService.deleteDataset(any(), any()) } returns Unit - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.deleteRunner( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } assertEquals( "RBAC ${datasetSaved.id!!} - User does not have permission $PERMISSION_READ", @@ -1075,7 +1068,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.deleteRunner( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } } } @@ -1096,44 +1089,44 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) every { datasetApiService.createSubDataset(any(), any(), any()) } returns datasetSaved every { datasetApiService.deleteDataset(any(), any()) } returns Unit - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, role) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, role) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.deleteRunner( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } assertEquals( "RBAC ${solutionSaved.id!!} - User does not have permission $PERMISSION_READ", @@ -1141,7 +1134,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.deleteRunner( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } } } @@ -1162,52 +1155,51 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = role) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = role) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) every { datasetApiService.createSubDataset(any(), any(), any()) } returns datasetSaved every { datasetApiService.deleteDataset(any(), any()) } returns Unit - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.deleteRunner( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { runnerApiService.deleteRunner( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } } } @@ -1226,44 +1218,44 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) every { datasetApiService.createSubDataset(any(), any(), any()) } returns datasetSaved every { datasetApiService.deleteDataset(any(), any()) } returns Unit - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = role) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.deleteRunner( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } if (role == ROLE_NONE) { assertEquals( @@ -1277,7 +1269,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.deleteRunner( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } } } @@ -1298,46 +1290,45 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = role) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = role) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.updateRunner( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), @@ -1345,16 +1336,16 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { role = role)) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { runnerApiService.updateRunner( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), @@ -1380,46 +1371,45 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) - val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, role) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) + val dataset = makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, role) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.updateRunner( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), @@ -1432,11 +1422,11 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.updateRunner( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), @@ -1462,46 +1452,46 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, role) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, role) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.updateRunner( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), @@ -1514,11 +1504,11 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.updateRunner( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), @@ -1544,43 +1534,43 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, solutionSaved.id!!, id = TEST_USER_MAIL, role = role) + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = role) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.updateRunner( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), @@ -1593,11 +1583,11 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.updateRunner( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), @@ -1622,46 +1612,46 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = role) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.updateRunner( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), @@ -1680,11 +1670,11 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.updateRunner( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), @@ -1710,28 +1700,27 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = role) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = role) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), @@ -1739,22 +1728,22 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { role = ROLE_ADMIN) every { datasetApiService.createSubDataset(any(), any(), any()) } returns datasetSaved val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.getRunnerPermissions( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, role) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, role) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { runnerApiService.getRunnerPermissions( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, role) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, role) } } } @@ -1775,28 +1764,27 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) - val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, role) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) + val dataset = makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, role) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), @@ -1804,14 +1792,14 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { role = ROLE_ADMIN) every { datasetApiService.createSubDataset(any(), any(), any()) } returns datasetSaved val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.getRunnerPermissions( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, role) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, role) } assertEquals( "RBAC ${datasetSaved.id!!} - User does not have permission $PERMISSION_READ", @@ -1819,7 +1807,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.getRunnerPermissions( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, role) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, role) } } } @@ -1840,28 +1828,28 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, role) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, role) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), @@ -1869,14 +1857,14 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { role = ROLE_ADMIN) every { datasetApiService.createSubDataset(any(), any(), any()) } returns datasetSaved val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.getRunnerPermissions( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, role) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, role) } assertEquals( "RBAC ${solutionSaved.id!!} - User does not have permission $PERMISSION_READ", @@ -1884,7 +1872,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.getRunnerPermissions( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, role) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, role) } } } @@ -1905,25 +1893,25 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, solutionSaved.id!!, id = TEST_USER_MAIL, role = role) + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = role) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), @@ -1931,14 +1919,14 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { role = ROLE_ADMIN) every { datasetApiService.createSubDataset(any(), any(), any()) } returns datasetSaved val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.getRunnerPermissions( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, role) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, role) } assertEquals( "RBAC ${workspaceSaved.id!!} - User does not have permission $PERMISSION_READ", @@ -1946,7 +1934,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.getRunnerPermissions( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, role) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, role) } } } @@ -1966,28 +1954,28 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), @@ -1995,14 +1983,14 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { role = role) every { datasetApiService.createSubDataset(any(), any(), any()) } returns datasetSaved val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.getRunnerPermissions( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, role) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, role) } if (role == ROLE_NONE) { assertEquals( @@ -2016,7 +2004,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.getRunnerPermissions( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, role) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, role) } } } @@ -2037,50 +2025,49 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = role) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = role) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.getRunnerSecurity( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { runnerApiService.getRunnerSecurity( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } } } @@ -2101,42 +2088,41 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) - val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, role) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) + val dataset = makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, role) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.getRunnerSecurity( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } assertEquals( "RBAC ${datasetSaved.id!!} - User does not have permission $PERMISSION_READ", @@ -2144,7 +2130,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.getRunnerSecurity( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } } } @@ -2165,42 +2151,42 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, role) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, role) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.getRunnerSecurity( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } assertEquals( "RBAC ${solutionSaved.id!!} - User does not have permission $PERMISSION_READ", @@ -2208,7 +2194,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.getRunnerSecurity( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } } } @@ -2229,39 +2215,39 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, solutionSaved.id!!, id = TEST_USER_MAIL, role = role) + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = role) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.getRunnerSecurity( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } assertEquals( "RBAC ${workspaceSaved.id!!} - User does not have permission $PERMISSION_READ", @@ -2269,7 +2255,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.getRunnerSecurity( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } } } @@ -2289,42 +2275,42 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = role) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.getRunnerSecurity( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } if (role == ROLE_NONE) { assertEquals( @@ -2338,7 +2324,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.getRunnerSecurity( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } } } @@ -2359,54 +2345,53 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = role) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = role) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) materializeTwingraph(datasetSaved) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.setRunnerDefaultSecurity( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, RunnerRole(ROLE_ADMIN)) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { runnerApiService.setRunnerDefaultSecurity( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, RunnerRole(ROLE_ADMIN)) @@ -2430,43 +2415,42 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) - val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, role) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) + val dataset = makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, role) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) materializeTwingraph(datasetSaved) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.setRunnerDefaultSecurity( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, RunnerRole(ROLE_ADMIN)) @@ -2477,7 +2461,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.setRunnerDefaultSecurity( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, RunnerRole(ROLE_ADMIN)) @@ -2501,43 +2485,43 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) materializeTwingraph(datasetSaved) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, role) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, role) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.setRunnerDefaultSecurity( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, RunnerRole(ROLE_ADMIN)) @@ -2548,7 +2532,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.setRunnerDefaultSecurity( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, RunnerRole(ROLE_ADMIN)) @@ -2572,39 +2556,39 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, solutionSaved.id!!, id = TEST_USER_MAIL, role = role) + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = role) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.setRunnerDefaultSecurity( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, RunnerRole(ROLE_ADMIN)) @@ -2615,7 +2599,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.setRunnerDefaultSecurity( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, RunnerRole(ROLE_ADMIN)) @@ -2638,42 +2622,42 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = role) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.setRunnerDefaultSecurity( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, RunnerRole(ROLE_ADMIN)) @@ -2690,7 +2674,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.setRunnerDefaultSecurity( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, RunnerRole(ROLE_ADMIN)) @@ -2714,54 +2698,53 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = role) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = role) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) every { datasetApiService.createSubDataset(any(), any(), any()) } returns datasetSaved - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.addRunnerAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, RunnerAccessControl("id", ROLE_ADMIN)) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { runnerApiService.addRunnerAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, RunnerAccessControl("id", ROLE_ADMIN)) @@ -2786,31 +2769,30 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) val organization = - makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, role) - var datasetSaved = - datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, role) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) every { datasetApiService.createSubDataset(any(), any(), any()) } returns datasetSaved - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), @@ -2818,7 +2800,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { role = ROLE_ADMIN) val runnerSaved = runnerApiService.createRunner( - organizationSaved.id!!, workspaceSaved.id!!, runner) + organizationSaved.id, workspaceSaved.id!!, runner) assertDoesNotThrow { assertTrue( @@ -2830,13 +2812,13 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { .isNullOrEmpty()) runnerApiService.addRunnerAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, RunnerAccessControl("unknown_user@test.com", role)) val datasetWithUpgradedACL = - datasetApiService.findDatasetById(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.findDatasetById(organizationSaved.id, datasetSaved.id!!) var datasetRole = role if (role == ROLE_VALIDATOR) { datasetRole = ROLE_USER @@ -2860,12 +2842,12 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = makeDataset( - organizationSaved.id!!, connectorSaved, id = "unknown_user@test.com", role = ROLE_NONE) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + organizationSaved.id, connectorSaved, id = "unknown_user@test.com", role = ROLE_NONE) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save(datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) every { datasetApiService.createSubDataset(any(), any(), any()) } returns datasetSaved @@ -2876,30 +2858,30 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { datasetAccessControl.id == TEST_USER_MAIL }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) - val workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) + val workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = "unknown_user@test.com", role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) runnerApiService.addRunnerAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, RunnerAccessControl(TEST_USER_MAIL, ROLE_ADMIN)) val datasetWithUpgradedACL = - datasetApiService.findDatasetById(organizationSaved.id!!, datasetSaved.id!!) + datasetApiService.findDatasetById(organizationSaved.id, datasetSaved.id!!) assertEquals( true, datasetWithUpgradedACL.security?.accessControlList?.any { datasetAccessControl -> @@ -2922,43 +2904,43 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) every { datasetApiService.createSubDataset(any(), any(), any()) } returns datasetSaved - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, role) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, role) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.addRunnerAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, RunnerAccessControl("id", ROLE_ADMIN)) @@ -2969,7 +2951,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.addRunnerAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, RunnerAccessControl("id", ROLE_ADMIN)) @@ -2993,40 +2975,40 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) materializeTwingraph(datasetSaved) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, solutionSaved.id!!, id = TEST_USER_MAIL, role = role) + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = role) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.addRunnerAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, RunnerAccessControl("id", ROLE_ADMIN)) @@ -3037,7 +3019,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.addRunnerAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, RunnerAccessControl("id", ROLE_ADMIN)) @@ -3060,43 +3042,43 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) every { datasetApiService.createSubDataset(any(), any(), any()) } returns datasetSaved - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = role) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.addRunnerAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, RunnerAccessControl("id", ROLE_ADMIN)) @@ -3113,7 +3095,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.addRunnerAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, RunnerAccessControl("id", ROLE_ADMIN)) @@ -3137,53 +3119,52 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = role) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = role) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.getRunnerAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { runnerApiService.getRunnerAccessControl( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) } } } @@ -3204,42 +3185,41 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) - val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, role) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) + val dataset = makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, role) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.getRunnerAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) @@ -3250,7 +3230,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.getRunnerAccessControl( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) } } } @@ -3271,42 +3251,42 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, role) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, role) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.getRunnerAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) @@ -3317,7 +3297,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.getRunnerAccessControl( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) } } } @@ -3338,39 +3318,39 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, solutionSaved.id!!, id = TEST_USER_MAIL, role = role) + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = role) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.getRunnerAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) @@ -3381,7 +3361,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.getRunnerAccessControl( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) } } } @@ -3401,42 +3381,42 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = role) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.getRunnerAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) @@ -3453,7 +3433,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.getRunnerAccessControl( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) } } } @@ -3474,54 +3454,53 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = role) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = role) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) every { datasetApiService.createSubDataset(any(), any(), any()) } returns datasetSaved - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.removeRunnerAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { runnerApiService.removeRunnerAccessControl( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) } } } @@ -3542,43 +3521,42 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) - val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, role) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) + val dataset = makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, role) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) every { datasetApiService.createSubDataset(any(), any(), any()) } returns datasetSaved - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.removeRunnerAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) @@ -3595,7 +3573,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.removeRunnerAccessControl( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) } } } @@ -3616,43 +3594,43 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) every { datasetApiService.createSubDataset(any(), any(), any()) } returns datasetSaved - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.removeRunnerAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) @@ -3663,7 +3641,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.removeRunnerAccessControl( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) } } } @@ -3684,40 +3662,40 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) every { datasetApiService.createSubDataset(any(), any(), any()) } returns datasetSaved - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, solutionSaved.id!!, id = TEST_USER_MAIL, role = role) + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = role) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.removeRunnerAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) @@ -3728,7 +3706,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.removeRunnerAccessControl( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) } } } @@ -3748,43 +3726,43 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) every { datasetApiService.createSubDataset(any(), any(), any()) } returns datasetSaved - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = role) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.removeRunnerAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) @@ -3801,7 +3779,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.removeRunnerAccessControl( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL) } } } @@ -3822,25 +3800,24 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = role) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = role) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) every { datasetApiService.createSubDataset(any(), any(), any()) } returns datasetSaved every { datasetApiService.getDatasetSecurityUsers(any(), any()) } returns listOf(TEST_USER_MAIL, CONNECTED_ADMIN_USER) @@ -3849,33 +3826,33 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } returns mockk() val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.updateRunnerAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL, RunnerRole(ROLE_VIEWER)) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { runnerApiService.updateRunnerAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL, @@ -3900,25 +3877,24 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) - val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, role) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) + val dataset = makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, role) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) every { datasetApiService.createSubDataset(any(), any(), any()) } returns datasetSaved every { datasetApiService.getDatasetSecurityUsers(any(), any()) } returns listOf(TEST_USER_MAIL, CONNECTED_ADMIN_USER) @@ -3927,21 +3903,21 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } returns mockk() val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.updateRunnerAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL, @@ -3953,7 +3929,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.updateRunnerAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL, @@ -3978,25 +3954,25 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, role) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, role) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) every { datasetApiService.createSubDataset(any(), any(), any()) } returns datasetSaved every { datasetApiService.getDatasetSecurityUsers(any(), any()) } returns listOf(TEST_USER_MAIL, CONNECTED_ADMIN_USER) @@ -4005,21 +3981,21 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } returns mockk() val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.updateRunnerAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL, @@ -4031,7 +4007,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.updateRunnerAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL, @@ -4056,22 +4032,22 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, solutionSaved.id!!, id = TEST_USER_MAIL, role = role) + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = role) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) every { datasetApiService.createSubDataset(any(), any(), any()) } returns datasetSaved every { datasetApiService.getDatasetSecurityUsers(any(), any()) } returns listOf(TEST_USER_MAIL, CONNECTED_ADMIN_USER) @@ -4080,21 +4056,21 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } returns mockk() val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = ROLE_ADMIN) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.updateRunnerAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL, @@ -4106,7 +4082,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.updateRunnerAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL, @@ -4130,25 +4106,25 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) every { datasetApiService.createSubDataset(any(), any(), any()) } returns datasetSaved every { datasetApiService.getDatasetSecurityUsers(any(), any()) } returns listOf(TEST_USER_MAIL, CONNECTED_ADMIN_USER) @@ -4157,21 +4133,21 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } returns mockk() val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), id = TEST_USER_MAIL, role = role) val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.updateRunnerAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL, @@ -4189,7 +4165,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.updateRunnerAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!, TEST_USER_MAIL, @@ -4214,28 +4190,27 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = role) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = role) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), @@ -4243,22 +4218,22 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { role = ROLE_ADMIN) every { datasetApiService.createSubDataset(any(), any(), any()) } returns datasetSaved val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.getRunnerSecurityUsers( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { runnerApiService.getRunnerSecurityUsers( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } } } @@ -4279,28 +4254,27 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) - val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, role) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) + val dataset = makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, role) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), @@ -4308,14 +4282,14 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { role = ROLE_ADMIN) every { datasetApiService.createSubDataset(any(), any(), any()) } returns datasetSaved val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.getRunnerSecurityUsers( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } assertEquals( "RBAC ${datasetSaved.id!!} - User does not have permission $PERMISSION_READ", @@ -4323,7 +4297,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.getRunnerSecurityUsers( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } } } @@ -4344,28 +4318,28 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, role) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, role) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), @@ -4373,14 +4347,14 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { role = ROLE_ADMIN) every { datasetApiService.createSubDataset(any(), any(), any()) } returns datasetSaved val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.getRunnerSecurityUsers( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } assertEquals( "RBAC ${solutionSaved.id!!} - User does not have permission $PERMISSION_READ", @@ -4388,7 +4362,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.getRunnerSecurityUsers( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } } } @@ -4409,25 +4383,25 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, solutionSaved.id!!, id = TEST_USER_MAIL, role = role) + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = role) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), @@ -4435,14 +4409,14 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { role = ROLE_ADMIN) every { datasetApiService.createSubDataset(any(), any(), any()) } returns datasetSaved val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.getRunnerSecurityUsers( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } assertEquals( "RBAC ${workspaceSaved.id!!} - User does not have permission $PERMISSION_READ", @@ -4450,7 +4424,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.getRunnerSecurityUsers( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } } } @@ -4470,28 +4444,28 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val connector = makeConnector() val connectorSaved = connectorApiService.registerConnector(connector) - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - val organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + val organizationSaved = organizationApiService.createOrganization(organization) val dataset = - makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) - var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + makeDataset(organizationSaved.id, connectorSaved, TEST_USER_MAIL, ROLE_ADMIN) + var datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) datasetSaved = datasetRepository.save( datasetSaved.apply { ingestionStatus = IngestionStatusEnum.SUCCESS }) - val solution = makeSolution(organizationSaved.id!!, TEST_USER_MAIL, ROLE_ADMIN) - val solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id, TEST_USER_MAIL, ROLE_ADMIN) + val solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val workspace = makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN) val workspaceSaved = - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceApiService.createWorkspace(organizationSaved.id, workspace) val runner = makeRunnerWithRole( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, solutionSaved.id!!, mutableListOf(datasetSaved.id!!), @@ -4499,14 +4473,14 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { role = role) every { datasetApiService.createSubDataset(any(), any(), any()) } returns datasetSaved val runnerSaved = - runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner) + runnerApiService.createRunner(organizationSaved.id, workspaceSaved.id!!, runner) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { runnerApiService.getRunnerSecurityUsers( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } if (role == ROLE_NONE) { assertEquals( @@ -4520,7 +4494,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { runnerApiService.getRunnerSecurityUsers( - organizationSaved.id!!, workspaceSaved.id!!, runnerSaved.id!!) + organizationSaved.id, workspaceSaved.id!!, runnerSaved.id!!) } } } @@ -4582,11 +4556,9 @@ class RunnerServiceRBACTest : CsmRedisTestBase() { SolutionAccessControl(id = id, role = role)))) } - fun makeOrganizationWithRole(id: String, role: String): Organization { - return Organization( - id = UUID.randomUUID().toString(), + fun makeOrganizationRequestWithRole(id: String, role: String): OrganizationCreationRequest { + return OrganizationCreationRequest( name = "Organization Name", - ownerId = "my.account-tester@cosmotech.com", security = OrganizationSecurity( default = ROLE_NONE, diff --git a/runner/src/main/kotlin/com/cosmotech/runner/service/RunnerService.kt b/runner/src/main/kotlin/com/cosmotech/runner/service/RunnerService.kt index de8480b36..aa43418d8 100644 --- a/runner/src/main/kotlin/com/cosmotech/runner/service/RunnerService.kt +++ b/runner/src/main/kotlin/com/cosmotech/runner/service/RunnerService.kt @@ -79,7 +79,7 @@ class RunnerService( } fun inOrganization(organizationId: String): RunnerService = apply { - this.organization = organizationApiService.findOrganizationById(organizationId) + this.organization = organizationApiService.getOrganization(organizationId) } fun inWorkspace(workspaceId: String): RunnerService = apply { @@ -88,7 +88,7 @@ class RunnerService( "RunnerService's organization needs to be set. use inOrganization to do so.") } - this.workspace = workspaceApiService.findWorkspaceById(this.organization!!.id!!, workspaceId) + this.workspace = workspaceApiService.findWorkspaceById(this.organization!!.id, workspaceId) } fun userHasPermissionOnWorkspace(permission: String): RunnerService = apply { @@ -174,7 +174,7 @@ class RunnerService( fun getInstance(runnerId: String): RunnerInstance { val runner = - runnerRepository.findBy(organization!!.id!!, workspace!!.id!!, runnerId).orElseThrow { + runnerRepository.findBy(organization!!.id, workspace!!.id!!, runnerId).orElseThrow { CsmResourceNotFoundException( "Runner $runnerId not found in workspace ${workspace!!.id} and organization ${organization!!.id}") } @@ -185,18 +185,18 @@ class RunnerService( fun listInstances(pageRequest: PageRequest): List { val isPlatformAdmin = getCurrentAuthenticatedRoles(this.csmPlatformProperties).contains(ROLE_PLATFORM_ADMIN) - var runners = listOf() + val runners: List if (!this.csmPlatformProperties.rbac.enabled || isPlatformAdmin) { runners = runnerRepository - .findByWorkspaceId(organization!!.id!!, workspace!!.id!!, pageRequest) + .findByWorkspaceId(organization!!.id, workspace!!.id!!, pageRequest) .toList() } else { val currentUser = getCurrentAccountIdentifier(this.csmPlatformProperties) runners = runnerRepository .findByWorkspaceIdAndSecurity( - organization!!.id!!, workspace!!.id!!, currentUser, pageRequest) + organization!!.id, workspace!!.id!!, currentUser, pageRequest) .toList() } runners.forEach { it.security = updateSecurityVisibility(it).security } @@ -245,7 +245,7 @@ class RunnerService( if (runner.runTemplateId.isNullOrEmpty()) throw IllegalArgumentException("runner does not have a runTemplateId define") if (!solutionApiService.isRunTemplateExist( - organization!!.id!!, + organization!!.id, workspace!!.id!!, workspace!!.solution.solutionId!!, runner.runTemplateId!!)) @@ -268,9 +268,7 @@ class RunnerService( // take newly added datasets and propagate existing ACL on it this.runner.datasetList ?.filterNot { beforeMutateDatasetList.contains(it) } - ?.mapNotNull { - datasetApiService.findByOrganizationIdAndDatasetId(organization!!.id!!, it) - } + ?.mapNotNull { datasetApiService.findByOrganizationIdAndDatasetId(organization!!.id, it) } ?.forEach { dataset -> this.runner.security?.accessControlList?.forEach { roleDefinition -> addUserAccessControlOnDataset(dataset, roleDefinition) @@ -320,7 +318,7 @@ class RunnerService( this.runner.parentId?.let { this.runner.rootId = runnerRepository - .findBy(organization!!.id!!, workspace!!.id!!, it) + .findBy(organization!!.id, workspace!!.id!!, it) .orElseThrow { IllegalArgumentException("Parent runner not found: ${it}") } .rootId ?: this.runner.parentId @@ -513,7 +511,7 @@ class RunnerService( val newDatasetAcl = dataset.getRbac().accessControlList if (newDatasetAcl.none { it.id == roleDefinition.id }) { datasetApiService.addOrUpdateAccessControl( - organization!!.id!!, dataset, roleDefinition.id, roleDefinition.role) + organization!!.id, dataset, roleDefinition.id, roleDefinition.role) } } } diff --git a/solution/src/integrationTest/kotlin/com/cosmotech/solution/service/SolutionServiceIntegrationTest.kt b/solution/src/integrationTest/kotlin/com/cosmotech/solution/service/SolutionServiceIntegrationTest.kt index 48c85ab1f..c458cd4fd 100644 --- a/solution/src/integrationTest/kotlin/com/cosmotech/solution/service/SolutionServiceIntegrationTest.kt +++ b/solution/src/integrationTest/kotlin/com/cosmotech/solution/service/SolutionServiceIntegrationTest.kt @@ -17,6 +17,7 @@ import com.cosmotech.api.utils.getCurrentAuthenticatedUserName import com.cosmotech.organization.OrganizationApiServiceInterface import com.cosmotech.organization.domain.Organization import com.cosmotech.organization.domain.OrganizationAccessControl +import com.cosmotech.organization.domain.OrganizationCreationRequest import com.cosmotech.organization.domain.OrganizationSecurity import com.cosmotech.solution.SolutionApiServiceInterface import com.cosmotech.solution.domain.RunTemplate @@ -63,7 +64,7 @@ class SolutionServiceIntegrationTest : CsmRedisTestBase() { @Autowired lateinit var solutionApiService: SolutionApiServiceInterface @Autowired lateinit var csmPlatformProperties: CsmPlatformProperties - lateinit var organization: Organization + lateinit var organization: OrganizationCreationRequest lateinit var solution: Solution lateinit var organizationSaved: Organization @@ -79,11 +80,11 @@ class SolutionServiceIntegrationTest : CsmRedisTestBase() { rediSearchIndexer.createIndexFor(Organization::class.java) rediSearchIndexer.createIndexFor(Solution::class.java) - organization = makeOrganization("Organization test") - organizationSaved = organizationApiService.registerOrganization(organization) + organization = makeOrganizationRequest("Organization test") + organizationSaved = organizationApiService.createOrganization(organization) - solution = makeSolution(organizationSaved.id!!) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solution = makeSolution(organizationSaved.id) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) } @Test @@ -92,7 +93,7 @@ class SolutionServiceIntegrationTest : CsmRedisTestBase() { val solution = Solution( id = "id", - organizationId = organizationSaved.id!!, + organizationId = organizationSaved.id, key = "key", name = "name", runTemplates = mutableListOf(RunTemplate(id = "one"), RunTemplate(id = "two")), @@ -100,11 +101,11 @@ class SolutionServiceIntegrationTest : CsmRedisTestBase() { SolutionSecurity( ROLE_NONE, mutableListOf(SolutionAccessControl(CONNECTED_ADMIN_USER, ROLE_ADMIN)))) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val endTemplates = solutionApiService.updateSolutionRunTemplate( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, "one", RunTemplate(id = "one", name = "name_one")) @@ -112,7 +113,7 @@ class SolutionServiceIntegrationTest : CsmRedisTestBase() { val expectedSolution = Solution( id = "id", - organizationId = organizationSaved.id!!, + organizationId = organizationSaved.id, key = "key", name = "name", runTemplates = @@ -126,70 +127,70 @@ class SolutionServiceIntegrationTest : CsmRedisTestBase() { fun `test CRUD operations on Solution`() { logger.info("should add a new solution") - val solution2 = makeSolution(organizationSaved.id!!) - val solutionCreated = solutionApiService.createSolution(organizationSaved.id!!, solution2) + val solution2 = makeSolution(organizationSaved.id) + val solutionCreated = solutionApiService.createSolution(organizationSaved.id, solution2) logger.info("should find the new solution by id and assert it is the same as the one created") val solutionFound = - solutionApiService.findSolutionById(organizationSaved.id!!, solutionCreated.id!!) + solutionApiService.findSolutionById(organizationSaved.id, solutionCreated.id!!) assertEquals(solutionCreated, solutionFound) logger.info( "should find all solutions for the organization and assert the list contains 2 elements") - val solutionsFound = solutionApiService.findAllSolutions(organizationSaved.id!!, null, null) + val solutionsFound = solutionApiService.findAllSolutions(organizationSaved.id, null, null) assertTrue(solutionsFound.size == 2) logger.info("should update the solution and assert that the name has been updated") solutionCreated.name = "My solution updated" val solutionUpdated = solutionApiService.updateSolution( - organizationSaved.id!!, solutionCreated.id!!, solutionCreated) + organizationSaved.id, solutionCreated.id!!, solutionCreated) assertEquals(solutionCreated.name, solutionUpdated.name) logger.info( "should delete the solution and assert that the list of solutions contains only 1 element") - solutionApiService.deleteSolution(organizationSaved.id!!, solutionCreated.id!!) + solutionApiService.deleteSolution(organizationSaved.id, solutionCreated.id!!) val solutionsFoundAfterDelete = - solutionApiService.findAllSolutions(organizationSaved.id!!, null, null) + solutionApiService.findAllSolutions(organizationSaved.id, null, null) assertTrue(solutionsFoundAfterDelete.size == 1) } @Test fun `can delete solution when user is not the owner and is Platform Admin`() { logger.info("Register new solution...") - val solution = makeSolution(organizationSaved.id!!) - val solutionCreated = solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id) + val solutionCreated = solutionApiService.createSolution(organizationSaved.id, solution) every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER every { getCurrentAuthenticatedUserName(csmPlatformProperties) } returns "test.admin" every { getCurrentAuthenticatedRoles(any()) } returns listOf(ROLE_PLATFORM_ADMIN) - solutionApiService.deleteSolution(organizationSaved.id!!, solutionCreated.id!!) + solutionApiService.deleteSolution(organizationSaved.id, solutionCreated.id!!) assertThrows { - solutionCreated.id?.let { solutionApiService.findSolutionById(organizationSaved.id!!, it) } + solutionCreated.id?.let { solutionApiService.findSolutionById(organizationSaved.id, it) } } } @Test fun `cannot delete solution when user is not the owner and is not Platform Admin`() { logger.info("Register new solution...") - val solution = makeSolution(organizationSaved.id!!) - val solutionCreated = solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id) + val solutionCreated = solutionApiService.createSolution(organizationSaved.id, solution) every { getCurrentAccountIdentifier(any()) } returns CONNECTED_READER_USER every { getCurrentAuthenticatedUserName(csmPlatformProperties) } returns "test.other.user" every { getCurrentAuthenticatedRoles(any()) } returns listOf() assertThrows { - solutionApiService.deleteSolution(organizationSaved.id!!, solutionCreated.id!!) + solutionApiService.deleteSolution(organizationSaved.id, solutionCreated.id!!) } } @Test fun `can update solution when user is not the owner and is Platform Admin`() { logger.info("Register new solution...") - val solution = makeSolution(organizationSaved.id!!) - val solutionCreated = solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id) + val solutionCreated = solutionApiService.createSolution(organizationSaved.id, solution) every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER every { getCurrentAuthenticatedUserName(csmPlatformProperties) } returns "test.other.user" @@ -198,9 +199,9 @@ class SolutionServiceIntegrationTest : CsmRedisTestBase() { val updateSolution = solutionApiService.updateSolution( - organizationSaved.id!!, solutionCreated.id!!, solutionCreated) + organizationSaved.id, solutionCreated.id!!, solutionCreated) - updateSolution.id?.let { solutionApiService.findSolutionById(organizationSaved.id!!, it) } + updateSolution.id?.let { solutionApiService.findSolutionById(organizationSaved.id, it) } assertEquals("new_owner_id", updateSolution.ownerId) } @@ -208,8 +209,8 @@ class SolutionServiceIntegrationTest : CsmRedisTestBase() { @Test fun `cannot update solution when user is not the owner and is not Platform Admin`() { logger.info("Register new solution...") - val solution = makeSolution(organizationSaved.id!!) - val solutionCreated = solutionApiService.createSolution(organizationSaved.id!!, solution) + val solution = makeSolution(organizationSaved.id) + val solutionCreated = solutionApiService.createSolution(organizationSaved.id, solution) every { getCurrentAccountIdentifier(any()) } returns CONNECTED_READER_USER every { getCurrentAuthenticatedUserName(csmPlatformProperties) } returns "test.other.user" @@ -217,8 +218,7 @@ class SolutionServiceIntegrationTest : CsmRedisTestBase() { solutionCreated.ownerId = "new_owner_id" assertThrows { - solutionApiService.updateSolution( - organizationSaved.id!!, solutionCreated.id!!, solutionCreated) + solutionApiService.updateSolution(organizationSaved.id, solutionCreated.id!!, solutionCreated) } } @@ -337,22 +337,22 @@ class SolutionServiceIntegrationTest : CsmRedisTestBase() { val expectedSize = 15 IntRange(1, numberOfSolutions - 1).forEach { solutionApiService.createSolution( - organizationId = organizationSaved.id!!, solution = makeSolution(organizationSaved.id!!)) + organizationId = organizationSaved.id, solution = makeSolution(organizationSaved.id)) } logger.info("should find all solutions and assert there are $numberOfSolutions") - var solutions = solutionApiService.findAllSolutions(organizationSaved.id!!, null, null) + var solutions = solutionApiService.findAllSolutions(organizationSaved.id, null, null) assertEquals(numberOfSolutions, solutions.size) logger.info("should find all solutions and assert it equals defaultPageSize: $defaultPageSize") - solutions = solutionApiService.findAllSolutions(organizationSaved.id!!, 0, null) + solutions = solutionApiService.findAllSolutions(organizationSaved.id, 0, null) assertEquals(defaultPageSize, solutions.size) logger.info("should find all solutions and assert there are expected size: $expectedSize") - solutions = solutionApiService.findAllSolutions(organizationSaved.id!!, 0, expectedSize) + solutions = solutionApiService.findAllSolutions(organizationSaved.id, 0, expectedSize) assertEquals(expectedSize, solutions.size) logger.info("should find all solutions and assert it returns the second / last page") - solutions = solutionApiService.findAllSolutions(organizationSaved.id!!, 1, expectedSize) + solutions = solutionApiService.findAllSolutions(organizationSaved.id, 1, expectedSize) assertEquals(numberOfSolutions - expectedSize, solutions.size) } @@ -360,24 +360,24 @@ class SolutionServiceIntegrationTest : CsmRedisTestBase() { fun `test find All Solutions with wrong pagination params`() { logger.info("should throw IllegalArgumentException when page and size are zero") assertThrows { - solutionApiService.findAllSolutions(organizationSaved.id!!, null, 0) + solutionApiService.findAllSolutions(organizationSaved.id, null, 0) } logger.info("should throw IllegalArgumentException when page is negative") assertThrows { - solutionApiService.findAllSolutions(organizationSaved.id!!, -1, 1) + solutionApiService.findAllSolutions(organizationSaved.id, -1, 1) } logger.info("should throw IllegalArgumentException when size is negative") assertThrows { - solutionApiService.findAllSolutions(organizationSaved.id!!, 0, -1) + solutionApiService.findAllSolutions(organizationSaved.id, 0, -1) } } @Test fun `test create solution with null runTemplates`() { - val solutionWithNullRunTemplates = makeSolution(organizationSaved.id!!) + val solutionWithNullRunTemplates = makeSolution(organizationSaved.id) val solutionWithNullRunTemplatesSaved = - solutionApiService.createSolution(organizationSaved.id!!, solutionWithNullRunTemplates) + solutionApiService.createSolution(organizationSaved.id, solutionWithNullRunTemplates) assertNotNull(solutionWithNullRunTemplatesSaved) assertNotNull(solutionWithNullRunTemplatesSaved.runTemplates) @@ -388,9 +388,9 @@ class SolutionServiceIntegrationTest : CsmRedisTestBase() { fun `test create solution with empty runTemplates list`() { val solutionWithNullRunTemplates = - makeSolution(organizationSaved.id!!, runTemplates = mutableListOf()) + makeSolution(organizationSaved.id, runTemplates = mutableListOf()) val solutionWithNullRunTemplatesSaved = - solutionApiService.createSolution(organizationSaved.id!!, solutionWithNullRunTemplates) + solutionApiService.createSolution(organizationSaved.id, solutionWithNullRunTemplates) assertNotNull(solutionWithNullRunTemplatesSaved) assertNotNull(solutionWithNullRunTemplatesSaved.runTemplates) @@ -400,13 +400,13 @@ class SolutionServiceIntegrationTest : CsmRedisTestBase() { @Test fun `test update solution RunTemplate with wrong runTemplateId`() { - val baseSolution = makeSolution(organizationSaved.id!!) - val baseSolutionSaved = solutionApiService.createSolution(organizationSaved.id!!, baseSolution) + val baseSolution = makeSolution(organizationSaved.id) + val baseSolutionSaved = solutionApiService.createSolution(organizationSaved.id, baseSolution) val assertThrows = assertThrows { solutionApiService.updateSolutionRunTemplate( - organizationSaved.id!!, + organizationSaved.id, baseSolutionSaved.id!!, "WrongRunTemplateId", RunTemplate(id = "FakeRunTemplateId")) @@ -433,12 +433,12 @@ class SolutionServiceIntegrationTest : CsmRedisTestBase() { run = false, parameterGroups = mutableListOf("new_p_1", "new_p_2"))) - val baseSolution = makeSolution(organizationSaved.id!!, baseSolutionRunTemplates) - val baseSolutionSaved = solutionApiService.createSolution(organizationSaved.id!!, baseSolution) + val baseSolution = makeSolution(organizationSaved.id, baseSolutionRunTemplates) + val baseSolutionSaved = solutionApiService.createSolution(organizationSaved.id, baseSolution) val updateSolutionSaved = solutionApiService.updateSolution( - organizationSaved.id!!, + organizationSaved.id, baseSolutionSaved.id!!, baseSolutionSaved.apply { runTemplates = modifiedSolutionRunTemplates }) @@ -456,12 +456,12 @@ class SolutionServiceIntegrationTest : CsmRedisTestBase() { run = true, parameterGroups = mutableListOf("p_1", "p_2"))) - val baseSolution = makeSolution(organizationSaved.id!!, baseSolutionRunTemplates) - val baseSolutionSaved = solutionApiService.createSolution(organizationSaved.id!!, baseSolution) + val baseSolution = makeSolution(organizationSaved.id, baseSolutionRunTemplates) + val baseSolutionSaved = solutionApiService.createSolution(organizationSaved.id, baseSolution) val updateSolutionSaved = solutionApiService.updateSolution( - organizationSaved.id!!, + organizationSaved.id, baseSolutionSaved.id!!, baseSolutionSaved.apply { runTemplates = mutableListOf() }) @@ -472,7 +472,7 @@ class SolutionServiceIntegrationTest : CsmRedisTestBase() { fun `test get security endpoint`() { // should return the current security val solutionSecurity = - solutionApiService.getSolutionSecurity(organizationSaved.id!!, solutionSaved.id!!) + solutionApiService.getSolutionSecurity(organizationSaved.id, solutionSaved.id!!) assertEquals(solutionSaved.security, solutionSecurity) } @@ -481,15 +481,15 @@ class SolutionServiceIntegrationTest : CsmRedisTestBase() { // should update the default security and assert it worked val solutionDefaultSecurity = solutionApiService.setSolutionDefaultSecurity( - organizationSaved.id!!, solutionSaved.id!!, SolutionRole(ROLE_VIEWER)) - solutionSaved = solutionApiService.findSolutionById(organizationSaved.id!!, solutionSaved.id!!) + organizationSaved.id, solutionSaved.id!!, SolutionRole(ROLE_VIEWER)) + solutionSaved = solutionApiService.findSolutionById(organizationSaved.id, solutionSaved.id!!) assertEquals(solutionSaved.security!!, solutionDefaultSecurity) } @Test fun `access control list shouldn't contain more than one time each user on creation`() { organizationSaved = - organizationApiService.registerOrganization(makeOrganization("organization")) + organizationApiService.createOrganization(makeOrganizationRequest("organization")) val brokenSolution = Solution( name = "solution", @@ -501,20 +501,20 @@ class SolutionServiceIntegrationTest : CsmRedisTestBase() { SolutionAccessControl(CONNECTED_ADMIN_USER, ROLE_ADMIN), SolutionAccessControl(CONNECTED_ADMIN_USER, ROLE_EDITOR)))) assertThrows { - solutionApiService.createSolution(organizationSaved.id!!, brokenSolution) + solutionApiService.createSolution(organizationSaved.id, brokenSolution) } } @Test fun `access control list shouldn't contain more than one time each user on ACL addition`() { organizationSaved = - organizationApiService.registerOrganization(makeOrganization("organization")) + organizationApiService.createOrganization(makeOrganizationRequest("organization")) val workingSolution = makeSolution() - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, workingSolution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, workingSolution) assertThrows { solutionApiService.addSolutionAccessControl( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, SolutionAccessControl(CONNECTED_ADMIN_USER, ROLE_EDITOR)) } @@ -522,10 +522,10 @@ class SolutionServiceIntegrationTest : CsmRedisTestBase() { @Test fun `As viewer, I can only see my information in security property for findSolutionById`() { - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) every { getCurrentAccountIdentifier(any()) } returns CONNECTED_READER_USER - solutionSaved = solutionApiService.findSolutionById(organizationSaved.id!!, solutionSaved.id!!) + solutionSaved = solutionApiService.findSolutionById(organizationSaved.id, solutionSaved.id!!) assertEquals( SolutionSecurity( default = ROLE_NONE, @@ -536,10 +536,10 @@ class SolutionServiceIntegrationTest : CsmRedisTestBase() { @Test fun `As viewer, I can only see my information in security property for findAllSolutions`() { - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) every { getCurrentAccountIdentifier(any()) } returns CONNECTED_READER_USER - val solutions = solutionApiService.findAllSolutions(organizationSaved.id!!, null, null) + val solutions = solutionApiService.findAllSolutions(organizationSaved.id, null, null) solutions.forEach { assertEquals( SolutionSecurity( @@ -550,11 +550,9 @@ class SolutionServiceIntegrationTest : CsmRedisTestBase() { } } - fun makeOrganization(id: String = "organization_id"): Organization { - return Organization( - id = id, + fun makeOrganizationRequest(id: String = "organization_id"): OrganizationCreationRequest { + return OrganizationCreationRequest( name = "Organization Name", - ownerId = "my.account-tester@cosmotech.com", security = OrganizationSecurity( default = ROLE_NONE, @@ -565,7 +563,7 @@ class SolutionServiceIntegrationTest : CsmRedisTestBase() { } fun makeSolution( - organizationId: String = organizationSaved.id!!, + organizationId: String = organizationSaved.id, runTemplates: MutableList = mutableListOf(), userName: String = CONNECTED_READER_USER, role: String = ROLE_VIEWER diff --git a/solution/src/integrationTest/kotlin/com/cosmotech/solution/service/SolutionServiceRBACTest.kt b/solution/src/integrationTest/kotlin/com/cosmotech/solution/service/SolutionServiceRBACTest.kt index f2521fc42..9ad0c6a39 100644 --- a/solution/src/integrationTest/kotlin/com/cosmotech/solution/service/SolutionServiceRBACTest.kt +++ b/solution/src/integrationTest/kotlin/com/cosmotech/solution/service/SolutionServiceRBACTest.kt @@ -23,6 +23,7 @@ import com.cosmotech.api.utils.getCurrentAuthenticatedUserName import com.cosmotech.organization.api.OrganizationApiService import com.cosmotech.organization.domain.Organization import com.cosmotech.organization.domain.OrganizationAccessControl +import com.cosmotech.organization.domain.OrganizationCreationRequest import com.cosmotech.organization.domain.OrganizationSecurity import com.cosmotech.solution.api.SolutionApiService import com.cosmotech.solution.domain.RunTemplate @@ -71,7 +72,7 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { @Autowired lateinit var csmPlatformProperties: CsmPlatformProperties - lateinit var organization: Organization + lateinit var organization: OrganizationCreationRequest lateinit var solution: Solution lateinit var organizationSaved: Organization @@ -105,25 +106,24 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC findSolutionById : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = role) + organizationSaved = organizationApiService.createOrganization(organization) val solution = makeSolutionWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { - solutionApiService.findSolutionById( - organizationSaved.id!!, solutionSaved.id!!) + solutionApiService.findSolutionById(organizationSaved.id, solutionSaved.id!!) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { - solutionApiService.findSolutionById(organizationSaved.id!!, solutionSaved.id!!) + solutionApiService.findSolutionById(organizationSaved.id, solutionSaved.id!!) } } } @@ -142,25 +142,25 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Solution RBAC findSolutionById : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + organizationSaved = organizationApiService.createOrganization(organization) val solution = makeSolutionWithRole(id = TEST_USER_MAIL, role = role) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { - solutionApiService.findSolutionById( - organizationSaved.id!!, solutionSaved.id!!) + solutionApiService.findSolutionById(organizationSaved.id, solutionSaved.id!!) } assertEquals( "RBAC ${solutionSaved.id!!} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { - solutionApiService.findSolutionById(organizationSaved.id!!, solutionSaved.id!!) + solutionApiService.findSolutionById(organizationSaved.id, solutionSaved.id!!) } } } @@ -179,25 +179,24 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test RBAC findAllSolutions : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER organizationSaved = - organizationApiService.registerOrganization( - makeOrganizationWithRole( - organizationId = "id", id = TEST_USER_MAIL, role = role)) + organizationApiService.createOrganization( + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = role)) solutionApiService.createSolution( - organizationSaved.id!!, + organizationSaved.id, makeSolutionWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN)) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { - solutionApiService.findAllSolutions(organizationSaved.id!!, null, null) + solutionApiService.findAllSolutions(organizationSaved.id, null, null) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { - solutionApiService.findAllSolutions(organizationSaved.id!!, null, null) + solutionApiService.findAllSolutions(organizationSaved.id, null, null) } } } @@ -216,8 +215,8 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test RBAC createSolution : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = role) + organizationSaved = organizationApiService.createOrganization(organization) solution = makeSolutionWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -225,15 +224,15 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { if (shouldThrow) { val exception = assertThrows { - solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionApiService.createSolution(organizationSaved.id, solution) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_CREATE_CHILDREN", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_CREATE_CHILDREN", exception.message) } else { assertDoesNotThrow { - solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionApiService.createSolution(organizationSaved.id, solution) } } } @@ -252,24 +251,24 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC deleteSolution : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = role) + organizationSaved = organizationApiService.createOrganization(organization) val solution = makeSolutionWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { - solutionApiService.deleteSolution(organizationSaved.id!!, solutionSaved.id!!) + solutionApiService.deleteSolution(organizationSaved.id, solutionSaved.id!!) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { - solutionApiService.deleteSolution(organizationSaved.id!!, solutionSaved.id!!) + solutionApiService.deleteSolution(organizationSaved.id, solutionSaved.id!!) } } } @@ -288,17 +287,18 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Solution RBAC deleteSolution : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + organizationSaved = organizationApiService.createOrganization(organization) val solution = makeSolutionWithRole(id = TEST_USER_MAIL, role = role) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL if (shouldThrow) { val exception = assertThrows { - solutionApiService.deleteSolution(organizationSaved.id!!, solutionSaved.id!!) + solutionApiService.deleteSolution(organizationSaved.id, solutionSaved.id!!) } assertEquals( @@ -306,7 +306,7 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { exception.message) } else { assertDoesNotThrow { - solutionApiService.deleteSolution(organizationSaved.id!!, solutionSaved.id!!) + solutionApiService.deleteSolution(organizationSaved.id, solutionSaved.id!!) } } } @@ -325,10 +325,10 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC updateSolution : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = role) + organizationSaved = organizationApiService.createOrganization(organization) solution = makeSolutionWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) solution = makeSolutionWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) @@ -338,15 +338,15 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { solutionApiService.updateSolution( - organizationSaved.id!!, solutionSaved.id!!, solution) + organizationSaved.id, solutionSaved.id!!, solution) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { solutionApiService.updateSolution( - organizationSaved.id!!, solutionSaved.id!!, solution) + organizationSaved.id, solutionSaved.id!!, solution) } } } @@ -365,10 +365,10 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Solution RBAC updateSolution : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - organizationSaved = organizationApiService.registerOrganization(organization) + organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + organizationSaved = organizationApiService.createOrganization(organization) solution = makeSolutionWithRole(id = TEST_USER_MAIL, role = role) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) solution = makeSolutionWithRole(id = TEST_USER_MAIL, role = role) @@ -378,7 +378,7 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { solutionApiService.updateSolution( - organizationSaved.id!!, solutionSaved.id!!, solution) + organizationSaved.id, solutionSaved.id!!, solution) } assertEquals( @@ -387,7 +387,7 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { solutionApiService.updateSolution( - organizationSaved.id!!, solutionSaved.id!!, solution) + organizationSaved.id, solutionSaved.id!!, solution) } } } @@ -406,10 +406,10 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC addSolutionAccessControl : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = role) + organizationSaved = organizationApiService.createOrganization(organization) solution = makeSolutionWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -417,17 +417,17 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { solutionApiService.addSolutionAccessControl( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, SolutionAccessControl("user", ROLE_USER)) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { solutionApiService.addSolutionAccessControl( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, SolutionAccessControl("user", ROLE_USER)) } @@ -448,10 +448,10 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Solution RBAC addSolutionAccessControl : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - organizationSaved = organizationApiService.registerOrganization(organization) + organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + organizationSaved = organizationApiService.createOrganization(organization) solution = makeSolutionWithRole(id = TEST_USER_MAIL, role = role) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -459,7 +459,7 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { solutionApiService.addSolutionAccessControl( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, SolutionAccessControl("user", ROLE_USER)) } @@ -470,7 +470,7 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { solutionApiService.addSolutionAccessControl( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, SolutionAccessControl("user", ROLE_USER)) } @@ -491,10 +491,10 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC getSolutionAccessControl : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = role) + organizationSaved = organizationApiService.createOrganization(organization) solution = makeSolutionWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -502,15 +502,15 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { solutionApiService.getSolutionAccessControl( - organizationSaved.id!!, solutionSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, solutionSaved.id!!, TEST_USER_MAIL) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { solutionApiService.getSolutionAccessControl( - organizationSaved.id!!, solutionSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, solutionSaved.id!!, TEST_USER_MAIL) } } } @@ -529,10 +529,10 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Solution RBAC getSolutionAccessControl : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - organizationSaved = organizationApiService.registerOrganization(organization) + organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + organizationSaved = organizationApiService.createOrganization(organization) solution = makeSolutionWithRole(id = TEST_USER_MAIL, role = role) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -540,7 +540,7 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { solutionApiService.getSolutionAccessControl( - organizationSaved.id!!, solutionSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, solutionSaved.id!!, TEST_USER_MAIL) } assertEquals( @@ -549,7 +549,7 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { solutionApiService.getSolutionAccessControl( - organizationSaved.id!!, solutionSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, solutionSaved.id!!, TEST_USER_MAIL) } } } @@ -568,10 +568,10 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC getSolutionSecurityUsers : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = role) + organizationSaved = organizationApiService.createOrganization(organization) solution = makeSolutionWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -579,15 +579,15 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { solutionApiService.getSolutionSecurityUsers( - organizationSaved.id!!, solutionSaved.id!!) + organizationSaved.id, solutionSaved.id!!) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { solutionApiService.getSolutionSecurityUsers( - organizationSaved.id!!, solutionSaved.id!!) + organizationSaved.id, solutionSaved.id!!) } } } @@ -606,10 +606,10 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Solution RBAC getSolutionSecurityUsers : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - organizationSaved = organizationApiService.registerOrganization(organization) + organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + organizationSaved = organizationApiService.createOrganization(organization) solution = makeSolutionWithRole(id = TEST_USER_MAIL, role = role) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -617,7 +617,7 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { solutionApiService.getSolutionSecurityUsers( - organizationSaved.id!!, solutionSaved.id!!) + organizationSaved.id, solutionSaved.id!!) } assertEquals( @@ -626,7 +626,7 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { solutionApiService.getSolutionSecurityUsers( - organizationSaved.id!!, solutionSaved.id!!) + organizationSaved.id, solutionSaved.id!!) } } } @@ -645,10 +645,10 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC removeSolutionAccessControl : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = role) + organizationSaved = organizationApiService.createOrganization(organization) solution = makeSolutionWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -656,15 +656,15 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { solutionApiService.removeSolutionAccessControl( - organizationSaved.id!!, solutionSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, solutionSaved.id!!, TEST_USER_MAIL) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { solutionApiService.removeSolutionAccessControl( - organizationSaved.id!!, solutionSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, solutionSaved.id!!, TEST_USER_MAIL) } } } @@ -683,10 +683,10 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Solution RBAC removeSolutionAccessControl : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - organizationSaved = organizationApiService.registerOrganization(organization) + organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + organizationSaved = organizationApiService.createOrganization(organization) solution = makeSolutionWithRole(id = TEST_USER_MAIL, role = role) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -694,7 +694,7 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { solutionApiService.removeSolutionAccessControl( - organizationSaved.id!!, solutionSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, solutionSaved.id!!, TEST_USER_MAIL) } assertEquals( @@ -703,7 +703,7 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { solutionApiService.removeSolutionAccessControl( - organizationSaved.id!!, solutionSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, solutionSaved.id!!, TEST_USER_MAIL) } } } @@ -722,10 +722,10 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC updateSolutionAccessControl : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = role) + organizationSaved = organizationApiService.createOrganization(organization) solution = makeSolutionWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -733,18 +733,18 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { solutionApiService.updateSolutionAccessControl( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, TEST_USER_MAIL, SolutionRole(ROLE_USER)) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { solutionApiService.updateSolutionAccessControl( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, TEST_USER_MAIL, SolutionRole(ROLE_USER)) @@ -766,10 +766,10 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Solution RBAC updateSolutionAccessControl : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - organizationSaved = organizationApiService.registerOrganization(organization) + organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + organizationSaved = organizationApiService.createOrganization(organization) solution = makeSolutionWithRole(id = TEST_USER_MAIL, role = role) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -777,7 +777,7 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { solutionApiService.updateSolutionAccessControl( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, TEST_USER_MAIL, SolutionRole(ROLE_USER)) @@ -788,7 +788,7 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { solutionApiService.updateSolutionAccessControl( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, TEST_USER_MAIL, SolutionRole(ROLE_USER)) @@ -810,10 +810,10 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC addOrReplaceParameters : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = role) + organizationSaved = organizationApiService.createOrganization(organization) val solution = makeSolutionWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val runTemplateParameter = RunTemplateParameter("id") @@ -823,15 +823,15 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { solutionApiService.addOrReplaceParameters( - organizationSaved.id!!, solutionSaved.id!!, listOf(runTemplateParameter)) + organizationSaved.id, solutionSaved.id!!, listOf(runTemplateParameter)) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { solutionApiService.addOrReplaceParameters( - organizationSaved.id!!, solutionSaved.id!!, listOf(runTemplateParameter)) + organizationSaved.id, solutionSaved.id!!, listOf(runTemplateParameter)) } } } @@ -850,10 +850,11 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Solution RBAC addOrReplaceParameters : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + organizationSaved = organizationApiService.createOrganization(organization) val solution = makeSolutionWithRole(id = TEST_USER_MAIL, role = role) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val runTemplateParameter = RunTemplateParameter("id") @@ -863,7 +864,7 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { solutionApiService.addOrReplaceParameters( - organizationSaved.id!!, solutionSaved.id!!, listOf(runTemplateParameter)) + organizationSaved.id, solutionSaved.id!!, listOf(runTemplateParameter)) } assertEquals( @@ -872,7 +873,7 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { solutionApiService.addOrReplaceParameters( - organizationSaved.id!!, solutionSaved.id!!, listOf(runTemplateParameter)) + organizationSaved.id, solutionSaved.id!!, listOf(runTemplateParameter)) } } } @@ -891,10 +892,10 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC removeAllSolutionParameters : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = role) + organizationSaved = organizationApiService.createOrganization(organization) val solution = makeSolutionWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -902,15 +903,15 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { solutionApiService.removeAllSolutionParameters( - organizationSaved.id!!, solutionSaved.id!!) + organizationSaved.id, solutionSaved.id!!) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { solutionApiService.removeAllSolutionParameters( - organizationSaved.id!!, solutionSaved.id!!) + organizationSaved.id, solutionSaved.id!!) } } } @@ -929,10 +930,11 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Solution RBAC removeAllSolutionParameters : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + organizationSaved = organizationApiService.createOrganization(organization) val solution = makeSolutionWithRole(id = TEST_USER_MAIL, role = role) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -940,7 +942,7 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { solutionApiService.removeAllSolutionParameters( - organizationSaved.id!!, solutionSaved.id!!) + organizationSaved.id, solutionSaved.id!!) } assertEquals( @@ -949,7 +951,7 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { solutionApiService.removeAllSolutionParameters( - organizationSaved.id!!, solutionSaved.id!!) + organizationSaved.id, solutionSaved.id!!) } } } @@ -968,10 +970,10 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC addOrReplaceParameterGroups : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = role) + organizationSaved = organizationApiService.createOrganization(organization) val solution = makeSolutionWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val runTemplateParameterGroup = RunTemplateParameterGroup("id") @@ -981,17 +983,17 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { solutionApiService.addOrReplaceParameterGroups( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, listOf(runTemplateParameterGroup)) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { solutionApiService.addOrReplaceParameterGroups( - organizationSaved.id!!, solutionSaved.id!!, listOf(runTemplateParameterGroup)) + organizationSaved.id, solutionSaved.id!!, listOf(runTemplateParameterGroup)) } } } @@ -1010,10 +1012,11 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Solution RBAC addOrReplaceParameterGroups : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + organizationSaved = organizationApiService.createOrganization(organization) val solution = makeSolutionWithRole(id = TEST_USER_MAIL, role = role) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val runTemplateParameterGroup = RunTemplateParameterGroup("id") @@ -1023,7 +1026,7 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { solutionApiService.addOrReplaceParameterGroups( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, listOf(runTemplateParameterGroup)) } @@ -1034,7 +1037,7 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { solutionApiService.addOrReplaceParameterGroups( - organizationSaved.id!!, solutionSaved.id!!, listOf(runTemplateParameterGroup)) + organizationSaved.id, solutionSaved.id!!, listOf(runTemplateParameterGroup)) } } } @@ -1054,11 +1057,11 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { "Test Organization RBAC removeAllSolutionParameterGroups : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = role) + organizationSaved = organizationApiService.createOrganization(organization) val solution = makeSolutionWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - solutionSaved = - solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -1066,15 +1069,15 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { solutionApiService.removeAllSolutionParameterGroups( - organizationSaved.id!!, solutionSaved.id!!) + organizationSaved.id, solutionSaved.id!!) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { solutionApiService.removeAllSolutionParameterGroups( - organizationSaved.id!!, solutionSaved.id!!) + organizationSaved.id, solutionSaved.id!!) } } } @@ -1093,10 +1096,11 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Solution RBAC removeAllSolutionParameterGroups : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + organizationSaved = organizationApiService.createOrganization(organization) val solution = makeSolutionWithRole(id = TEST_USER_MAIL, role = role) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -1104,7 +1108,7 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { solutionApiService.removeAllSolutionParameterGroups( - organizationSaved.id!!, solutionSaved.id!!) + organizationSaved.id, solutionSaved.id!!) } assertEquals( "RBAC ${solutionSaved.id!!} - User does not have permission $PERMISSION_DELETE", @@ -1112,7 +1116,7 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { solutionApiService.removeAllSolutionParameterGroups( - organizationSaved.id!!, solutionSaved.id!!) + organizationSaved.id, solutionSaved.id!!) } } } @@ -1131,10 +1135,10 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC addOrReplaceRunTemplates : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = role) + organizationSaved = organizationApiService.createOrganization(organization) val solution = makeSolutionWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val runTemplate = RunTemplate("id") @@ -1144,15 +1148,15 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { solutionApiService.addOrReplaceRunTemplates( - organizationSaved.id!!, solutionSaved.id!!, listOf(runTemplate)) + organizationSaved.id, solutionSaved.id!!, listOf(runTemplate)) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { solutionApiService.addOrReplaceRunTemplates( - organizationSaved.id!!, solutionSaved.id!!, listOf(runTemplate)) + organizationSaved.id, solutionSaved.id!!, listOf(runTemplate)) } } } @@ -1171,10 +1175,11 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Solution RBAC addOrReplaceRunTemplates : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + organizationSaved = organizationApiService.createOrganization(organization) val solution = makeSolutionWithRole(id = TEST_USER_MAIL, role = role) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val runTemplate = RunTemplate("id") @@ -1184,7 +1189,7 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { solutionApiService.addOrReplaceRunTemplates( - organizationSaved.id!!, solutionSaved.id!!, listOf(runTemplate)) + organizationSaved.id, solutionSaved.id!!, listOf(runTemplate)) } assertEquals( @@ -1193,7 +1198,7 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { solutionApiService.addOrReplaceRunTemplates( - organizationSaved.id!!, solutionSaved.id!!, listOf(runTemplate)) + organizationSaved.id, solutionSaved.id!!, listOf(runTemplate)) } } } @@ -1212,10 +1217,10 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC addOrReplaceRunTemplates : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = role) + organizationSaved = organizationApiService.createOrganization(organization) val solution = makeSolutionWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -1223,15 +1228,14 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { solutionApiService.removeAllRunTemplates( - organizationSaved.id!!, solutionSaved.id!!) + organizationSaved.id, solutionSaved.id!!) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { - solutionApiService.removeAllRunTemplates( - organizationSaved.id!!, solutionSaved.id!!) + solutionApiService.removeAllRunTemplates(organizationSaved.id, solutionSaved.id!!) } } } @@ -1250,10 +1254,11 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Solution RBAC addOrReplaceRunTemplates : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + organizationSaved = organizationApiService.createOrganization(organization) val solution = makeSolutionWithRole(id = TEST_USER_MAIL, role = role) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -1261,7 +1266,7 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { solutionApiService.removeAllRunTemplates( - organizationSaved.id!!, solutionSaved.id!!) + organizationSaved.id, solutionSaved.id!!) } assertEquals( @@ -1269,8 +1274,7 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { exception.message) } else { assertDoesNotThrow { - solutionApiService.removeAllRunTemplates( - organizationSaved.id!!, solutionSaved.id!!) + solutionApiService.removeAllRunTemplates(organizationSaved.id, solutionSaved.id!!) } } } @@ -1289,10 +1293,10 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC deleteSolutionRunTemplate : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = role) + organizationSaved = organizationApiService.createOrganization(organization) val solution = makeSolutionWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -1300,15 +1304,15 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { solutionApiService.deleteSolutionRunTemplate( - organizationSaved.id!!, solutionSaved.id!!, "runTemplate") + organizationSaved.id, solutionSaved.id!!, "runTemplate") } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { solutionApiService.deleteSolutionRunTemplate( - organizationSaved.id!!, solutionSaved.id!!, "runTemplate") + organizationSaved.id, solutionSaved.id!!, "runTemplate") } } } @@ -1327,10 +1331,11 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Solution RBAC deleteSolutionRunTemplate : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + organizationSaved = organizationApiService.createOrganization(organization) val solution = makeSolutionWithRole(id = TEST_USER_MAIL, role = role) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -1338,7 +1343,7 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { solutionApiService.deleteSolutionRunTemplate( - organizationSaved.id!!, solutionSaved.id!!, "runTemplate") + organizationSaved.id, solutionSaved.id!!, "runTemplate") } assertEquals( "RBAC ${solutionSaved.id!!} - User does not have permission $PERMISSION_DELETE", @@ -1346,7 +1351,7 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { solutionApiService.deleteSolutionRunTemplate( - organizationSaved.id!!, solutionSaved.id!!, "runTemplate") + organizationSaved.id, solutionSaved.id!!, "runTemplate") } } } @@ -1365,10 +1370,10 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC updateSolutionRunTemplate : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = role) + organizationSaved = organizationApiService.createOrganization(organization) val solution = makeSolutionWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val runTemplate = RunTemplate("runTemplate", "name") @@ -1378,15 +1383,15 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { solutionApiService.updateSolutionRunTemplate( - organizationSaved.id!!, solutionSaved.id!!, "runTemplate", runTemplate) + organizationSaved.id, solutionSaved.id!!, "runTemplate", runTemplate) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { solutionApiService.updateSolutionRunTemplate( - organizationSaved.id!!, solutionSaved.id!!, "runTemplate", runTemplate) + organizationSaved.id, solutionSaved.id!!, "runTemplate", runTemplate) } } } @@ -1405,10 +1410,11 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Solution RBAC updateSolutionRunTemplate : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + organizationSaved = organizationApiService.createOrganization(organization) val solution = makeSolutionWithRole(id = TEST_USER_MAIL, role = role) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) val runTemplate = RunTemplate("runTemplate", "name") @@ -1418,7 +1424,7 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { solutionApiService.updateSolutionRunTemplate( - organizationSaved.id!!, solutionSaved.id!!, "runTemplate", runTemplate) + organizationSaved.id, solutionSaved.id!!, "runTemplate", runTemplate) } assertEquals( "RBAC ${solutionSaved.id!!} - User does not have permission $PERMISSION_WRITE", @@ -1426,7 +1432,7 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { solutionApiService.updateSolutionRunTemplate( - organizationSaved.id!!, solutionSaved.id!!, "runTemplate", runTemplate) + organizationSaved.id, solutionSaved.id!!, "runTemplate", runTemplate) } } } @@ -1445,11 +1451,11 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC getSolutionSecurity : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = role) + organizationSaved = organizationApiService.createOrganization(organization) val solution = - makeSolutionWithRole(organizationSaved.id!!, TEST_USER_MAIL, role = ROLE_ADMIN) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + makeSolutionWithRole(organizationSaved.id, TEST_USER_MAIL, role = ROLE_ADMIN) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -1457,14 +1463,14 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { solutionApiService.getSolutionSecurity( - organizationSaved.id!!, solutionSaved.id!!) + organizationSaved.id, solutionSaved.id!!) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { - solutionApiService.getSolutionSecurity(organizationSaved.id!!, solutionSaved.id!!) + solutionApiService.getSolutionSecurity(organizationSaved.id, solutionSaved.id!!) } } } @@ -1483,11 +1489,11 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Solution RBAC getSolutionSecurity : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - organizationSaved = organizationApiService.registerOrganization(organization) - val solution = - makeSolutionWithRole(organizationSaved.id!!, TEST_USER_MAIL, role = role) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + organizationSaved = organizationApiService.createOrganization(organization) + val solution = makeSolutionWithRole(organizationSaved.id, TEST_USER_MAIL, role = role) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -1495,7 +1501,7 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { solutionApiService.getSolutionSecurity( - organizationSaved.id!!, solutionSaved.id!!) + organizationSaved.id, solutionSaved.id!!) } assertEquals( @@ -1503,7 +1509,7 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { exception.message) } else { assertDoesNotThrow { - solutionApiService.getSolutionSecurity(organizationSaved.id!!, solutionSaved.id!!) + solutionApiService.getSolutionSecurity(organizationSaved.id, solutionSaved.id!!) } } } @@ -1522,11 +1528,11 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC setSolutionDefaultSecurity : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = role) - organizationSaved = organizationApiService.registerOrganization(organization) + val organization = makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = role) + organizationSaved = organizationApiService.createOrganization(organization) val solution = - makeSolutionWithRole(organizationSaved.id!!, TEST_USER_MAIL, role = ROLE_ADMIN) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + makeSolutionWithRole(organizationSaved.id, TEST_USER_MAIL, role = ROLE_ADMIN) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -1534,15 +1540,15 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { solutionApiService.setSolutionDefaultSecurity( - organizationSaved.id!!, solutionSaved.id!!, SolutionRole(ROLE_VIEWER)) + organizationSaved.id, solutionSaved.id!!, SolutionRole(ROLE_VIEWER)) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { solutionApiService.setSolutionDefaultSecurity( - organizationSaved.id!!, solutionSaved.id!!, SolutionRole(ROLE_VIEWER)) + organizationSaved.id, solutionSaved.id!!, SolutionRole(ROLE_VIEWER)) } } } @@ -1561,11 +1567,11 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Solution RBAC setSolutionDefaultSecurity : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER - val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) - organizationSaved = organizationApiService.registerOrganization(organization) - val solution = - makeSolutionWithRole(organizationSaved.id!!, TEST_USER_MAIL, role = role) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + val organization = + makeOrganizationRequestWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN) + organizationSaved = organizationApiService.createOrganization(organization) + val solution = makeSolutionWithRole(organizationSaved.id, TEST_USER_MAIL, role = role) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) every { getCurrentAccountIdentifier(any()) } returns TEST_USER_MAIL @@ -1573,7 +1579,7 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { solutionApiService.setSolutionDefaultSecurity( - organizationSaved.id!!, solutionSaved.id!!, SolutionRole(ROLE_VIEWER)) + organizationSaved.id, solutionSaved.id!!, SolutionRole(ROLE_VIEWER)) } assertEquals( @@ -1582,21 +1588,18 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { solutionApiService.setSolutionDefaultSecurity( - organizationSaved.id!!, solutionSaved.id!!, SolutionRole(ROLE_VIEWER)) + organizationSaved.id, solutionSaved.id!!, SolutionRole(ROLE_VIEWER)) } } } } - fun makeOrganizationWithRole( - organizationId: String = "organization_id", - id: String, - role: String - ): Organization { - return Organization( - id = organizationId, + fun makeOrganizationRequestWithRole( + id: String = TEST_USER_MAIL, + role: String = ROLE_ADMIN + ): OrganizationCreationRequest { + return OrganizationCreationRequest( name = "Organization Name", - ownerId = "my.account-tester@cosmotech.com", security = OrganizationSecurity( default = ROLE_NONE, @@ -1607,7 +1610,7 @@ class SolutionServiceRBACTest : CsmRedisTestBase() { } fun makeSolutionWithRole( - organizationId: String = organizationSaved.id!!, + organizationId: String = organizationSaved.id, id: String, role: String ): Solution { diff --git a/solution/src/main/kotlin/com/cosmotech/solution/service/SolutionServiceImpl.kt b/solution/src/main/kotlin/com/cosmotech/solution/service/SolutionServiceImpl.kt index 267d8bdef..2d1f8b2fb 100644 --- a/solution/src/main/kotlin/com/cosmotech/solution/service/SolutionServiceImpl.kt +++ b/solution/src/main/kotlin/com/cosmotech/solution/service/SolutionServiceImpl.kt @@ -25,7 +25,7 @@ import com.cosmotech.api.utils.getCurrentAccountIdentifier import com.cosmotech.api.utils.getCurrentAuthenticatedRoles import com.cosmotech.api.utils.getCurrentAuthenticatedUserName import com.cosmotech.organization.OrganizationApiServiceInterface -import com.cosmotech.organization.service.getRbac +import com.cosmotech.organization.service.toGenericSecurity import com.cosmotech.solution.SolutionApiServiceInterface import com.cosmotech.solution.domain.RunTemplate import com.cosmotech.solution.domain.RunTemplateParameter @@ -324,7 +324,7 @@ class SolutionServiceImpl( val rbacSecurity = csmRbac.addUserRole( - organization.getRbac(), + organization.security.toGenericSecurity(organizationId), solution.getRbac(), solutionAccessControl.id, solutionAccessControl.role) diff --git a/workspace/src/integrationTest/kotlin/com/cosmotech/workspace/service/WorkspaceServiceIntegrationTest.kt b/workspace/src/integrationTest/kotlin/com/cosmotech/workspace/service/WorkspaceServiceIntegrationTest.kt index cbf26c8d0..e5236b648 100644 --- a/workspace/src/integrationTest/kotlin/com/cosmotech/workspace/service/WorkspaceServiceIntegrationTest.kt +++ b/workspace/src/integrationTest/kotlin/com/cosmotech/workspace/service/WorkspaceServiceIntegrationTest.kt @@ -25,6 +25,7 @@ import com.cosmotech.dataset.domain.DatasetSecurity import com.cosmotech.organization.OrganizationApiServiceInterface import com.cosmotech.organization.domain.Organization import com.cosmotech.organization.domain.OrganizationAccessControl +import com.cosmotech.organization.domain.OrganizationCreationRequest import com.cosmotech.organization.domain.OrganizationSecurity import com.cosmotech.solution.api.SolutionApiService import com.cosmotech.solution.domain.Solution @@ -76,7 +77,7 @@ class WorkspaceServiceIntegrationTest : CsmRedisTestBase() { @Autowired lateinit var datasetApiService: DatasetApiService @Autowired lateinit var csmPlatformProperties: CsmPlatformProperties - lateinit var organization: Organization + lateinit var organization: OrganizationCreationRequest lateinit var solution: Solution lateinit var workspace: Workspace lateinit var connector: Connector @@ -101,20 +102,20 @@ class WorkspaceServiceIntegrationTest : CsmRedisTestBase() { rediSearchIndexer.createIndexFor(Connector::class.java) rediSearchIndexer.createIndexFor(Dataset::class.java) - organization = makeOrganization("Organization test") - organizationSaved = organizationApiService.registerOrganization(organization) + organization = makeOrganizationRequest("Organization test") + organizationSaved = organizationApiService.createOrganization(organization) - solution = makeSolution(organizationSaved.id!!) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solution = makeSolution(organizationSaved.id) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) - workspace = makeWorkspace(organizationSaved.id!!, solutionSaved.id!!, "Workspace") - workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspace = makeWorkspace(organizationSaved.id, solutionSaved.id!!, "Workspace") + workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id, workspace) connector = makeConnector("Connector") connectorSaved = connectorApiService.registerConnector(connector) dataset = makeDataset("dataset") - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) } @Test @@ -123,21 +124,21 @@ class WorkspaceServiceIntegrationTest : CsmRedisTestBase() { every { getCurrentAuthenticatedRoles(any()) } returns listOf("Platform.Admin") logger.info("should create a second new workspace") - val workspace2 = makeWorkspace(organizationSaved.id!!, solutionSaved.id!!, "Workspace 2") - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace2) + val workspace2 = makeWorkspace(organizationSaved.id, solutionSaved.id!!, "Workspace 2") + workspaceApiService.createWorkspace(organizationSaved.id, workspace2) val workspaceRetrieved = - workspaceApiService.findWorkspaceById(organizationSaved.id!!, workspaceSaved.id!!) + workspaceApiService.findWorkspaceById(organizationSaved.id, workspaceSaved.id!!) assertEquals(workspaceSaved, workspaceRetrieved) logger.info("should find all workspaces and assert there are 2") val workspacesList: List = - workspaceApiService.findAllWorkspaces(organizationSaved.id!!, null, null) + workspaceApiService.findAllWorkspaces(organizationSaved.id, null, null) assertTrue(workspacesList.size == 2) logger.info("should update the name of the first workspace") val updatedWorkspace = workspaceApiService.updateWorkspace( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, workspaceSaved.copy(name = "Workspace 1 updated", organizationId = null)) assertEquals("Workspace 1 updated", updatedWorkspace.name) @@ -159,32 +160,32 @@ class WorkspaceServiceIntegrationTest : CsmRedisTestBase() { every { getCurrentAccountIdentifier(any()) } returns "userLambda" logger.info("should not create a new workspace") - val workspace2 = makeWorkspace(organizationSaved.id!!, solutionSaved.id!!, "Workspace 2") + val workspace2 = makeWorkspace(organizationSaved.id, solutionSaved.id!!, "Workspace 2") assertThrows { - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace2) + workspaceApiService.createWorkspace(organizationSaved.id, workspace2) } logger.info("should not retrieve a workspace") assertThrows { - workspaceApiService.findWorkspaceById(organizationSaved.id!!, workspaceSaved.id!!) + workspaceApiService.findWorkspaceById(organizationSaved.id, workspaceSaved.id!!) } logger.info("should not find all workspaces") val workspacesList: List = - workspaceApiService.findAllWorkspaces(organizationSaved.id!!, null, null) + workspaceApiService.findAllWorkspaces(organizationSaved.id, null, null) assertTrue(workspacesList.isEmpty()) logger.info("should not update a workspace") assertThrows { workspaceApiService.updateWorkspace( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, workspaceSaved.copy(name = "Workspace 1 updated")) } logger.info("should not delete a workspace") assertThrows { - workspaceApiService.deleteWorkspace(organizationSaved.id!!, workspaceSaved.id!!) + workspaceApiService.deleteWorkspace(organizationSaved.id, workspaceSaved.id!!) } } @@ -195,23 +196,23 @@ class WorkspaceServiceIntegrationTest : CsmRedisTestBase() { val defaultPageSize = csmPlatformProperties.twincache.workspace.defaultPageSize val expectedSize = 15 IntRange(1, workspaceNumber - 1).forEach { - val workspace = makeWorkspace(organizationSaved.id!!, solutionSaved.id!!, "w-workspace-$it") - workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + val workspace = makeWorkspace(organizationSaved.id, solutionSaved.id!!, "w-workspace-$it") + workspaceApiService.createWorkspace(organizationSaved.id, workspace) } logger.info("should find all workspaces and assert there are $workspaceNumber") - var workspacesList = workspaceApiService.findAllWorkspaces(organizationSaved.id!!, null, null) + var workspacesList = workspaceApiService.findAllWorkspaces(organizationSaved.id, null, null) assertEquals(workspaceNumber, workspacesList.size) logger.info("should find all workspaces and assert it equals defaultPageSize: $defaultPageSize") - workspacesList = workspaceApiService.findAllWorkspaces(organizationSaved.id!!, 0, null) + workspacesList = workspaceApiService.findAllWorkspaces(organizationSaved.id, 0, null) assertEquals(defaultPageSize, workspacesList.size) logger.info("should find all workspaces and assert there are expected size: $expectedSize") - workspacesList = workspaceApiService.findAllWorkspaces(organizationSaved.id!!, 0, expectedSize) + workspacesList = workspaceApiService.findAllWorkspaces(organizationSaved.id, 0, expectedSize) assertEquals(expectedSize, workspacesList.size) logger.info("should find all workspaces and assert it returns the second / last page") - workspacesList = workspaceApiService.findAllWorkspaces(organizationSaved.id!!, 1, expectedSize) + workspacesList = workspaceApiService.findAllWorkspaces(organizationSaved.id, 1, expectedSize) assertEquals(workspaceNumber - expectedSize, workspacesList.size) } @@ -219,15 +220,15 @@ class WorkspaceServiceIntegrationTest : CsmRedisTestBase() { fun `test find All Workspaces with wrong pagination params`() { logger.info("should throw IllegalArgumentException when page and size are zero") assertThrows { - workspaceApiService.findAllWorkspaces(organizationSaved.id!!, 0, 0) + workspaceApiService.findAllWorkspaces(organizationSaved.id, 0, 0) } logger.info("should throw IllegalArgumentException when page is negative") assertThrows { - workspaceApiService.findAllWorkspaces(organizationSaved.id!!, -1, 1) + workspaceApiService.findAllWorkspaces(organizationSaved.id, -1, 1) } logger.info("should throw IllegalArgumentException when size is negative") assertThrows { - workspaceApiService.findAllWorkspaces(organizationSaved.id!!, 0, -1) + workspaceApiService.findAllWorkspaces(organizationSaved.id, 0, -1) } } @@ -238,14 +239,14 @@ class WorkspaceServiceIntegrationTest : CsmRedisTestBase() { logger.info("should get default security with role NONE") val workspaceSecurity = - workspaceApiService.getWorkspaceSecurity(organizationSaved.id!!, workspaceSaved.id!!) + workspaceApiService.getWorkspaceSecurity(organizationSaved.id, workspaceSaved.id!!) assertEquals(ROLE_NONE, workspaceSecurity.default) logger.info("should set default security with role VIEWER") val workspaceRole = WorkspaceRole(ROLE_VIEWER) val workspaceSecurityRegistered = workspaceApiService.setWorkspaceDefaultSecurity( - organizationSaved.id!!, workspaceSaved.id!!, workspaceRole) + organizationSaved.id, workspaceSaved.id!!, workspaceRole) assertEquals(workspaceRole.role, workspaceSecurityRegistered.default) } @@ -253,7 +254,7 @@ class WorkspaceServiceIntegrationTest : CsmRedisTestBase() { fun `test RBAC as User Unauthorized`() { every { getCurrentAccountIdentifier(any()) } returns "userLambda" - assertEquals(0, workspaceApiService.findAllWorkspaces(organizationSaved.id!!, null, null).size) + assertEquals(0, workspaceApiService.findAllWorkspaces(organizationSaved.id, null, null).size) } @Test @@ -263,33 +264,33 @@ class WorkspaceServiceIntegrationTest : CsmRedisTestBase() { val workspaceAccessControl = WorkspaceAccessControl(TEST_USER_MAIL, ROLE_VIEWER) var workspaceAccessControlRegistered = workspaceApiService.addWorkspaceAccessControl( - organizationSaved.id!!, workspaceSaved.id!!, workspaceAccessControl) + organizationSaved.id, workspaceSaved.id!!, workspaceAccessControl) assertEquals(workspaceAccessControl, workspaceAccessControlRegistered) logger.info("should get the access control") workspaceAccessControlRegistered = workspaceApiService.getWorkspaceAccessControl( - organizationSaved.id!!, workspaceSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, workspaceSaved.id!!, TEST_USER_MAIL) assertEquals(workspaceAccessControl, workspaceAccessControlRegistered) logger.info("should update the access control") workspaceAccessControlRegistered = workspaceApiService.updateWorkspaceAccessControl( - organizationSaved.id!!, workspaceSaved.id!!, TEST_USER_MAIL, WorkspaceRole(ROLE_EDITOR)) + organizationSaved.id, workspaceSaved.id!!, TEST_USER_MAIL, WorkspaceRole(ROLE_EDITOR)) assertEquals(ROLE_EDITOR, workspaceAccessControlRegistered.role) logger.info("should get the list of users and assert there are 3") val userList = - workspaceApiService.getWorkspaceSecurityUsers(organizationSaved.id!!, workspaceSaved.id!!) + workspaceApiService.getWorkspaceSecurityUsers(organizationSaved.id, workspaceSaved.id!!) assertEquals(3, userList.size) logger.info("should remove the access control") workspaceApiService.removeWorkspaceAccessControl( - organizationSaved.id!!, workspaceSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, workspaceSaved.id!!, TEST_USER_MAIL) assertThrows { workspaceAccessControlRegistered = workspaceApiService.getWorkspaceAccessControl( - organizationSaved.id!!, workspaceSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, workspaceSaved.id!!, TEST_USER_MAIL) } } @@ -302,38 +303,38 @@ class WorkspaceServiceIntegrationTest : CsmRedisTestBase() { val workspaceAccessControl = WorkspaceAccessControl(TEST_USER_MAIL, ROLE_VIEWER) assertThrows { workspaceApiService.addWorkspaceAccessControl( - organizationSaved.id!!, workspaceSaved.id!!, workspaceAccessControl) + organizationSaved.id, workspaceSaved.id!!, workspaceAccessControl) } logger.info("should throw CsmAccessForbiddenException when getting the access control") assertThrows { workspaceApiService.getWorkspaceAccessControl( - organizationSaved.id!!, workspaceSaved.id!!, "userLambda") + organizationSaved.id, workspaceSaved.id!!, "userLambda") } logger.info("should throw CsmAccessForbiddenException when updating the access control") assertThrows { workspaceApiService.updateWorkspaceAccessControl( - organizationSaved.id!!, workspaceSaved.id!!, TEST_USER_MAIL, WorkspaceRole(ROLE_VIEWER)) + organizationSaved.id, workspaceSaved.id!!, TEST_USER_MAIL, WorkspaceRole(ROLE_VIEWER)) } logger.info("should throw CsmAccessForbiddenException when getting the list of users") assertThrows { - workspaceApiService.getWorkspaceSecurityUsers(organizationSaved.id!!, workspaceSaved.id!!) + workspaceApiService.getWorkspaceSecurityUsers(organizationSaved.id, workspaceSaved.id!!) } logger.info("should throw CsmAccessForbiddenException when removing the access control") assertThrows { workspaceApiService.removeWorkspaceAccessControl( - organizationSaved.id!!, workspaceSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, workspaceSaved.id!!, TEST_USER_MAIL) } } @Test fun `access control list shouldn't contain more than one time each user on creation`() { organizationSaved = - organizationApiService.registerOrganization(makeOrganization("organization")) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, makeSolution()) + organizationApiService.createOrganization(makeOrganizationRequest("organization")) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, makeSolution()) val brokenWorkspace = Workspace( name = "workspace", @@ -347,21 +348,21 @@ class WorkspaceServiceIntegrationTest : CsmRedisTestBase() { WorkspaceAccessControl(CONNECTED_ADMIN_USER, ROLE_ADMIN), WorkspaceAccessControl(CONNECTED_ADMIN_USER, ROLE_EDITOR)))) assertThrows { - workspaceApiService.createWorkspace(organizationSaved.id!!, brokenWorkspace) + workspaceApiService.createWorkspace(organizationSaved.id, brokenWorkspace) } } @Test fun `access control list shouldn't contain more than one time each user on ACL addition`() { organizationSaved = - organizationApiService.registerOrganization(makeOrganization("organization")) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, makeSolution()) + organizationApiService.createOrganization(makeOrganizationRequest("organization")) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, makeSolution()) val workingWorkspace = makeWorkspace() - workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id!!, workingWorkspace) + workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id, workingWorkspace) assertThrows { workspaceApiService.addWorkspaceAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, WorkspaceAccessControl(CONNECTED_ADMIN_USER, ROLE_EDITOR)) } @@ -372,15 +373,15 @@ class WorkspaceServiceIntegrationTest : CsmRedisTestBase() { assertNull( workspaceApiService - .findWorkspaceById(organizationSaved.id!!, workspaceSaved.id!!) + .findWorkspaceById(organizationSaved.id, workspaceSaved.id!!) .linkedDatasetIdList) - workspaceApiService.linkDataset(organizationSaved.id!!, workspaceSaved.id!!, datasetSaved.id!!) + workspaceApiService.linkDataset(organizationSaved.id, workspaceSaved.id!!, datasetSaved.id!!) val datasetIds = listOf(datasetSaved.id!!) checkLinkedDatasetId(datasetIds) - workspaceApiService.linkDataset(organizationSaved.id!!, workspaceSaved.id!!, datasetSaved.id!!) + workspaceApiService.linkDataset(organizationSaved.id, workspaceSaved.id!!, datasetSaved.id!!) checkLinkedDatasetId(datasetIds) } @@ -388,14 +389,14 @@ class WorkspaceServiceIntegrationTest : CsmRedisTestBase() { private fun checkLinkedDatasetId(datasetIds: List) { assertEquals( workspaceApiService - .findWorkspaceById(organizationSaved.id!!, workspaceSaved.id!!) + .findWorkspaceById(organizationSaved.id, workspaceSaved.id!!) .linkedDatasetIdList!! .size, datasetIds.size) assertEquals( workspaceApiService - .findWorkspaceById(organizationSaved.id!!, workspaceSaved.id!!) + .findWorkspaceById(organizationSaved.id, workspaceSaved.id!!) .linkedDatasetIdList!!, datasetIds) } @@ -405,17 +406,16 @@ class WorkspaceServiceIntegrationTest : CsmRedisTestBase() { assertNull( workspaceApiService - .findWorkspaceById(organizationSaved.id!!, workspaceSaved.id!!) + .findWorkspaceById(organizationSaved.id, workspaceSaved.id!!) .linkedDatasetIdList) - workspaceApiService.linkDataset(organizationSaved.id!!, workspaceSaved.id!!, datasetSaved.id!!) + workspaceApiService.linkDataset(organizationSaved.id, workspaceSaved.id!!, datasetSaved.id!!) - workspaceApiService.unlinkDataset( - organizationSaved.id!!, workspaceSaved.id!!, datasetSaved.id!!) + workspaceApiService.unlinkDataset(organizationSaved.id, workspaceSaved.id!!, datasetSaved.id!!) assertEquals( workspaceApiService - .findWorkspaceById(organizationSaved.id!!, workspaceSaved.id!!) + .findWorkspaceById(organizationSaved.id, workspaceSaved.id!!) .linkedDatasetIdList!! .size, 0) @@ -426,15 +426,14 @@ class WorkspaceServiceIntegrationTest : CsmRedisTestBase() { assertNull( workspaceApiService - .findWorkspaceById(organizationSaved.id!!, workspaceSaved.id!!) + .findWorkspaceById(organizationSaved.id, workspaceSaved.id!!) .linkedDatasetIdList) - workspaceApiService.unlinkDataset( - organizationSaved.id!!, workspaceSaved.id!!, datasetSaved.id!!) + workspaceApiService.unlinkDataset(organizationSaved.id, workspaceSaved.id!!, datasetSaved.id!!) assertNull( workspaceApiService - .findWorkspaceById(organizationSaved.id!!, workspaceSaved.id!!) + .findWorkspaceById(organizationSaved.id, workspaceSaved.id!!) .linkedDatasetIdList) } @@ -442,18 +441,18 @@ class WorkspaceServiceIntegrationTest : CsmRedisTestBase() { fun `As a viewer, I can only see my information in security property for findWorkspaceById`() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_DEFAULT_USER organization = - makeOrganization( + makeOrganizationRequest( id = "Organization test", userName = CONNECTED_DEFAULT_USER, role = ROLE_VIEWER) - organizationSaved = organizationApiService.registerOrganization(organization) + organizationSaved = organizationApiService.createOrganization(organization) solution = makeSolution(userName = CONNECTED_DEFAULT_USER, role = ROLE_VIEWER) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) dataset = makeDataset() - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) workspace = makeWorkspace() - workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id, workspace) workspaceSaved = - workspaceApiService.findWorkspaceById(organizationSaved.id!!, workspaceSaved.id!!) + workspaceApiService.findWorkspaceById(organizationSaved.id, workspaceSaved.id!!) assertEquals( WorkspaceSecurity( default = ROLE_NONE, @@ -466,17 +465,17 @@ class WorkspaceServiceIntegrationTest : CsmRedisTestBase() { fun `As a viewer, I can only see my information in security property for findAllWorkspaces`() { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_DEFAULT_USER organization = - makeOrganization( + makeOrganizationRequest( id = "Organization test", userName = CONNECTED_DEFAULT_USER, role = ROLE_VIEWER) - organizationSaved = organizationApiService.registerOrganization(organization) + organizationSaved = organizationApiService.createOrganization(organization) solution = makeSolution(userName = CONNECTED_DEFAULT_USER, role = ROLE_VIEWER) - solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution) + solutionSaved = solutionApiService.createSolution(organizationSaved.id, solution) dataset = makeDataset() - datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset) + datasetSaved = datasetApiService.createDataset(organizationSaved.id, dataset) workspace = makeWorkspace() - workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id!!, workspace) + workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id, workspace) - var workspaces = workspaceApiService.findAllWorkspaces(organizationSaved.id!!, null, null) + var workspaces = workspaceApiService.findAllWorkspaces(organizationSaved.id, null, null) workspaces.forEach { assertEquals( WorkspaceSecurity( @@ -487,15 +486,13 @@ class WorkspaceServiceIntegrationTest : CsmRedisTestBase() { } } - fun makeOrganization( + fun makeOrganizationRequest( id: String, userName: String = CONNECTED_ADMIN_USER, role: String = ROLE_ADMIN - ): Organization { - return Organization( - id = UUID.randomUUID().toString(), + ): OrganizationCreationRequest { + return OrganizationCreationRequest( name = "Organization Name", - ownerId = "my.account-tester@cosmotech.com", security = OrganizationSecurity( default = ROLE_NONE, @@ -506,7 +503,7 @@ class WorkspaceServiceIntegrationTest : CsmRedisTestBase() { } fun makeSolution( - organizationId: String = organizationSaved.id!!, + organizationId: String = organizationSaved.id, userName: String = CONNECTED_DEFAULT_USER, role: String = ROLE_USER ): Solution { @@ -526,7 +523,7 @@ class WorkspaceServiceIntegrationTest : CsmRedisTestBase() { } fun makeWorkspace( - organizationId: String = organizationSaved.id!!, + organizationId: String = organizationSaved.id, solutionId: String = solutionSaved.id!!, name: String = "name", userName: String = CONNECTED_ADMIN_USER, @@ -560,7 +557,7 @@ class WorkspaceServiceIntegrationTest : CsmRedisTestBase() { ioTypes = listOf(IoTypesEnum.read)) } fun makeDataset( - organizationId: String = organizationSaved.id!!, + organizationId: String = organizationSaved.id, name: String = "name", connector: Connector = connectorSaved, userName: String = CONNECTED_DEFAULT_USER, diff --git a/workspace/src/integrationTest/kotlin/com/cosmotech/workspace/service/WorkspaceServiceRBACTest.kt b/workspace/src/integrationTest/kotlin/com/cosmotech/workspace/service/WorkspaceServiceRBACTest.kt index 5344a8272..53385e4b2 100644 --- a/workspace/src/integrationTest/kotlin/com/cosmotech/workspace/service/WorkspaceServiceRBACTest.kt +++ b/workspace/src/integrationTest/kotlin/com/cosmotech/workspace/service/WorkspaceServiceRBACTest.kt @@ -23,6 +23,7 @@ import com.cosmotech.api.utils.getCurrentAuthenticatedUserName import com.cosmotech.organization.OrganizationApiServiceInterface import com.cosmotech.organization.domain.Organization import com.cosmotech.organization.domain.OrganizationAccessControl +import com.cosmotech.organization.domain.OrganizationCreationRequest import com.cosmotech.organization.domain.OrganizationSecurity import com.cosmotech.solution.api.SolutionApiService import com.cosmotech.solution.domain.Solution @@ -113,15 +114,15 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test RBAC findAllWorkspaces : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val organizationSaved = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( makeOrganizationWithRole(id = TEST_USER_MAIL, role = role)) val solutionSaved = solutionApiService.createSolution( - organizationSaved.id!!, makeSolution(organizationSaved.id!!)) + organizationSaved.id, makeSolution(organizationSaved.id)) workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN)) @@ -130,14 +131,14 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { if (shouldThrow) { val exception = assertThrows { - workspaceApiService.findAllWorkspaces(organizationSaved.id!!, null, null) + workspaceApiService.findAllWorkspaces(organizationSaved.id, null, null) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { - workspaceApiService.findAllWorkspaces(organizationSaved.id!!, null, null) + workspaceApiService.findAllWorkspaces(organizationSaved.id, null, null) } } } @@ -156,15 +157,15 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test RBAC createWorkspace : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val organizationSaved = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( makeOrganizationWithRole(id = TEST_USER_MAIL, role = role)) val solutionSaved = solutionApiService.createSolution( - organizationSaved.id!!, makeSolution(organizationSaved.id!!)) + organizationSaved.id, makeSolution(organizationSaved.id)) workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN)) @@ -174,28 +175,28 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN)) } if (role == ROLE_NONE) { assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_CREATE_CHILDREN", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_CREATE_CHILDREN", exception.message) } } else { assertDoesNotThrow { workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN)) @@ -217,16 +218,16 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC findWorkspaceById : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val organizationSaved = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( makeOrganizationWithRole(id = TEST_USER_MAIL, role = role)) val solutionSaved = solutionApiService.createSolution( - organizationSaved.id!!, makeSolution(organizationSaved.id!!)) + organizationSaved.id, makeSolution(organizationSaved.id)) val workspaceSaved = workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN)) @@ -236,11 +237,11 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { workspaceApiService.findWorkspaceById( - organizationSaved.id!!, workspaceSaved.id!!) + organizationSaved.id, workspaceSaved.id!!) } if (role == ROLE_NONE) { assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertEquals( @@ -249,7 +250,7 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { } } else { assertDoesNotThrow { - workspaceApiService.findWorkspaceById(organizationSaved.id!!, workspaceSaved.id!!) + workspaceApiService.findWorkspaceById(organizationSaved.id, workspaceSaved.id!!) } } } @@ -268,16 +269,16 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Workspace RBAC findWorkspaceById : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val organizationSaved = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN)) val solutionSaved = solutionApiService.createSolution( - organizationSaved.id!!, makeSolution(organizationSaved.id!!)) + organizationSaved.id, makeSolution(organizationSaved.id)) val workspaceSaved = workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = role)) @@ -287,14 +288,14 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { workspaceApiService.findWorkspaceById( - organizationSaved.id!!, workspaceSaved.id!!) + organizationSaved.id, workspaceSaved.id!!) } assertEquals( "RBAC ${workspaceSaved.id!!} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { - workspaceApiService.findWorkspaceById(organizationSaved.id!!, workspaceSaved.id!!) + workspaceApiService.findWorkspaceById(organizationSaved.id, workspaceSaved.id!!) } } } @@ -313,16 +314,16 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC deleteWorkspace : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val organizationSaved = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( makeOrganizationWithRole(id = TEST_USER_MAIL, role = role)) val solutionSaved = solutionApiService.createSolution( - organizationSaved.id!!, makeSolution(organizationSaved.id!!)) + organizationSaved.id, makeSolution(organizationSaved.id)) val workspaceSaved = workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN)) @@ -331,15 +332,14 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { if (shouldThrow) { val exception = assertThrows { - workspaceApiService.deleteWorkspace( - organizationSaved.id!!, workspaceSaved.id!!) + workspaceApiService.deleteWorkspace(organizationSaved.id, workspaceSaved.id!!) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { - workspaceApiService.deleteWorkspace(organizationSaved.id!!, workspaceSaved.id!!) + workspaceApiService.deleteWorkspace(organizationSaved.id, workspaceSaved.id!!) } } } @@ -358,16 +358,16 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Workspace RBAC deleteWorkspace : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val organizationSaved = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN)) val solutionSaved = solutionApiService.createSolution( - organizationSaved.id!!, makeSolution(organizationSaved.id!!)) + organizationSaved.id, makeSolution(organizationSaved.id)) val workspaceSaved = workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = role)) @@ -376,15 +376,14 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { if (shouldThrow) { val exception = assertThrows { - workspaceApiService.deleteWorkspace( - organizationSaved.id!!, workspaceSaved.id!!) + workspaceApiService.deleteWorkspace(organizationSaved.id, workspaceSaved.id!!) } assertEquals( "RBAC ${workspaceSaved.id!!} - User does not have permission $PERMISSION_DELETE", exception.message) } else { assertDoesNotThrow { - workspaceApiService.deleteWorkspace(organizationSaved.id!!, workspaceSaved.id!!) + workspaceApiService.deleteWorkspace(organizationSaved.id, workspaceSaved.id!!) } } } @@ -403,16 +402,16 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC updateWorkspace : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val organizationSaved = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( makeOrganizationWithRole(id = TEST_USER_MAIL, role = role)) val solutionSaved = solutionApiService.createSolution( - organizationSaved.id!!, makeSolution(organizationSaved.id!!)) + organizationSaved.id, makeSolution(organizationSaved.id)) val workspaceSaved = workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN)) @@ -422,24 +421,24 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { workspaceApiService.updateWorkspace( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = role)) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { workspaceApiService.updateWorkspace( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = role)) @@ -461,16 +460,16 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Workspace RBAC updateWorkspace : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val organizationSaved = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN)) val solutionSaved = solutionApiService.createSolution( - organizationSaved.id!!, makeSolution(organizationSaved.id!!)) + organizationSaved.id, makeSolution(organizationSaved.id)) val workspaceSaved = workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = role)) @@ -480,10 +479,10 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { workspaceApiService.updateWorkspace( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = role)) @@ -494,10 +493,10 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { workspaceApiService.updateWorkspace( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = role)) @@ -519,16 +518,16 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC findAllWorkspaceFiles : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val organizationSaved = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( makeOrganizationWithRole(id = TEST_USER_MAIL, role = role)) val solutionSaved = solutionApiService.createSolution( - organizationSaved.id!!, makeSolution(organizationSaved.id!!)) + organizationSaved.id, makeSolution(organizationSaved.id)) val workspaceSaved = workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN)) @@ -538,15 +537,15 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { workspaceApiService.findAllWorkspaceFiles( - organizationSaved.id!!, workspaceSaved.id!!) + organizationSaved.id, workspaceSaved.id!!) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { workspaceApiService.findAllWorkspaceFiles( - organizationSaved.id!!, workspaceSaved.id!!) + organizationSaved.id, workspaceSaved.id!!) } } } @@ -565,16 +564,16 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Workspace RBAC findAllWorkspaceFiles : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val organizationSaved = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN)) val solutionSaved = solutionApiService.createSolution( - organizationSaved.id!!, makeSolution(organizationSaved.id!!)) + organizationSaved.id, makeSolution(organizationSaved.id)) val workspaceSaved = workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = role)) @@ -584,7 +583,7 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { workspaceApiService.findAllWorkspaceFiles( - organizationSaved.id!!, workspaceSaved.id!!) + organizationSaved.id, workspaceSaved.id!!) } assertEquals( "RBAC ${workspaceSaved.id!!} - User does not have permission $PERMISSION_READ", @@ -592,7 +591,7 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { workspaceApiService.findAllWorkspaceFiles( - organizationSaved.id!!, workspaceSaved.id!!) + organizationSaved.id, workspaceSaved.id!!) } } } @@ -611,16 +610,16 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC uploadWorkspaceFile : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val organizationSaved = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( makeOrganizationWithRole(id = TEST_USER_MAIL, role = role)) val solutionSaved = solutionApiService.createSolution( - organizationSaved.id!!, makeSolution(organizationSaved.id!!)) + organizationSaved.id, makeSolution(organizationSaved.id)) val workspaceSaved = workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN)) @@ -632,15 +631,15 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { workspaceApiService.uploadWorkspaceFile( - organizationSaved.id!!, workspaceSaved.id!!, resource, true, "") + organizationSaved.id, workspaceSaved.id!!, resource, true, "") } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { workspaceApiService.uploadWorkspaceFile( - organizationSaved.id!!, workspaceSaved.id!!, resource, true, "name") + organizationSaved.id, workspaceSaved.id!!, resource, true, "name") } } } @@ -659,16 +658,16 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Workspace RBAC uploadWorkspaceFile : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val organizationSaved = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN)) val solutionSaved = solutionApiService.createSolution( - organizationSaved.id!!, makeSolution(organizationSaved.id!!)) + organizationSaved.id, makeSolution(organizationSaved.id)) val workspaceSaved = workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = role)) @@ -680,7 +679,7 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { workspaceApiService.uploadWorkspaceFile( - organizationSaved.id!!, workspaceSaved.id!!, resource, true, "") + organizationSaved.id, workspaceSaved.id!!, resource, true, "") } assertEquals( "RBAC ${workspaceSaved.id!!} - User does not have permission $PERMISSION_WRITE", @@ -688,7 +687,7 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { workspaceApiService.uploadWorkspaceFile( - organizationSaved.id!!, workspaceSaved.id!!, resource, true, "name") + organizationSaved.id, workspaceSaved.id!!, resource, true, "name") } } } @@ -707,16 +706,16 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC deleteAllWorkspaceFiles : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val organizationSaved = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( makeOrganizationWithRole(id = TEST_USER_MAIL, role = role)) val solutionSaved = solutionApiService.createSolution( - organizationSaved.id!!, makeSolution(organizationSaved.id!!)) + organizationSaved.id, makeSolution(organizationSaved.id)) val workspaceSaved = workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN)) @@ -726,15 +725,15 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { workspaceApiService.deleteAllWorkspaceFiles( - organizationSaved.id!!, workspaceSaved.id!!) + organizationSaved.id, workspaceSaved.id!!) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { workspaceApiService.deleteAllWorkspaceFiles( - organizationSaved.id!!, workspaceSaved.id!!) + organizationSaved.id, workspaceSaved.id!!) } } } @@ -753,16 +752,16 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Workspace RBAC deleteAllWorkspaceFiles : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val organizationSaved = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN)) val solutionSaved = solutionApiService.createSolution( - organizationSaved.id!!, makeSolution(organizationSaved.id!!)) + organizationSaved.id, makeSolution(organizationSaved.id)) val workspaceSaved = workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = role)) @@ -772,7 +771,7 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { workspaceApiService.deleteAllWorkspaceFiles( - organizationSaved.id!!, workspaceSaved.id!!) + organizationSaved.id, workspaceSaved.id!!) } assertEquals( "RBAC ${workspaceSaved.id!!} - User does not have permission $PERMISSION_WRITE", @@ -780,7 +779,7 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { workspaceApiService.deleteAllWorkspaceFiles( - organizationSaved.id!!, workspaceSaved.id!!) + organizationSaved.id, workspaceSaved.id!!) } } } @@ -799,16 +798,16 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC downloadWorkspaceFile : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val organizationSaved = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( makeOrganizationWithRole(id = TEST_USER_MAIL, role = role)) val solutionSaved = solutionApiService.createSolution( - organizationSaved.id!!, makeSolution(organizationSaved.id!!)) + organizationSaved.id, makeSolution(organizationSaved.id)) val workspaceSaved = workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN)) @@ -818,23 +817,23 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { workspaceApiService.downloadWorkspaceFile( - organizationSaved.id!!, workspaceSaved.id!!, "") + organizationSaved.id, workspaceSaved.id!!, "") } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { val filePath = Path.of( csmPlatformProperties.blobPersistence.path, - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, "name") Files.createDirectories(filePath.getParent()) Files.createFile(filePath) assertDoesNotThrow { workspaceApiService.downloadWorkspaceFile( - organizationSaved.id!!, workspaceSaved.id!!, "name") + organizationSaved.id, workspaceSaved.id!!, "name") } } } @@ -853,16 +852,16 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Workspace RBAC downloadWorkspaceFile : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val organizationSaved = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN)) val solutionSaved = solutionApiService.createSolution( - organizationSaved.id!!, makeSolution(organizationSaved.id!!)) + organizationSaved.id, makeSolution(organizationSaved.id)) val workspaceSaved = workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = role)) @@ -872,7 +871,7 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { workspaceApiService.downloadWorkspaceFile( - organizationSaved.id!!, workspaceSaved.id!!, "") + organizationSaved.id, workspaceSaved.id!!, "") } assertEquals( "RBAC ${workspaceSaved.id!!} - User does not have permission $PERMISSION_READ", @@ -881,14 +880,14 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { val filePath = Path.of( csmPlatformProperties.blobPersistence.path, - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, "name") Files.createDirectories(filePath.getParent()) Files.createFile(filePath) assertDoesNotThrow { workspaceApiService.downloadWorkspaceFile( - organizationSaved.id!!, workspaceSaved.id!!, "name") + organizationSaved.id, workspaceSaved.id!!, "name") } } } @@ -907,16 +906,16 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC deleteWorkspaceFile : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val organizationSaved = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( makeOrganizationWithRole(id = TEST_USER_MAIL, role = role)) val solutionSaved = solutionApiService.createSolution( - organizationSaved.id!!, makeSolution(organizationSaved.id!!)) + organizationSaved.id, makeSolution(organizationSaved.id)) val workspaceSaved = workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN)) @@ -926,15 +925,15 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { workspaceApiService.deleteWorkspaceFile( - organizationSaved.id!!, workspaceSaved.id!!, "") + organizationSaved.id, workspaceSaved.id!!, "") } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { workspaceApiService.deleteWorkspaceFile( - organizationSaved.id!!, workspaceSaved.id!!, "") + organizationSaved.id, workspaceSaved.id!!, "") } } } @@ -953,16 +952,16 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Workspace RBAC deleteWorkspaceFile : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val organizationSaved = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN)) val solutionSaved = solutionApiService.createSolution( - organizationSaved.id!!, makeSolution(organizationSaved.id!!)) + organizationSaved.id, makeSolution(organizationSaved.id)) val workspaceSaved = workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = role)) @@ -972,7 +971,7 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { workspaceApiService.deleteWorkspaceFile( - organizationSaved.id!!, workspaceSaved.id!!, "") + organizationSaved.id, workspaceSaved.id!!, "") } assertEquals( "RBAC ${workspaceSaved.id!!} - User does not have permission $PERMISSION_WRITE", @@ -980,7 +979,7 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { workspaceApiService.deleteWorkspaceFile( - organizationSaved.id!!, workspaceSaved.id!!, "") + organizationSaved.id, workspaceSaved.id!!, "") } } } @@ -999,16 +998,16 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC getWorkspacePermissions : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val organizationSaved = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( makeOrganizationWithRole(id = TEST_USER_MAIL, role = role)) val solutionSaved = solutionApiService.createSolution( - organizationSaved.id!!, makeSolution(organizationSaved.id!!)) + organizationSaved.id, makeSolution(organizationSaved.id)) val workspaceSaved = workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN)) @@ -1018,15 +1017,15 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { workspaceApiService.getWorkspacePermissions( - organizationSaved.id!!, workspaceSaved.id!!, ROLE_USER) + organizationSaved.id, workspaceSaved.id!!, ROLE_USER) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { workspaceApiService.getWorkspacePermissions( - organizationSaved.id!!, workspaceSaved.id!!, ROLE_USER) + organizationSaved.id, workspaceSaved.id!!, ROLE_USER) } } } @@ -1045,16 +1044,16 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Workspace RBAC getWorkspacePermissions : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val organizationSaved = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN)) val solutionSaved = solutionApiService.createSolution( - organizationSaved.id!!, makeSolution(organizationSaved.id!!)) + organizationSaved.id, makeSolution(organizationSaved.id)) val workspaceSaved = workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = role)) @@ -1064,7 +1063,7 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { workspaceApiService.getWorkspacePermissions( - organizationSaved.id!!, workspaceSaved.id!!, ROLE_USER) + organizationSaved.id, workspaceSaved.id!!, ROLE_USER) } assertEquals( "RBAC ${workspaceSaved.id!!} - User does not have permission $PERMISSION_READ_SECURITY", @@ -1072,7 +1071,7 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { workspaceApiService.getWorkspacePermissions( - organizationSaved.id!!, workspaceSaved.id!!, ROLE_USER) + organizationSaved.id, workspaceSaved.id!!, ROLE_USER) } } } @@ -1091,16 +1090,16 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC getWorkspaceSecurity : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val organizationSaved = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( makeOrganizationWithRole(id = TEST_USER_MAIL, role = role)) val solutionSaved = solutionApiService.createSolution( - organizationSaved.id!!, makeSolution(organizationSaved.id!!)) + organizationSaved.id, makeSolution(organizationSaved.id)) val workspaceSaved = workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN)) @@ -1110,15 +1109,15 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { workspaceApiService.getWorkspaceSecurity( - organizationSaved.id!!, workspaceSaved.id!!) + organizationSaved.id, workspaceSaved.id!!) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { workspaceApiService.getWorkspaceSecurity( - organizationSaved.id!!, workspaceSaved.id!!) + organizationSaved.id, workspaceSaved.id!!) } } } @@ -1137,16 +1136,16 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Workspace RBAC getWorkspaceSecurity : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val organizationSaved = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN)) val solutionSaved = solutionApiService.createSolution( - organizationSaved.id!!, makeSolution(organizationSaved.id!!)) + organizationSaved.id, makeSolution(organizationSaved.id)) val workspaceSaved = workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = role)) @@ -1156,7 +1155,7 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { workspaceApiService.getWorkspaceSecurity( - organizationSaved.id!!, workspaceSaved.id!!) + organizationSaved.id, workspaceSaved.id!!) } assertEquals( "RBAC ${workspaceSaved.id!!} - User does not have permission $PERMISSION_READ_SECURITY", @@ -1164,7 +1163,7 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { workspaceApiService.getWorkspaceSecurity( - organizationSaved.id!!, workspaceSaved.id!!) + organizationSaved.id, workspaceSaved.id!!) } } } @@ -1183,16 +1182,16 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC setWorkspaceDefaultSecurity : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val organizationSaved = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( makeOrganizationWithRole(id = TEST_USER_MAIL, role = role)) val solutionSaved = solutionApiService.createSolution( - organizationSaved.id!!, makeSolution(organizationSaved.id!!)) + organizationSaved.id, makeSolution(organizationSaved.id)) val workspaceSaved = workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN)) @@ -1202,15 +1201,15 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { workspaceApiService.setWorkspaceDefaultSecurity( - organizationSaved.id!!, workspaceSaved.id!!, WorkspaceRole(ROLE_USER)) + organizationSaved.id, workspaceSaved.id!!, WorkspaceRole(ROLE_USER)) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { workspaceApiService.setWorkspaceDefaultSecurity( - organizationSaved.id!!, workspaceSaved.id!!, WorkspaceRole(ROLE_USER)) + organizationSaved.id, workspaceSaved.id!!, WorkspaceRole(ROLE_USER)) } } } @@ -1229,16 +1228,16 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Workspace RBAC setWorkspaceDefaultSecurity : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val organizationSaved = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN)) val solutionSaved = solutionApiService.createSolution( - organizationSaved.id!!, makeSolution(organizationSaved.id!!)) + organizationSaved.id, makeSolution(organizationSaved.id)) val workspaceSaved = workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = role)) @@ -1248,7 +1247,7 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { workspaceApiService.setWorkspaceDefaultSecurity( - organizationSaved.id!!, workspaceSaved.id!!, WorkspaceRole(ROLE_USER)) + organizationSaved.id, workspaceSaved.id!!, WorkspaceRole(ROLE_USER)) } assertEquals( "RBAC ${workspaceSaved.id!!} - User does not have permission $PERMISSION_WRITE_SECURITY", @@ -1256,7 +1255,7 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { workspaceApiService.setWorkspaceDefaultSecurity( - organizationSaved.id!!, workspaceSaved.id!!, WorkspaceRole(ROLE_USER)) + organizationSaved.id, workspaceSaved.id!!, WorkspaceRole(ROLE_USER)) } } } @@ -1275,16 +1274,16 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC addWorkspaceAccessControl : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val organizationSaved = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( makeOrganizationWithRole(id = TEST_USER_MAIL, role = role)) val solutionSaved = solutionApiService.createSolution( - organizationSaved.id!!, makeSolution(organizationSaved.id!!)) + organizationSaved.id, makeSolution(organizationSaved.id)) val workspaceSaved = workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN)) @@ -1294,17 +1293,17 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { workspaceApiService.addWorkspaceAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, WorkspaceAccessControl("id", ROLE_USER)) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { workspaceApiService.addWorkspaceAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, WorkspaceAccessControl("id", ROLE_USER)) } @@ -1325,16 +1324,16 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Workspace RBAC addWorkspaceAccessControl : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val organizationSaved = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN)) val solutionSaved = solutionApiService.createSolution( - organizationSaved.id!!, makeSolution(organizationSaved.id!!)) + organizationSaved.id, makeSolution(organizationSaved.id)) val workspaceSaved = workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = role)) @@ -1344,7 +1343,7 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { workspaceApiService.addWorkspaceAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, WorkspaceAccessControl("id", ROLE_USER)) } @@ -1354,7 +1353,7 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { workspaceApiService.addWorkspaceAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, WorkspaceAccessControl("id", ROLE_USER)) } @@ -1375,16 +1374,16 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC getWorkspaceAccessControl : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val organizationSaved = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( makeOrganizationWithRole(id = TEST_USER_MAIL, role = role)) val solutionSaved = solutionApiService.createSolution( - organizationSaved.id!!, makeSolution(organizationSaved.id!!)) + organizationSaved.id, makeSolution(organizationSaved.id)) val workspaceSaved = workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN)) @@ -1394,15 +1393,15 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { workspaceApiService.getWorkspaceAccessControl( - organizationSaved.id!!, workspaceSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, workspaceSaved.id!!, TEST_USER_MAIL) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { workspaceApiService.getWorkspaceAccessControl( - organizationSaved.id!!, workspaceSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, workspaceSaved.id!!, TEST_USER_MAIL) } } } @@ -1421,16 +1420,16 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Workspace RBAC getWorkspaceAccessControl : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val organizationSaved = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN)) val solutionSaved = solutionApiService.createSolution( - organizationSaved.id!!, makeSolution(organizationSaved.id!!)) + organizationSaved.id, makeSolution(organizationSaved.id)) val workspaceSaved = workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = role)) @@ -1440,7 +1439,7 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { workspaceApiService.getWorkspaceAccessControl( - organizationSaved.id!!, workspaceSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, workspaceSaved.id!!, TEST_USER_MAIL) } assertEquals( "RBAC ${workspaceSaved.id!!} - User does not have permission $PERMISSION_READ_SECURITY", @@ -1448,7 +1447,7 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { workspaceApiService.getWorkspaceAccessControl( - organizationSaved.id!!, workspaceSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, workspaceSaved.id!!, TEST_USER_MAIL) } } } @@ -1467,16 +1466,16 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC removeWorkspaceAccessControl : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val organizationSaved = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( makeOrganizationWithRole(id = TEST_USER_MAIL, role = role)) val solutionSaved = solutionApiService.createSolution( - organizationSaved.id!!, makeSolution(organizationSaved.id!!)) + organizationSaved.id, makeSolution(organizationSaved.id)) val workspaceSaved = workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN)) @@ -1486,15 +1485,15 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { workspaceApiService.removeWorkspaceAccessControl( - organizationSaved.id!!, workspaceSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, workspaceSaved.id!!, TEST_USER_MAIL) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { workspaceApiService.removeWorkspaceAccessControl( - organizationSaved.id!!, workspaceSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, workspaceSaved.id!!, TEST_USER_MAIL) } } } @@ -1513,16 +1512,16 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Workspace RBAC removeWorkspaceAccessControl : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val organizationSaved = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN)) val solutionSaved = solutionApiService.createSolution( - organizationSaved.id!!, makeSolution(organizationSaved.id!!)) + organizationSaved.id, makeSolution(organizationSaved.id)) val workspaceSaved = workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = role)) @@ -1532,7 +1531,7 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { workspaceApiService.removeWorkspaceAccessControl( - organizationSaved.id!!, workspaceSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, workspaceSaved.id!!, TEST_USER_MAIL) } assertEquals( "RBAC ${workspaceSaved.id!!} - User does not have permission $PERMISSION_WRITE_SECURITY", @@ -1540,7 +1539,7 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { workspaceApiService.removeWorkspaceAccessControl( - organizationSaved.id!!, workspaceSaved.id!!, TEST_USER_MAIL) + organizationSaved.id, workspaceSaved.id!!, TEST_USER_MAIL) } } } @@ -1559,16 +1558,16 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC updateWorkspaceAccessControl : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val organizationSaved = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( makeOrganizationWithRole(id = TEST_USER_MAIL, role = role)) val solutionSaved = solutionApiService.createSolution( - organizationSaved.id!!, makeSolution(organizationSaved.id!!)) + organizationSaved.id, makeSolution(organizationSaved.id)) val workspaceSaved = workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN)) @@ -1578,18 +1577,18 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { workspaceApiService.updateWorkspaceAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, TEST_USER_MAIL, WorkspaceRole(ROLE_ADMIN)) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { workspaceApiService.updateWorkspaceAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, TEST_USER_MAIL, WorkspaceRole(ROLE_ADMIN)) @@ -1611,16 +1610,16 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Workspace RBAC updateWorkspaceAccessControl : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val organizationSaved = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN)) val solutionSaved = solutionApiService.createSolution( - organizationSaved.id!!, makeSolution(organizationSaved.id!!)) + organizationSaved.id, makeSolution(organizationSaved.id)) val workspaceSaved = workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = role)) @@ -1630,7 +1629,7 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { workspaceApiService.updateWorkspaceAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, TEST_USER_MAIL, WorkspaceRole(ROLE_ADMIN)) @@ -1641,7 +1640,7 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { workspaceApiService.updateWorkspaceAccessControl( - organizationSaved.id!!, + organizationSaved.id, workspaceSaved.id!!, TEST_USER_MAIL, WorkspaceRole(ROLE_ADMIN)) @@ -1663,16 +1662,16 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Organization RBAC getWorkspaceSecurityUsers : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val organizationSaved = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( makeOrganizationWithRole(id = TEST_USER_MAIL, role = role)) val solutionSaved = solutionApiService.createSolution( - organizationSaved.id!!, makeSolution(organizationSaved.id!!)) + organizationSaved.id, makeSolution(organizationSaved.id)) val workspaceSaved = workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = ROLE_ADMIN)) @@ -1682,15 +1681,15 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { workspaceApiService.getWorkspaceSecurityUsers( - organizationSaved.id!!, workspaceSaved.id!!) + organizationSaved.id, workspaceSaved.id!!) } assertEquals( - "RBAC ${organizationSaved.id!!} - User does not have permission $PERMISSION_READ", + "RBAC ${organizationSaved.id} - User does not have permission $PERMISSION_READ", exception.message) } else { assertDoesNotThrow { workspaceApiService.getWorkspaceSecurityUsers( - organizationSaved.id!!, workspaceSaved.id!!) + organizationSaved.id, workspaceSaved.id!!) } } } @@ -1709,16 +1708,16 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { DynamicTest.dynamicTest("Test Workspace RBAC getWorkspaceSecurityUsers : $role") { every { getCurrentAccountIdentifier(any()) } returns CONNECTED_ADMIN_USER val organizationSaved = - organizationApiService.registerOrganization( + organizationApiService.createOrganization( makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN)) val solutionSaved = solutionApiService.createSolution( - organizationSaved.id!!, makeSolution(organizationSaved.id!!)) + organizationSaved.id, makeSolution(organizationSaved.id)) val workspaceSaved = workspaceApiService.createWorkspace( - organizationSaved.id!!, + organizationSaved.id, makeWorkspaceWithRole( - organizationSaved.id!!, + organizationSaved.id, solutionSaved.id!!, id = TEST_USER_MAIL, role = role)) @@ -1728,7 +1727,7 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { val exception = assertThrows { workspaceApiService.getWorkspaceSecurityUsers( - organizationSaved.id!!, workspaceSaved.id!!) + organizationSaved.id, workspaceSaved.id!!) } assertEquals( "RBAC ${workspaceSaved.id!!} - User does not have permission $PERMISSION_READ_SECURITY", @@ -1736,17 +1735,15 @@ class WorkspaceServiceRBACTest : CsmRedisTestBase() { } else { assertDoesNotThrow { workspaceApiService.getWorkspaceSecurityUsers( - organizationSaved.id!!, workspaceSaved.id!!) + organizationSaved.id, workspaceSaved.id!!) } } } } - fun makeOrganizationWithRole(id: String, role: String): Organization { - return Organization( - id = UUID.randomUUID().toString(), + fun makeOrganizationWithRole(id: String, role: String): OrganizationCreationRequest { + return OrganizationCreationRequest( name = "Organization", - ownerId = "my.account-tester@cosmotech.com", security = OrganizationSecurity( default = ROLE_NONE, diff --git a/workspace/src/main/kotlin/com/cosmotech/workspace/service/WorkspaceServiceImpl.kt b/workspace/src/main/kotlin/com/cosmotech/workspace/service/WorkspaceServiceImpl.kt index d1809f24b..49bbe9cf9 100644 --- a/workspace/src/main/kotlin/com/cosmotech/workspace/service/WorkspaceServiceImpl.kt +++ b/workspace/src/main/kotlin/com/cosmotech/workspace/service/WorkspaceServiceImpl.kt @@ -32,7 +32,7 @@ import com.cosmotech.api.utils.findAllPaginated import com.cosmotech.api.utils.getCurrentAccountIdentifier import com.cosmotech.api.utils.getCurrentAuthenticatedUserName import com.cosmotech.organization.OrganizationApiServiceInterface -import com.cosmotech.organization.service.getRbac +import com.cosmotech.organization.service.toGenericSecurity import com.cosmotech.solution.api.SolutionApiService import com.cosmotech.workspace.WorkspaceApiServiceInterface import com.cosmotech.workspace.domain.Workspace @@ -72,7 +72,9 @@ internal class WorkspaceServiceImpl( override fun findAllWorkspaces(organizationId: String, page: Int?, size: Int?): List { val organization = organizationService.getVerifiedOrganization(organizationId) - val isAdmin = csmRbac.isAdmin(organization.getRbac(), getCommonRolesDefinition()) + val isAdmin = + csmRbac.isAdmin( + organization.security.toGenericSecurity(organizationId), getCommonRolesDefinition()) val defaultPageSize = csmPlatformProperties.twincache.workspace.defaultPageSize var result: List var pageable = constructPageRequest(page, size, defaultPageSize) @@ -216,7 +218,7 @@ internal class WorkspaceServiceImpl( throw IllegalArgumentException("Invalid destination: '$destination'. '..' is not allowed") } val workspace = getVerifiedWorkspace(organizationId, workspaceId, PERMISSION_WRITE) - if (file?.filename?.contains("..") == true || file?.filename?.contains("/") == true) { + if (file.filename?.contains("..") == true || file.filename?.contains("/") == true) { throw IllegalArgumentException( "Invalid filename: '${file.filename}'. '..' and '/' are not allowed") } @@ -467,7 +469,7 @@ internal class WorkspaceServiceImpl( val rbacSecurity = csmRbac.addUserRole( - organization.getRbac(), + organization.security.toGenericSecurity(organizationId), workspace.getRbac(), workspaceAccessControl.id, workspaceAccessControl.role) diff --git a/workspace/src/test/kotlin/com/cosmotech/workspace/service/WorkspaceServiceImplTests.kt b/workspace/src/test/kotlin/com/cosmotech/workspace/service/WorkspaceServiceImplTests.kt index baf78e76c..a27ca3206 100644 --- a/workspace/src/test/kotlin/com/cosmotech/workspace/service/WorkspaceServiceImplTests.kt +++ b/workspace/src/test/kotlin/com/cosmotech/workspace/service/WorkspaceServiceImplTests.kt @@ -26,7 +26,7 @@ import com.cosmotech.organization.domain.Organization import com.cosmotech.organization.domain.OrganizationAccessControl import com.cosmotech.organization.domain.OrganizationSecurity import com.cosmotech.organization.repository.OrganizationRepository -import com.cosmotech.organization.service.getRbac +import com.cosmotech.organization.service.toGenericSecurity import com.cosmotech.solution.SolutionApiServiceInterface import com.cosmotech.solution.domain.Solution import com.cosmotech.workspace.domain.Workspace @@ -262,10 +262,8 @@ class WorkspaceServiceImplTests { @Test fun `should reject creation request if solution ID is not valid`() { - - val organization = mockOrganization(ORGANIZATION_ID) - organization.security = OrganizationSecurity(ROLE_ADMIN, mutableListOf()) - every { organizationService.findOrganizationById(ORGANIZATION_ID) } returns organization + val organization = mockOrganization() + every { organizationService.getOrganization(ORGANIZATION_ID) } returns organization val workspace = Workspace( key = "my-workspace-key", @@ -318,7 +316,7 @@ class WorkspaceServiceImplTests { .map { (role, shouldThrow) -> rbacTest("Test RBAC read workspace: $role", role, shouldThrow) { every { workspaceRepository.findByIdOrNull(any()) } returns it.workspace - workspaceServiceImpl.getVerifiedWorkspace(it.organization.id!!, it.workspace.id!!) + workspaceServiceImpl.getVerifiedWorkspace(it.organization.id, it.workspace.id!!) } } @@ -335,11 +333,12 @@ class WorkspaceServiceImplTests { rbacTest("Test RBAC create workspace: $role", role, shouldThrow) { every { organizationRepository.findByIdOrNull(any()) } returns it.organization listOf(PERMISSION_READ, PERMISSION_CREATE_CHILDREN).forEach { permission -> - csmRbac.verify(it.organization.getRbac(), permission) + csmRbac.verify( + it.organization.security.toGenericSecurity(it.organization.id), permission) } every { workspaceRepository.save(any()) } returns it.workspace every { solutionService.findSolutionById(any(), any()) } returns it.solution - workspaceServiceImpl.createWorkspace(it.organization.id!!, it.workspace) + workspaceServiceImpl.createWorkspace(it.organization.id, it.workspace) } } @@ -355,7 +354,7 @@ class WorkspaceServiceImplTests { .map { (role, shouldThrow) -> rbacTest("Test RBAC delete all workspace files: $role", role, shouldThrow) { every { workspaceRepository.findByIdOrNull(any()) } returns it.workspace - workspaceServiceImpl.deleteAllWorkspaceFiles(it.organization.id!!, it.workspace.id!!) + workspaceServiceImpl.deleteAllWorkspaceFiles(it.organization.id, it.workspace.id!!) } } @@ -374,7 +373,7 @@ class WorkspaceServiceImplTests { every { workspaceRepository.findByIdOrNull(any()) } returns it.workspace every { workspaceRepository.save(any()) } returns it.workspace workspaceServiceImpl.updateWorkspace( - it.organization.id!!, it.workspace.id!!, it.workspace) + it.organization.id, it.workspace.id!!, it.workspace) } } @@ -390,7 +389,7 @@ class WorkspaceServiceImplTests { .map { (role, shouldThrow) -> rbacTest("Test RBAC delete workspace: $role", role, shouldThrow) { every { workspaceRepository.findByIdOrNull(any()) } returns it.workspace - workspaceServiceImpl.deleteWorkspace(it.organization.id!!, it.workspace.id!!) + workspaceServiceImpl.deleteWorkspace(it.organization.id, it.workspace.id!!) } } @@ -406,7 +405,7 @@ class WorkspaceServiceImplTests { .map { (role, shouldThrow) -> rbacTest("Test RBAC delete workspace file: $role", role, shouldThrow) { every { workspaceRepository.findByIdOrNull(any()) } returns it.workspace - workspaceServiceImpl.deleteWorkspaceFile(it.organization.id!!, it.workspace.id!!, "") + workspaceServiceImpl.deleteWorkspaceFile(it.organization.id, it.workspace.id!!, "") } } @@ -423,11 +422,11 @@ class WorkspaceServiceImplTests { rbacTest("Test RBAC download workspace file: $role", role, shouldThrow) { every { workspaceRepository.findByIdOrNull(any()) } returns it.workspace val filePath = - Path.of(blobPersistencePath, it.organization.id!!, it.workspace.id!!, "name") + Path.of(blobPersistencePath, it.organization.id, it.workspace.id!!, "name") Files.createDirectories(filePath.getParent()) Files.createFile(filePath) workspaceServiceImpl.downloadWorkspaceFile( - it.organization.id!!, it.workspace.id!!, "name") + it.organization.id, it.workspace.id!!, "name") } } @@ -444,7 +443,7 @@ class WorkspaceServiceImplTests { rbacTest("Test RBAC upload workspace file: $role", role, shouldThrow) { every { workspaceRepository.findByIdOrNull(any()) } returns it.workspace workspaceServiceImpl.uploadWorkspaceFile( - it.organization.id!!, it.workspace.id!!, mockk(relaxed = true), true, "name") + it.organization.id, it.workspace.id!!, mockk(relaxed = true), true, "name") } } @@ -460,7 +459,7 @@ class WorkspaceServiceImplTests { .map { (role, shouldThrow) -> rbacTest("Test RBAC findAllWorkspaceFiles: $role", role, shouldThrow) { every { workspaceRepository.findByIdOrNull(any()) } returns it.workspace - workspaceServiceImpl.findAllWorkspaceFiles(it.organization.id!!, it.workspace.id!!) + workspaceServiceImpl.findAllWorkspaceFiles(it.organization.id, it.workspace.id!!) } } @@ -476,7 +475,7 @@ class WorkspaceServiceImplTests { .map { (role, shouldThrow) -> rbacTest("Test RBAC get workspace security: $role", role, shouldThrow) { every { workspaceRepository.findByIdOrNull(any()) } returns it.workspace - workspaceServiceImpl.getWorkspaceSecurity(it.organization.id!!, it.workspace.id!!) + workspaceServiceImpl.getWorkspaceSecurity(it.organization.id, it.workspace.id!!) } } @@ -494,7 +493,7 @@ class WorkspaceServiceImplTests { every { workspaceRepository.findByIdOrNull(any()) } returns it.workspace every { workspaceRepository.save(any()) } returns it.workspace workspaceServiceImpl.setWorkspaceDefaultSecurity( - it.organization.id!!, it.workspace.id!!, WorkspaceRole(ROLE_NONE)) + it.organization.id, it.workspace.id!!, WorkspaceRole(ROLE_NONE)) } } @@ -511,7 +510,7 @@ class WorkspaceServiceImplTests { rbacTest("test RBAC get workspace access control: $role", role, shouldThrow) { every { workspaceRepository.findByIdOrNull(any()) } returns it.workspace workspaceServiceImpl.getWorkspaceAccessControl( - it.organization.id!!, it.workspace.id!!, CONNECTED_DEFAULT_USER) + it.organization.id, it.workspace.id!!, CONNECTED_DEFAULT_USER) } } @@ -529,7 +528,7 @@ class WorkspaceServiceImplTests { every { workspaceRepository.save(any()) } returns it.workspace every { workspaceRepository.findByIdOrNull(any()) } returns it.workspace workspaceServiceImpl.addWorkspaceAccessControl( - it.organization.id!!, + it.organization.id, it.workspace.id!!, WorkspaceAccessControl("3$CONNECTED_DEFAULT_USER", ROLE_USER)) } @@ -549,7 +548,7 @@ class WorkspaceServiceImplTests { every { workspaceRepository.findByIdOrNull(any()) } returns it.workspace every { workspaceRepository.save(any()) } returns it.workspace workspaceServiceImpl.updateWorkspaceAccessControl( - it.organization.id!!, + it.organization.id, it.workspace.id!!, "2$CONNECTED_DEFAULT_USER", WorkspaceRole(ROLE_USER)) @@ -570,7 +569,7 @@ class WorkspaceServiceImplTests { every { workspaceRepository.findByIdOrNull(any()) } returns it.workspace every { workspaceRepository.save(any()) } returns it.workspace workspaceServiceImpl.removeWorkspaceAccessControl( - it.organization.id!!, it.workspace.id!!, "2$CONNECTED_DEFAULT_USER") + it.organization.id, it.workspace.id!!, "2$CONNECTED_DEFAULT_USER") } } @TestFactory @@ -586,8 +585,7 @@ class WorkspaceServiceImplTests { rbacTest("test RBAC get workspace security users: $role", role, shouldThrow) { every { workspaceRepository.findByIdOrNull(any()) } returns it.workspace every { workspaceRepository.save(any()) } returns it.workspace - workspaceServiceImpl.getWorkspaceSecurityUsers( - it.organization.id!!, it.workspace.id!!) + workspaceServiceImpl.getWorkspaceSecurityUsers(it.organization.id, it.workspace.id!!) } } @@ -597,10 +595,10 @@ class WorkspaceServiceImplTests { shouldThrow: Boolean, testLambda: (ctx: WorkspaceTestContext) -> Unit ): DynamicTest? { - val organization = mockOrganization("o-org-id", CONNECTED_DEFAULT_USER, role) - val solution = mockSolution(organization.id!!) + val organization = mockOrganization(username = CONNECTED_DEFAULT_USER, role = role) + val solution = mockSolution(organization.id) val workspace = - mockWorkspace(organization.id!!, solution.id!!, "Workspace", CONNECTED_DEFAULT_USER, role) + mockWorkspace(organization.id, solution.id!!, "Workspace", CONNECTED_DEFAULT_USER, role) return DynamicTest.dynamicTest(testName) { if (shouldThrow) { assertThrows { @@ -619,21 +617,20 @@ class WorkspaceServiceImplTests { ) fun mockOrganization( - id: String, - roleName: String = CONNECTED_ADMIN_USER, + username: String = CONNECTED_DEFAULT_USER, role: String = ROLE_ADMIN ): Organization { return Organization( - id = id, + id = "organizationId", name = "Organization Name", - ownerId = "my.account-tester@cosmotech.com", + ownerId = "ownerId", security = OrganizationSecurity( default = ROLE_NONE, accessControlList = mutableListOf( - OrganizationAccessControl(id = roleName, role = role), - OrganizationAccessControl("userLambda", "viewer")))) + OrganizationAccessControl(id = username, role = role), + OrganizationAccessControl(CONNECTED_ADMIN_USER, ROLE_ADMIN)))) } fun mockSolution(organizationId: String): Solution {