From 2f7c541313f6d8d7d168e205feefd51b56795b7c Mon Sep 17 00:00:00 2001 From: Leopold Cramer Date: Tue, 4 Jul 2023 17:06:16 +0200 Subject: [PATCH 1/2] removed wait_relationship_propagation from delete scenario endpoint --- doc/Apis/ScenarioApi.md | 3 +-- .../scenario/service/ScenarioServiceImpl.kt | 24 ++++--------------- scenario/src/main/openapi/scenario.yaml | 8 ------- .../service/ScenarioServiceImplTests.kt | 8 +++---- 4 files changed, 10 insertions(+), 33 deletions(-) diff --git a/doc/Apis/ScenarioApi.md b/doc/Apis/ScenarioApi.md index f4bc36609..649726c0f 100644 --- a/doc/Apis/ScenarioApi.md +++ b/doc/Apis/ScenarioApi.md @@ -168,7 +168,7 @@ null (empty response body) # **deleteScenario** -> deleteScenario(organization\_id, workspace\_id, scenario\_id, wait\_relationship\_propagation) +> deleteScenario(organization\_id, workspace\_id, scenario\_id) Delete a scenario @@ -179,7 +179,6 @@ Name | Type | Description | Notes **organization\_id** | **String**| the Organization identifier | [default to null] **workspace\_id** | **String**| the Workspace identifier | [default to null] **scenario\_id** | **String**| the Scenario identifier | [default to null] - **wait\_relationship\_propagation** | **Boolean**| whether to wait until child scenarios are effectively updated | [optional] [default to false] ### Return type diff --git a/scenario/src/main/kotlin/com/cosmotech/scenario/service/ScenarioServiceImpl.kt b/scenario/src/main/kotlin/com/cosmotech/scenario/service/ScenarioServiceImpl.kt index 74601f9ee..2c4dc4a0e 100644 --- a/scenario/src/main/kotlin/com/cosmotech/scenario/service/ScenarioServiceImpl.kt +++ b/scenario/src/main/kotlin/com/cosmotech/scenario/service/ScenarioServiceImpl.kt @@ -232,18 +232,13 @@ internal class ScenarioServiceImpl( } } - override fun deleteScenario( - organizationId: String, - workspaceId: String, - scenarioId: String, - waitRelationshipPropagation: Boolean - ) { + override fun deleteScenario(organizationId: String, workspaceId: String, scenarioId: String) { val scenario = this.findScenarioById(organizationId, workspaceId, scenarioId) csmRbac.verify(scenario.getRbac(), PERMISSION_DELETE, scenarioPermissions) scenarioRepository.delete(scenario) - this.handleScenarioDeletion(organizationId, workspaceId, scenario, waitRelationshipPropagation) + this.handleScenarioDeletion(organizationId, workspaceId, scenario) val workspace = workspaceService.findWorkspaceById(organizationId, workspaceId) deleteScenarioMetadata(organizationId, workspace.key, scenarioId) @@ -305,7 +300,6 @@ internal class ScenarioServiceImpl( organizationId: String, workspaceId: String, deletedScenario: Scenario, - waitRelationshipPropagation: Boolean = true ) { val rootId = deletedScenario.rootId val children = this.findScenarioChildrenById(organizationId, workspaceId, deletedScenario.id!!) @@ -322,18 +316,10 @@ internal class ScenarioServiceImpl( } } runBlocking { childrenUpdatesCoroutines.joinAll() } - if (rootId == null) - children.forEach { - updateRootId(organizationId, workspaceId, it, waitRelationshipPropagation) - } + if (rootId == null) children.forEach { updateRootId(organizationId, workspaceId, it) } } - private fun updateRootId( - organizationId: String, - workspaceId: String, - scenario: Scenario, - waitRelationshipPropagation: Boolean - ) { + private fun updateRootId(organizationId: String, workspaceId: String, scenario: Scenario) { val rootId = if (scenario.rootId == null) scenario.id else scenario.rootId val children = this.findScenarioChildrenById(organizationId, workspaceId, scenario.id!!) val childrenUpdatesCoroutines = @@ -345,7 +331,7 @@ internal class ScenarioServiceImpl( } } runBlocking { childrenUpdatesCoroutines.joinAll() } - children.forEach { updateRootId(organizationId, workspaceId, it, waitRelationshipPropagation) } + children.forEach { updateRootId(organizationId, workspaceId, it) } } override fun findAllScenarios( diff --git a/scenario/src/main/openapi/scenario.yaml b/scenario/src/main/openapi/scenario.yaml index f157cbffa..3653c2980 100644 --- a/scenario/src/main/openapi/scenario.yaml +++ b/scenario/src/main/openapi/scenario.yaml @@ -265,14 +265,6 @@ paths: description: the Scenario specified is unknown or you don't have access to it delete: operationId: deleteScenario - parameters: - - name: wait_relationship_propagation - in: query - description: whether to wait until child scenarios are effectively updated - required: false - schema: - type: boolean - default: false tags: - scenario summary: Delete a scenario diff --git a/scenario/src/test/kotlin/com/cosmotech/scenario/service/ScenarioServiceImplTests.kt b/scenario/src/test/kotlin/com/cosmotech/scenario/service/ScenarioServiceImplTests.kt index dd3783009..ac59b140d 100644 --- a/scenario/src/test/kotlin/com/cosmotech/scenario/service/ScenarioServiceImplTests.kt +++ b/scenario/src/test/kotlin/com/cosmotech/scenario/service/ScenarioServiceImplTests.kt @@ -532,7 +532,7 @@ class ScenarioServiceImplTests { every { workspace.sendScenarioMetadataToEventHub } returns false every { csmPlatformProperties.twincache.scenario.defaultPageSize } returns 5 - this.scenarioServiceImpl.deleteScenario(ORGANIZATION_ID, WORKSPACE_ID, c111.id!!, false) + this.scenarioServiceImpl.deleteScenario(ORGANIZATION_ID, WORKSPACE_ID, c111.id!!) assertNull(m1.parentId) assertNotNull(m1.id) @@ -594,7 +594,7 @@ class ScenarioServiceImplTests { every { csmPlatformProperties.twincache.scenario.defaultPageSize } returns 100 every { scenarioServiceImpl.isRbacEnabled(ORGANIZATION_ID, WORKSPACE_ID) } returns false - this.scenarioServiceImpl.deleteScenario(ORGANIZATION_ID, WORKSPACE_ID, m1.id!!, true) + this.scenarioServiceImpl.deleteScenario(ORGANIZATION_ID, WORKSPACE_ID, m1.id!!) assertNull(p11.parentId) assertNull(p12.parentId) @@ -655,7 +655,7 @@ class ScenarioServiceImplTests { every { csmPlatformProperties.twincache.scenario.defaultPageSize } returns 100 every { scenarioServiceImpl.isRbacEnabled(ORGANIZATION_ID, WORKSPACE_ID) } returns false - this.scenarioServiceImpl.deleteScenario(ORGANIZATION_ID, WORKSPACE_ID, p11.id!!, false) + this.scenarioServiceImpl.deleteScenario(ORGANIZATION_ID, WORKSPACE_ID, p11.id!!) sequenceOf(c111, c112).forEach { verify(exactly = 1) { scenarioServiceImpl.upsertScenarioData(it) } @@ -1070,7 +1070,7 @@ class ScenarioServiceImplTests { every { scenarioServiceImpl.findScenarioChildrenById(any(), any(), any()) } returns emptyList() scenarioServiceImpl.deleteScenario( - it.organization.id!!, it.workspace.id!!, it.scenario.id!!, false) + it.organization.id!!, it.workspace.id!!, it.scenario.id!!) } } From 7ad86b2944d31a36dc27dc40d79c98a8a4cbc41a Mon Sep 17 00:00:00 2001 From: Leopold Cramer Date: Tue, 4 Jul 2023 17:36:19 +0200 Subject: [PATCH 2/2] modify tests --- .../service/ScenarioServiceIntegrationTest.kt | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/scenario/src/integrationTest/kotlin/com/cosmotech/scenario/service/ScenarioServiceIntegrationTest.kt b/scenario/src/integrationTest/kotlin/com/cosmotech/scenario/service/ScenarioServiceIntegrationTest.kt index fdb00361d..ad9dc36d2 100644 --- a/scenario/src/integrationTest/kotlin/com/cosmotech/scenario/service/ScenarioServiceIntegrationTest.kt +++ b/scenario/src/integrationTest/kotlin/com/cosmotech/scenario/service/ScenarioServiceIntegrationTest.kt @@ -199,7 +199,7 @@ class ScenarioServiceIntegrationTest : CsmRedisTestBase() { logger.info("should delete the Scenario and assert there is only one Scenario left") scenarioApiService.deleteScenario( - organizationSaved.id!!, workspaceSaved.id!!, scenarioSaved2.id!!, false) + organizationSaved.id!!, workspaceSaved.id!!, scenarioSaved2.id!!) val scenarioListAfterDelete = scenarioApiService.findAllScenarios(organizationSaved.id!!, workspaceSaved.id!!, null, null) assertTrue(scenarioListAfterDelete.size == 1) @@ -298,8 +298,7 @@ class ScenarioServiceIntegrationTest : CsmRedisTestBase() { assertEquals(6, scenarios.size) logger.info("should delete last child (element 5) and assert there are 5 Scenarios left") - scenarioApiService.deleteScenario( - organizationSaved.id!!, workspaceSaved.id!!, idMap[5]!!, false) + scenarioApiService.deleteScenario(organizationSaved.id!!, workspaceSaved.id!!, idMap[5]!!) scenarios = scenarioApiService.findAllScenarios(organizationSaved.id!!, workspaceSaved.id!!, null, null) assertEquals(5, scenarios.size) @@ -310,8 +309,7 @@ class ScenarioServiceIntegrationTest : CsmRedisTestBase() { assertEquals(idMap[3], scenario.parentId) logger.info("should delete element 3 (in the middle) and assert there are 4 Scenarios left") - scenarioApiService.deleteScenario( - organizationSaved.id!!, workspaceSaved.id!!, idMap[3]!!, false) + scenarioApiService.deleteScenario(organizationSaved.id!!, workspaceSaved.id!!, idMap[3]!!) scenarios = scenarioApiService.findAllScenarios(organizationSaved.id!!, workspaceSaved.id!!, null, null) assertEquals(4, scenarios.size) @@ -322,8 +320,7 @@ class ScenarioServiceIntegrationTest : CsmRedisTestBase() { assertEquals(idMap[2], scenario.parentId) logger.info("should delete root element (element 1) and assert there are 3 Scenarios left") - scenarioApiService.deleteScenario( - organizationSaved.id!!, workspaceSaved.id!!, idMap[1]!!, false) + scenarioApiService.deleteScenario(organizationSaved.id!!, workspaceSaved.id!!, idMap[1]!!) scenarios = scenarioApiService.findAllScenarios(organizationSaved.id!!, workspaceSaved.id!!, null, null) assertEquals(3, scenarios.size) @@ -455,12 +452,12 @@ class ScenarioServiceIntegrationTest : CsmRedisTestBase() { if (shouldThrow) assertThrows { scenarioApiService.deleteScenario( - organizationSaved.id!!, workspaceSaved.id!!, scenarioSaved.id!!, true) + organizationSaved.id!!, workspaceSaved.id!!, scenarioSaved.id!!) } else assertDoesNotThrow { scenarioApiService.deleteScenario( - organizationSaved.id!!, workspaceSaved.id!!, scenarioSaved.id!!, true) + organizationSaved.id!!, workspaceSaved.id!!, scenarioSaved.id!!) } } } @@ -608,7 +605,7 @@ class ScenarioServiceIntegrationTest : CsmRedisTestBase() { rootId = scenarioSaved.id)) scenarioApiService.deleteScenario( - organizationSaved.id!!, workspaceSaved.id!!, scenarioSaved.id!!, true) + organizationSaved.id!!, workspaceSaved.id!!, scenarioSaved.id!!) firstChildScenario = scenarioApiService.findScenarioById(