aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--workflow-bdd/features/Version_State.feature30
-rw-r--r--workflow-bdd/pom.xml4
-rw-r--r--workflow-bdd/stepDefinitions/General_Steps.js15
-rw-r--r--workflow-bdd/stepDefinitions/Utils.js5
-rw-r--r--workflow-bdd/stepDefinitions/world.js5
-rw-r--r--workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/WorkflowController.java43
-rw-r--r--workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/WorkflowVersionController.java82
-rw-r--r--workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/exceptionshandlers/CustomizedResponseEntityExceptionHandler.java10
-rw-r--r--workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/impl/WorkflowControllerImpl.java52
-rw-r--r--workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/impl/WorkflowVersionControllerImpl.java89
-rw-r--r--workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/types/VersionStateDto.java20
-rw-r--r--workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/WorkflowVersion.java4
-rw-r--r--workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/WorkflowVersionState.java20
-rw-r--r--workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/WorkflowVersionStatus.java6
-rw-r--r--workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/WorkflowVersionManager.java18
-rw-r--r--workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/CreateVersionException.java9
-rw-r--r--workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/VersionCreationException.java15
-rw-r--r--workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/VersionModificationException.java7
-rw-r--r--workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/VersionStateModificationException.java12
-rw-r--r--workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/WorkflowVersionManagerImpl.java144
-rw-r--r--workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/VersionMapper.java4
-rw-r--r--workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/VersionStateMapper.java (renamed from workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/VersionStatusMapper.java)8
-rw-r--r--workflow-designer-be/src/test/java/org/onap/sdc/workflow/api/WorkflowControllerTest.java13
-rw-r--r--workflow-designer-be/src/test/java/org/onap/sdc/workflow/api/WorkflowVersionControllerTest.java3
-rw-r--r--workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/impl/WorkflowManagerImplTest.java (renamed from workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/impl/WorkflowManagerTest.java)2
-rw-r--r--workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/impl/WorkflowVersionManagerImplTest.java258
-rw-r--r--workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/impl/WorkflowVersionManagerTest.java168
-rw-r--r--workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/impl/mappers/VersionMapperTest.java6
-rw-r--r--workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/impl/mappers/VersionStateMapperTest.java (renamed from workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/impl/mappers/VersionStatusMapperTest.java)44
29 files changed, 633 insertions, 463 deletions
diff --git a/workflow-bdd/features/Version_State.feature b/workflow-bdd/features/Version_State.feature
new file mode 100644
index 00000000..8c1e13fd
--- /dev/null
+++ b/workflow-bdd/features/Version_State.feature
@@ -0,0 +1,30 @@
+Feature: Workflow Version State
+
+ Background: Create workflow and first version
+ Given I want to create a Workflow
+ And I want to update the input property "description" with value "workflow version description"
+ And I want to create for path "/workflows/{item.id}/versions" with the input data from the context
+ And I want to copy to property "item.versionId" from response data path "id"
+
+ Scenario: Get state after creation
+ When I want to get path "/workflows/{item.id}/versions/{item.versionId}/state"
+ Then I want to check property "name" for value "DRAFT"
+ And I want to check property "nextStates[0]" for value "CERTIFIED"
+
+ Scenario: Update state to current state
+ Then I want the following to fail with response status code 422
+ When I want to update the input property "name" with value "DRAFT"
+ And I want to create for path "/workflows/{item.id}/versions/{item.versionId}/state" with the input data from the context
+
+ Scenario: Update state - DRAFT to CERTIFIED
+ When I want to update the input property "name" with value "CERTIFIED"
+ And I want to create for path "/workflows/{item.id}/versions/{item.versionId}/state" with the input data from the context
+ Then I want to get path "/workflows/{item.id}/versions/{item.versionId}/state"
+ And I want to check property "name" for value "CERTIFIED"
+ And I want to check property "nextStates" to have length 0
+
+ Scenario: Update state when CERTIFIED
+ When I want to update the input property "name" with value "CERTIFIED"
+ And I want to create for path "/workflows/{item.id}/versions/{item.versionId}/state" with the input data from the context
+ When I want the following to fail with response status code 422
+ Then I want to create for path "/workflows/{item.id}/versions/{item.versionId}/state" with the input data from the context \ No newline at end of file
diff --git a/workflow-bdd/pom.xml b/workflow-bdd/pom.xml
index 111fe39e..3502451c 100644
--- a/workflow-bdd/pom.xml
+++ b/workflow-bdd/pom.xml
@@ -8,11 +8,11 @@
<name>cucumber-report</name>
<version>1.2.0-SNAPSHOT</version>
- <parent>
+<!-- <parent>
<groupId>org.onap.sdc.sdc-workflow-designer</groupId>
<artifactId>sdc-workflow-designer</artifactId>
<version>1.2.0-SNAPSHOT</version>
- </parent>
+ </parent>-->
<build>
<plugins>
diff --git a/workflow-bdd/stepDefinitions/General_Steps.js b/workflow-bdd/stepDefinitions/General_Steps.js
index 448c97f8..0550e415 100644
--- a/workflow-bdd/stepDefinitions/General_Steps.js
+++ b/workflow-bdd/stepDefinitions/General_Steps.js
@@ -52,11 +52,11 @@ Given('Response Data:', function (docString) {
/**
* @module ContextData
- * @description Copy a property from the response data to context Item/VLM/VSP data, example: vsp.componentId
+ * @description Copy a property from the response data to context Item data, example: item.componentId
* @step I want to save on the context for {string} property {string} with value {string}
**/
Then('I want to save on the context for {string} property {string} with value {string}', function(string, string1, string2) {
- assert.equal(_.includes(['VLM', 'VSP', 'Item'], string), true);
+ assert.equal(_.includes(['Item'], string), true);
let val = _.get(this.context.responseData, string2);
_.set(this.context, string1, val);
});
@@ -170,6 +170,17 @@ Then('I want the following to fail', function() {
/**
* @module ContextData
+ * @description Set this in order to check that the following Rest call will not have response code 200
+ * @exampleFile Example_Rest_Calls.feature
+ * @step I want the following to fail
+ **/
+Then('I want the following to fail with response status code {int}', function(int) {
+ this.context.shouldFail = true;
+ this.context.responseStatusCode = int;
+});
+
+/**
+ * @module ContextData
* @description Set this in order to check that the following Rest call will have the error code on the return data
* @exampleFile Example_VSP.feature
* @step I want the following to fail with error code {string}
diff --git a/workflow-bdd/stepDefinitions/Utils.js b/workflow-bdd/stepDefinitions/Utils.js
index 66e959f6..6f8a7a5c 100644
--- a/workflow-bdd/stepDefinitions/Utils.js
+++ b/workflow-bdd/stepDefinitions/Utils.js
@@ -55,6 +55,11 @@ function _request(context, method, path, data, isBinary=false, type='onboarding'
console.error(result.body);
reject('Status Code was ' + result.statusCode);
}
+ if (context.shouldFail && context.responseStatusCode) {
+ if (result.statusCode !== context.responseStatusCode) {
+ reject('Response Status Code was ' + result.statusCode + ' instead of ' + context.responseStatusCode);
+ }
+ }
if (context.shouldFail && context.errorCode) {
if (typeof data === 'string' && data) {
data = JSON.parse(data);
diff --git a/workflow-bdd/stepDefinitions/world.js b/workflow-bdd/stepDefinitions/world.js
index 4ef03813..cf749e66 100644
--- a/workflow-bdd/stepDefinitions/world.js
+++ b/workflow-bdd/stepDefinitions/world.js
@@ -38,9 +38,6 @@ var {setDefaultTimeout} = require('cucumber');
*<Br>
* Contains the following items:<br>
* <li>this.context.server <ul>REST server and onboarding prefix including version. set either in configuration file or from the command line or SERVER environment variable</ul>
- * <li>this.context.vlm <ul>When a VLM has been created, this has the an id and versionId set to the correct IDs.</ul>
- * <li>this.context.vsp <ul>When a VSP has been created, this has the an id and versionId and componentId set to the correct IDs.</ul>
- * <li>this.context.item <ul>When a VLM or VSP has been created, this has the an id and versionId set to the correct IDs.</ul>
* <li>this.context <ul>Object with properties that were saved in the steps.</ul>
* <li>this.context.inputdata <ul><b>Automatically updated with the last responseData from the Rest call</b><br>Object with properties that were prepares in the steps.</ul>
* <li>this.context.responseData <ul>Response from the last REST call.</ul>
@@ -57,8 +54,6 @@ class CustomWorld {
}
}
- this.context.vlm = {id: null, versionId: null};
- this.context.vsp = {id: null, versionId: null};
this.context.item = {id: null, versionId: null, componentId: null};
this.context.shouldFail = false;
diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/WorkflowController.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/WorkflowController.java
index 2173c05a..bb4320cc 100644
--- a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/WorkflowController.java
+++ b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/WorkflowController.java
@@ -1,33 +1,66 @@
package org.onap.sdc.workflow.api;
+import static org.onap.sdc.workflow.api.RestConstants.USER_ID_HEADER_PARAM;
+
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.onap.sdc.workflow.api.types.CollectionWrapper;
import org.onap.sdc.workflow.persistence.types.Workflow;
+import org.onap.sdc.workflow.services.WorkflowManager;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/workflows")
@Api("Workflows")
-public interface WorkflowController {
+@RestController("workflowController")
+public class WorkflowController {
+
+ private final WorkflowManager workflowManager;
+
+ @Autowired
+ public WorkflowController(@Qualifier("workflowManager") WorkflowManager workflowManager) {
+ this.workflowManager = workflowManager;
+ }
@GetMapping(produces = MediaType.APPLICATION_JSON_VALUE)
@ApiOperation("List workflows")
- CollectionWrapper<Workflow> list(String user);
+ public CollectionWrapper<Workflow> list(@RequestHeader(USER_ID_HEADER_PARAM) String user) {
+ return new CollectionWrapper<>(workflowManager.list());
+ }
@PostMapping(consumes = MediaType.APPLICATION_JSON_VALUE)
@ApiOperation("Create workflow")
- ResponseEntity<Workflow> create(Workflow workflow, String user);
+ public ResponseEntity<Workflow> create(@RequestBody Workflow workflow,
+ @RequestHeader(USER_ID_HEADER_PARAM) String user) {
+ return new ResponseEntity<>(workflowManager.create(workflow), HttpStatus.CREATED);
+ }
@GetMapping(path = "/{workflowId}")
@ApiOperation("Get workflow")
- Workflow get(String workflowId, String user);
+ public Workflow get(@PathVariable("workflowId") String workflowId,
+ @RequestHeader(USER_ID_HEADER_PARAM) String user) {
+ Workflow workflow = new Workflow();
+ workflow.setId(workflowId);
+ return workflowManager.get(workflow);
+ }
@PutMapping(path = "/{workflowId}", consumes = MediaType.APPLICATION_JSON_VALUE)
@ApiOperation("Update workflow")
- Workflow update(Workflow workflow, String workflowId, String user);
+ public Workflow update(@RequestBody Workflow workflow, @PathVariable("workflowId") String workflowId,
+ @RequestHeader(USER_ID_HEADER_PARAM) String user) {
+ workflow.setId(workflowId);
+ workflowManager.update(workflow);
+ return workflow;
+ }
}
diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/WorkflowVersionController.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/WorkflowVersionController.java
index cb1fb1f3..6214f1bb 100644
--- a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/WorkflowVersionController.java
+++ b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/WorkflowVersionController.java
@@ -1,51 +1,117 @@
package org.onap.sdc.workflow.api;
+import static org.onap.sdc.workflow.api.RestConstants.USER_ID_HEADER_PARAM;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.onap.sdc.workflow.api.types.CollectionWrapper;
import org.onap.sdc.workflow.api.types.VersionRequestDto;
+import org.onap.sdc.workflow.api.types.VersionStateDto;
+import org.onap.sdc.workflow.persistence.types.ArtifactEntity;
import org.onap.sdc.workflow.persistence.types.WorkflowVersion;
+import org.onap.sdc.workflow.services.WorkflowVersionManager;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.core.io.InputStreamResource;
import org.springframework.core.io.Resource;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
@RequestMapping("/workflows/{workflowId}/versions")
@Api("Workflow versions")
-public interface WorkflowVersionController {
+@RestController("workflowsVersionController")
+public class WorkflowVersionController {
+ private final WorkflowVersionManager workflowVersionManager;
+
+ @Autowired
+ public WorkflowVersionController(
+ @Qualifier("workflowVersionManager") WorkflowVersionManager workflowVersionManager) {
+ this.workflowVersionManager = workflowVersionManager;
+ }
@GetMapping
@ApiOperation("List workflow versions")
- CollectionWrapper<WorkflowVersion> list(String workflowId,String user);
+ public CollectionWrapper<WorkflowVersion> list(@PathVariable("workflowId") String workflowId,
+ @RequestHeader(USER_ID_HEADER_PARAM) String user) {
+ return new CollectionWrapper<>(workflowVersionManager.list(workflowId));
+ }
@PostMapping
@ApiOperation("Create workflow version")
- ResponseEntity<WorkflowVersion> create(String workflowId, VersionRequestDto versionRequest, String user);
+ public ResponseEntity<WorkflowVersion> create(@RequestBody VersionRequestDto versionRequest,
+ @PathVariable("workflowId") String workflowId, @RequestHeader(USER_ID_HEADER_PARAM) String user) {
+
+ WorkflowVersion createdVersion = workflowVersionManager.create(workflowId, versionRequest);
+ return new ResponseEntity<>(createdVersion, HttpStatus.CREATED);
+ }
@GetMapping("/{versionId}")
@ApiOperation("Get workflow version")
- WorkflowVersion get(String workflowId,String versionId, String user);
+ public WorkflowVersion get(@PathVariable("workflowId") String workflowId,
+ @PathVariable("versionId") String versionId, @RequestHeader(USER_ID_HEADER_PARAM) String user) {
+ return workflowVersionManager.get(workflowId, versionId);
+ }
@PutMapping("/{versionId}")
@ApiOperation("Update workflow version")
- void update(WorkflowVersion version,String workflowId, String versionId, String user);
+ public void update(@RequestBody WorkflowVersion version, @PathVariable("workflowId") String workflowId,
+ @PathVariable("versionId") String versionId, @RequestHeader(USER_ID_HEADER_PARAM) String user) {
+ version.setId(versionId);
+ workflowVersionManager.update(workflowId, version);
+ }
+ @GetMapping("/{versionId}/state")
+ @ApiOperation("Get workflow version state")
+ public VersionStateDto getState(@PathVariable("workflowId") String workflowId,
+ @PathVariable("versionId") String versionId, @RequestHeader(USER_ID_HEADER_PARAM) String user) {
+ return new VersionStateDto(workflowVersionManager.getState(workflowId, versionId));
+ }
+
+ @PostMapping("/{versionId}/state")
+ @ApiOperation("Update workflow version state")
+ public VersionStateDto updateState(@RequestBody VersionStateDto state,
+ @PathVariable("workflowId") String workflowId, @PathVariable("versionId") String versionId,
+ @RequestHeader(USER_ID_HEADER_PARAM) String user) {
+ workflowVersionManager.updateState(workflowId, versionId, state.getName());
+ return new VersionStateDto(state.getName());
+ }
@PutMapping("/{versionId}/artifact")
@ApiOperation("Create/update artifact of a version")
- void createArtifact(MultipartFile fileToUpload, String workflowId, String versionId, String user);
+ public void uploadArtifact(@RequestBody MultipartFile fileToUpload, @PathVariable("workflowId") String workflowId,
+ @PathVariable("versionId") String versionId, @RequestHeader(USER_ID_HEADER_PARAM) String user) {
+ workflowVersionManager.uploadArtifact(workflowId, versionId, fileToUpload);
+ }
@GetMapping("/{versionId}/artifact")
@ApiOperation("Download workflow version artifact")
- ResponseEntity<Resource> getArtifact(String workflowId, String versionId, String user);
+ public ResponseEntity<Resource> getArtifact(@PathVariable("workflowId") String workflowId,
+ @PathVariable("versionId") String versionId, @RequestHeader(USER_ID_HEADER_PARAM) String user) {
+ ArtifactEntity artifact = workflowVersionManager.getArtifact(workflowId, versionId);
+
+ return ResponseEntity.ok()
+ .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + artifact.getFileName())
+ .contentType(MediaType.APPLICATION_OCTET_STREAM)
+ .body(new InputStreamResource(artifact.getArtifactData()));
+ }
@DeleteMapping("/{versionId}/artifact")
@ApiOperation("Delete workflow version artifact")
- void deleteArtifact(String workflowId, String versionId, String user);
+ public void deleteArtifact(@PathVariable("workflowId") String workflowId,
+ @PathVariable("versionId") String versionId, @RequestHeader(USER_ID_HEADER_PARAM) String user) {
+ workflowVersionManager.deleteArtifact(workflowId, versionId);
+ }
}
diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/exceptionshandlers/CustomizedResponseEntityExceptionHandler.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/exceptionshandlers/CustomizedResponseEntityExceptionHandler.java
index 0b5278ac..68fd41a5 100644
--- a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/exceptionshandlers/CustomizedResponseEntityExceptionHandler.java
+++ b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/exceptionshandlers/CustomizedResponseEntityExceptionHandler.java
@@ -7,8 +7,9 @@ import static org.springframework.http.HttpStatus.UNPROCESSABLE_ENTITY;
import org.onap.sdc.workflow.services.exceptions.EntityNotFoundException;
import org.onap.sdc.workflow.services.exceptions.InvalidArtifactException;
import org.onap.sdc.workflow.services.exceptions.UniqueValueViolationException;
-import org.onap.sdc.workflow.services.exceptions.CreateVersionException;
+import org.onap.sdc.workflow.services.exceptions.VersionCreationException;
import org.onap.sdc.workflow.services.exceptions.VersionModificationException;
+import org.onap.sdc.workflow.services.exceptions.VersionStateModificationException;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
@@ -31,16 +32,17 @@ public class CustomizedResponseEntityExceptionHandler extends ResponseEntityExce
return new ResponseEntity<>(exception.getMessage(), NOT_FOUND);
}
- @ExceptionHandler({InvalidArtifactException.class, VersionModificationException.class})
+ @ExceptionHandler({InvalidArtifactException.class, VersionModificationException.class,
+ VersionStateModificationException.class})
public final ResponseEntity<String> handleInvalidArtifactException(
Exception exception) {
return new ResponseEntity<>(exception.getMessage(), UNPROCESSABLE_ENTITY);
}
- @ExceptionHandler(CreateVersionException.class)
+ @ExceptionHandler(VersionCreationException.class)
public final ResponseEntity<String> handleVersioningErrorException(
- CreateVersionException exception) {
+ VersionCreationException exception) {
return new ResponseEntity<>(exception.getMessage(), FORBIDDEN);
}
}
diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/impl/WorkflowControllerImpl.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/impl/WorkflowControllerImpl.java
deleted file mode 100644
index 0d9ee4be..00000000
--- a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/impl/WorkflowControllerImpl.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package org.onap.sdc.workflow.api.impl;
-
-import static org.onap.sdc.workflow.api.RestConstants.USER_ID_HEADER_PARAM;
-
-import org.onap.sdc.workflow.api.WorkflowController;
-import org.onap.sdc.workflow.api.types.CollectionWrapper;
-import org.onap.sdc.workflow.persistence.types.Workflow;
-import org.onap.sdc.workflow.services.WorkflowManager;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestHeader;
-import org.springframework.web.bind.annotation.RestController;
-
-@RestController("workflowController")
-public class WorkflowControllerImpl implements WorkflowController {
-
- private final WorkflowManager workflowManager;
-
- @Autowired
- public WorkflowControllerImpl(@Qualifier("workflowManager") WorkflowManager workflowManager) {
- this.workflowManager = workflowManager;
- }
-
- @Override
- public CollectionWrapper<Workflow> list(@RequestHeader(USER_ID_HEADER_PARAM) String user) {
- return new CollectionWrapper<>(workflowManager.list());
- }
-
- @Override
- public ResponseEntity<Workflow> create(@RequestBody Workflow workflow, @RequestHeader(USER_ID_HEADER_PARAM) String user) {
- return new ResponseEntity<>(workflowManager.create(workflow), HttpStatus.CREATED);
- }
-
- @Override
- public Workflow get(@PathVariable("workflowId") String workflowId, @RequestHeader(USER_ID_HEADER_PARAM) String user) {
- Workflow workflow = new Workflow();
- workflow.setId(workflowId);
- return workflowManager.get(workflow);
- }
-
- @Override
- public Workflow update(@RequestBody Workflow workflow, @PathVariable("workflowId") String workflowId,
- @RequestHeader(USER_ID_HEADER_PARAM) String user) {
- workflow.setId(workflowId);
- workflowManager.update(workflow);
- return workflow;
- }
-}
diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/impl/WorkflowVersionControllerImpl.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/impl/WorkflowVersionControllerImpl.java
deleted file mode 100644
index 0570ac85..00000000
--- a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/impl/WorkflowVersionControllerImpl.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package org.onap.sdc.workflow.api.impl;
-
-import static org.onap.sdc.workflow.api.RestConstants.USER_ID_HEADER_PARAM;
-
-import org.onap.sdc.workflow.api.WorkflowVersionController;
-import org.onap.sdc.workflow.api.types.CollectionWrapper;
-import org.onap.sdc.workflow.api.types.VersionRequestDto;
-import org.onap.sdc.workflow.persistence.types.ArtifactEntity;
-import org.onap.sdc.workflow.persistence.types.WorkflowVersion;
-import org.onap.sdc.workflow.services.WorkflowVersionManager;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.core.io.InputStreamResource;
-import org.springframework.core.io.Resource;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestHeader;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.multipart.MultipartFile;
-
-@RestController("workflowsVersionController")
-public class WorkflowVersionControllerImpl implements WorkflowVersionController {
-
- private final WorkflowVersionManager workflowVersionManager;
-
- @Autowired
- public WorkflowVersionControllerImpl(@Qualifier("workflowVersionManager") WorkflowVersionManager workflowVersionManager) {
- this.workflowVersionManager = workflowVersionManager;
- }
-
- @Override
- public CollectionWrapper<WorkflowVersion> list(@PathVariable("workflowId") String workflowId,
- @RequestHeader(USER_ID_HEADER_PARAM) String user) {
- return new CollectionWrapper<>(workflowVersionManager.list(workflowId));
- }
-
- @Override
- public ResponseEntity<WorkflowVersion> create(@PathVariable("workflowId") String workflowId,@RequestBody VersionRequestDto versionRequest,
- @RequestHeader(USER_ID_HEADER_PARAM) String user) {
-
- WorkflowVersion createdVersion = workflowVersionManager.create(workflowId, versionRequest);
- return new ResponseEntity<>(createdVersion, HttpStatus.CREATED);
- }
-
- @Override
- public WorkflowVersion get(@PathVariable("workflowId") String workflowId,@PathVariable("versionId") String versionId,
- @RequestHeader(USER_ID_HEADER_PARAM) String user) {
- return workflowVersionManager.get(workflowId,versionId);
- }
-
- @Override
- public void update(@RequestBody WorkflowVersion version,@PathVariable("workflowId") String workflowId,
- @PathVariable("versionId") String versionId, @RequestHeader(USER_ID_HEADER_PARAM) String user) {
-
- version.setId(versionId);
- workflowVersionManager.update(workflowId,version);
- }
-
- @Override
- public void createArtifact(@RequestBody MultipartFile fileToUpload, @PathVariable("workflowId") String workflowId,
- @PathVariable("versionId") String versionId,@RequestHeader(USER_ID_HEADER_PARAM) String user) {
-
- workflowVersionManager.uploadArtifact(workflowId,new WorkflowVersion(versionId),fileToUpload);
-
- }
-
- @Override
- public ResponseEntity<Resource> getArtifact(@PathVariable("workflowId") String workflowId,
- @PathVariable("versionId") String versionId, @RequestHeader(USER_ID_HEADER_PARAM) String user) {
- WorkflowVersion requestedVersion = new WorkflowVersion(versionId);
- ArtifactEntity artifact = workflowVersionManager.getArtifact(workflowId, requestedVersion);
-
- return ResponseEntity.ok()
- .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + artifact.getFileName())
- .contentType(MediaType.APPLICATION_OCTET_STREAM)
- .body(new InputStreamResource(artifact.getArtifactData()));
- }
-
- @Override
- public void deleteArtifact(@PathVariable("workflowId") String workflowId, @PathVariable("versionId") String versionId,
- @RequestHeader(USER_ID_HEADER_PARAM) String user) {
-
- }
-}
diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/types/VersionStateDto.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/types/VersionStateDto.java
new file mode 100644
index 00000000..5963a2bf
--- /dev/null
+++ b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/types/VersionStateDto.java
@@ -0,0 +1,20 @@
+package org.onap.sdc.workflow.api.types;
+
+import java.util.List;
+import lombok.Data;
+import org.onap.sdc.workflow.persistence.types.WorkflowVersionState;
+
+@Data
+public class VersionStateDto {
+
+ private WorkflowVersionState name;
+ private List<WorkflowVersionState> nextStates;
+
+ public VersionStateDto() {
+ }
+
+ public VersionStateDto(WorkflowVersionState state) {
+ name = state;
+ nextStates = state.getNextStates();
+ }
+}
diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/WorkflowVersion.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/WorkflowVersion.java
index ce90e3fd..db0999b6 100644
--- a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/WorkflowVersion.java
+++ b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/WorkflowVersion.java
@@ -13,12 +13,12 @@ public class WorkflowVersion {
private String baseId;
private Date creationTime;
private Date modificationTime;
- private WorkflowVersionStatus status;
+ private WorkflowVersionState state;
public WorkflowVersion(String id) {
this.id = id;
- this.status = WorkflowVersionStatus.DRAFT;
+ this.state = WorkflowVersionState.DRAFT;
}
public WorkflowVersion() {
diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/WorkflowVersionState.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/WorkflowVersionState.java
new file mode 100644
index 00000000..9414fa17
--- /dev/null
+++ b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/WorkflowVersionState.java
@@ -0,0 +1,20 @@
+package org.onap.sdc.workflow.persistence.types;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+public enum WorkflowVersionState {
+
+ CERTIFIED, DRAFT(CERTIFIED);
+
+ private final List<WorkflowVersionState> nextStates;
+
+ WorkflowVersionState(WorkflowVersionState... nextStates) {
+ this.nextStates = Collections.unmodifiableList(Arrays.asList(nextStates));
+ }
+
+ public List<WorkflowVersionState> getNextStates() {
+ return nextStates;
+ }
+}
diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/WorkflowVersionStatus.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/WorkflowVersionStatus.java
deleted file mode 100644
index 62f5847c..00000000
--- a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/WorkflowVersionStatus.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package org.onap.sdc.workflow.persistence.types;
-
-public enum WorkflowVersionStatus {
-
- DRAFT, CERTIFIED;
-}
diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/WorkflowVersionManager.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/WorkflowVersionManager.java
index ec9db1f7..30234526 100644
--- a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/WorkflowVersionManager.java
+++ b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/WorkflowVersionManager.java
@@ -2,8 +2,9 @@ package org.onap.sdc.workflow.services;
import java.util.Collection;
import org.onap.sdc.workflow.api.types.VersionRequestDto;
-import org.onap.sdc.workflow.persistence.types.WorkflowVersion;
import org.onap.sdc.workflow.persistence.types.ArtifactEntity;
+import org.onap.sdc.workflow.persistence.types.WorkflowVersion;
+import org.onap.sdc.workflow.persistence.types.WorkflowVersionState;
import org.springframework.web.multipart.MultipartFile;
@@ -11,16 +12,19 @@ public interface WorkflowVersionManager {
Collection<WorkflowVersion> list(String workflowId);
- WorkflowVersion get(String workflowId,String versionId);
+ WorkflowVersion create(String workflowId, VersionRequestDto versionRequest);
+
+ void update(String id, WorkflowVersion version);
- WorkflowVersion create(String workflowId, VersionRequestDto versionRequest);
+ WorkflowVersion get(String workflowId, String versionId);
- void update(String id,WorkflowVersion version);
+ WorkflowVersionState getState(String workflowId, String versionId);
- void uploadArtifact(String workflowId,WorkflowVersion version, MultipartFile artifact);
+ void updateState(String workflowId, String versionId, WorkflowVersionState state);
- ArtifactEntity getArtifact(String workflowId,WorkflowVersion version);
+ ArtifactEntity getArtifact(String workflowId, String versionId);
- void deleteArtifact(String workflowId,WorkflowVersion version);
+ void deleteArtifact(String workflowId, String versionId);
+ void uploadArtifact(String workflowId, String versionId, MultipartFile artifact);
}
diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/CreateVersionException.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/CreateVersionException.java
deleted file mode 100644
index cadabb4c..00000000
--- a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/CreateVersionException.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package org.onap.sdc.workflow.services.exceptions;
-
-public class CreateVersionException extends RuntimeException {
-
- public CreateVersionException(String workflowId, String version) {
- super(String.format("Error creating new version for workflow with id %s. There is already a draft version %s",
- workflowId, version));
- }
-}
diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/VersionCreationException.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/VersionCreationException.java
new file mode 100644
index 00000000..af01c68f
--- /dev/null
+++ b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/VersionCreationException.java
@@ -0,0 +1,15 @@
+package org.onap.sdc.workflow.services.exceptions;
+
+public class VersionCreationException extends RuntimeException {
+
+ private static final String MSG = "Error creating a new version for workflow with id %s";
+ private static final String MSG_WITH_BASE_ID = MSG + " based on version %s";
+
+ public VersionCreationException(String workflowId, String baseVersionId) {
+ super(String.format(MSG_WITH_BASE_ID, workflowId, baseVersionId));
+ }
+
+ public VersionCreationException(String workflowId) {
+ super(String.format(MSG, workflowId));
+ }
+}
diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/VersionModificationException.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/VersionModificationException.java
index 35680475..64ab6103 100644
--- a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/VersionModificationException.java
+++ b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/VersionModificationException.java
@@ -2,8 +2,9 @@ package org.onap.sdc.workflow.services.exceptions;
public class VersionModificationException extends RuntimeException {
- public VersionModificationException(String workflowId, String version) {
- super(String.format("Error while trying to modify version for workflow id %s. "
- + "Version %s is CERTIFIED and can not be edited", workflowId, version));
+ public VersionModificationException(String workflowId, String versionId) {
+ super(String.format(
+ "Error while trying to modify version %s of workflow %s: Version is CERTIFIED and can not be edited",
+ versionId, workflowId));
}
}
diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/VersionStateModificationException.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/VersionStateModificationException.java
new file mode 100644
index 00000000..6c4606db
--- /dev/null
+++ b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/VersionStateModificationException.java
@@ -0,0 +1,12 @@
+package org.onap.sdc.workflow.services.exceptions;
+
+import org.onap.sdc.workflow.persistence.types.WorkflowVersionState;
+
+public class VersionStateModificationException extends RuntimeException {
+
+ public VersionStateModificationException(String workflowId, String versionId, WorkflowVersionState sourceState,
+ WorkflowVersionState targetState) {
+ super(String.format("Workflow %s, version %s: state can not be changed from %s to %s", workflowId, versionId,
+ sourceState.name(), targetState.name()));
+ }
+}
diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/WorkflowVersionManagerImpl.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/WorkflowVersionManagerImpl.java
index e934efd3..d559f025 100644
--- a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/WorkflowVersionManagerImpl.java
+++ b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/WorkflowVersionManagerImpl.java
@@ -6,20 +6,21 @@ import java.io.IOException;
import java.io.InputStream;
import java.util.Collection;
import java.util.List;
-import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;
import org.onap.sdc.workflow.api.types.VersionRequestDto;
import org.onap.sdc.workflow.persistence.ArtifactRepository;
import org.onap.sdc.workflow.persistence.types.ArtifactEntity;
-import org.onap.sdc.workflow.persistence.types.WorkflowVersionStatus;
import org.onap.sdc.workflow.persistence.types.WorkflowVersion;
+import org.onap.sdc.workflow.persistence.types.WorkflowVersionState;
import org.onap.sdc.workflow.services.WorkflowVersionManager;
-import org.onap.sdc.workflow.services.exceptions.CreateVersionException;
import org.onap.sdc.workflow.services.exceptions.EntityNotFoundException;
import org.onap.sdc.workflow.services.exceptions.InvalidArtifactException;
+import org.onap.sdc.workflow.services.exceptions.VersionCreationException;
import org.onap.sdc.workflow.services.exceptions.VersionModificationException;
+import org.onap.sdc.workflow.services.exceptions.VersionStateModificationException;
import org.onap.sdc.workflow.services.impl.mappers.VersionMapper;
+import org.onap.sdc.workflow.services.impl.mappers.VersionStateMapper;
import org.openecomp.sdc.versioning.VersioningManager;
import org.openecomp.sdc.versioning.dao.types.Version;
import org.openecomp.sdc.versioning.types.VersionCreationMethod;
@@ -31,54 +32,41 @@ import org.springframework.web.multipart.MultipartFile;
@Service("workflowVersionManager")
public class WorkflowVersionManagerImpl implements WorkflowVersionManager {
+ private static final String VERSION_NOT_EXIST_MSG = "version with id '%s' does not exist for workflow with id '%s'";
private final VersioningManager versioningManager;
private final ArtifactRepository artifactRepository;
- private VersionMapper versionMapper;
+ private final VersionMapper versionMapper;
+ private final VersionStateMapper versionStateMapper;
@Autowired
public WorkflowVersionManagerImpl(VersioningManager versioningManager, ArtifactRepository artifactRepository,
- VersionMapper versionMapper) {
+ VersionMapper versionMapper, VersionStateMapper versionStateMapper) {
this.versioningManager = versioningManager;
this.artifactRepository = artifactRepository;
this.versionMapper = versionMapper;
+ this.versionStateMapper = versionStateMapper;
}
@Override
public Collection<WorkflowVersion> list(String workflowId) {
-
- return versioningManager.list(workflowId).stream()
- .map(version -> versionMapper.versionToWorkflowVersion(version))
+ return versioningManager.list(workflowId).stream().map(versionMapper::versionToWorkflowVersion)
.collect(Collectors.toList());
}
@Override
public WorkflowVersion get(String workflowId, String versionId) {
-
- Version version = new Version(versionId);
- try {
- return this.versionMapper.versionToWorkflowVersion(versioningManager.get(workflowId, version));
- } catch (Exception e) {
- throw new EntityNotFoundException(
- String.format("version with id '%s' does not exist for workflow with id %s", version.getId(),
- workflowId));
- }
+ return versionMapper.versionToWorkflowVersion(getVersion(workflowId, versionId));
}
@Override
public WorkflowVersion create(String workflowId, VersionRequestDto versionRequest) {
-
List<Version> versions = versioningManager.list(workflowId);
if (versionRequest.getBaseVersionId() != null) {
- Version baseVersion = findVersion(versions, versionRequest.getBaseVersionId()).orElseThrow(
- () -> new EntityNotFoundException(
- String.format("version with id '%s' does not exist for workflow with id %s",
- versionRequest.getBaseVersionId(), workflowId)));
-
- if(!Certified.equals(baseVersion.getStatus())){
- throw new CreateVersionException(workflowId, versionRequest.getBaseVersionId());
- }
+ validateVersionExistAndCertified(workflowId, versions, versionRequest.getBaseVersionId());
+ } else if (!versions.isEmpty()) {
+ throw new VersionCreationException(workflowId);
}
Version version = new Version();
@@ -86,40 +74,63 @@ public class WorkflowVersionManagerImpl implements WorkflowVersionManager {
version.setBaseId(versionRequest.getBaseVersionId());
Version createdVersion = versioningManager.create(workflowId, version, VersionCreationMethod.major);
- if (versions.isEmpty()){
+ if (versions.isEmpty()) { // only for first version
artifactRepository.createStructure(workflowId, createdVersion.getId());
+ versioningManager.publish(workflowId, createdVersion, "Add workflow structure");
}
- versioningManager.publish(workflowId, createdVersion, "Initial version");
-
return versionMapper.versionToWorkflowVersion(createdVersion);
}
- private Optional<Version> findVersion(List<Version> versions, String baseVersionId) {
- return versions.stream().filter(version -> baseVersionId.equals(version.getId())).findFirst();
+ @Override
+ public void update(String workflowId, WorkflowVersion workflowVersion) {
+ Version retrievedVersion = getVersion(workflowId, workflowVersion.getId());
+ if (WorkflowVersionState.CERTIFIED
+ .equals(versionStateMapper.versionStatusToWorkflowVersionState(retrievedVersion.getStatus()))) {
+ throw new VersionModificationException(workflowId, workflowVersion.getId());
+ }
+
+ Version version = versionMapper.workflowVersionToVersion(workflowVersion);
+ version.setName(retrievedVersion.getName());
+ version.setStatus(retrievedVersion.getStatus());
+
+ versioningManager.updateVersion(workflowId, version);
+ versioningManager.publish(workflowId, version, "Update version");
}
@Override
- public void update(String id, WorkflowVersion version) {
-
- Version versionToUpdate = mapVersionInfo(id, version);
- versioningManager.updateVersion(id, versionToUpdate);
- versioningManager.publish(id, versionToUpdate, "Update version");
+ public WorkflowVersionState getState(String workflowId, String versionId) {
+ return versionStateMapper.versionStatusToWorkflowVersionState(getVersion(workflowId, versionId).getStatus());
}
+ @Override
+ public void updateState(String workflowId, String versionId, WorkflowVersionState state) {
+ Version retrievedVersion = getVersion(workflowId, versionId);
+ WorkflowVersionState retrievedState =
+ versionStateMapper.versionStatusToWorkflowVersionState(retrievedVersion.getStatus());
+ if (WorkflowVersionState.CERTIFIED.equals(retrievedState) || retrievedState.equals(state)) {
+ throw new VersionStateModificationException(workflowId, versionId, retrievedState, state);
+ }
+
+ retrievedVersion.setStatus(versionStateMapper.workflowVersionStateToVersionStatus(state));
+ versioningManager.updateVersion(workflowId, retrievedVersion);
+ versioningManager.publish(workflowId, retrievedVersion,
+ String.format("Update version state from %s to %s", retrievedState.name(), state.name()));
+ }
@Override
- public void uploadArtifact(String workflowId, WorkflowVersion version, MultipartFile artifact) {
- WorkflowVersion retrievedVersion = get(workflowId, version.getId());
- if (WorkflowVersionStatus.CERTIFIED.equals(retrievedVersion.getStatus())) {
- throw new VersionModificationException(workflowId, version.getId());
+ public void uploadArtifact(String workflowId, String versionId, MultipartFile artifact) {
+ Version retrievedVersion = getVersion(workflowId, versionId);
+ if (WorkflowVersionState.CERTIFIED
+ .equals(versionStateMapper.versionStatusToWorkflowVersionState(retrievedVersion.getStatus()))) {
+ throw new VersionModificationException(workflowId, versionId);
}
try (InputStream artifactData = artifact.getInputStream()) {
ArtifactEntity artifactEntity =
new ArtifactEntity(StringUtils.cleanPath(artifact.getOriginalFilename()), artifactData);
- artifactRepository.update(workflowId, version.getId(), artifactEntity);
- versioningManager.publish(workflowId, versionMapper.workflowVersionToVersion(version), "Update Artifact");
+ artifactRepository.update(workflowId, versionId, artifactEntity);
+ versioningManager.publish(workflowId, new Version(versionId), "Update Artifact");
} catch (IOException e) {
throw new InvalidArtifactException(e.getMessage());
@@ -127,38 +138,49 @@ public class WorkflowVersionManagerImpl implements WorkflowVersionManager {
}
@Override
- public ArtifactEntity getArtifact(String workflowId, WorkflowVersion version) {
- WorkflowVersion retrievedVersion = get(workflowId, version.getId());
- Optional<ArtifactEntity> artifactOptional = artifactRepository.get(workflowId, retrievedVersion.getId());
+ public ArtifactEntity getArtifact(String workflowId, String versionId) {
+ getVersion(workflowId, versionId);
+ Optional<ArtifactEntity> artifactOptional = artifactRepository.get(workflowId, versionId);
if (!artifactOptional.isPresent()) {
throw new EntityNotFoundException(
- String.format("Artifact for workflow id %S version id %S was not found", workflowId,
- version.getId()));
+ String.format("Artifact for workflow id %S version id %S was not found", workflowId, versionId));
}
return artifactOptional.get();
}
@Override
- public void deleteArtifact(String workflowId, WorkflowVersion version) {
- WorkflowVersion retrievedVersion = get(workflowId, version.getId());
- if (WorkflowVersionStatus.CERTIFIED.equals(retrievedVersion.getStatus())) {
- throw new VersionModificationException(workflowId, version.getId());
+ public void deleteArtifact(String workflowId, String versionId) {
+ WorkflowVersion retrievedVersion = get(workflowId, versionId);
+ if (WorkflowVersionState.CERTIFIED.equals(retrievedVersion.getState())) {
+ throw new VersionModificationException(workflowId, versionId);
}
- artifactRepository.delete(workflowId, version.getId());
+ artifactRepository.delete(workflowId, versionId);
+ versioningManager.publish(workflowId, new Version(versionId), "Delete Artifact");
}
- private boolean isFirstVersionCreation(String id, Version createdVersion) {
- return Objects.isNull(createdVersion.getBaseId()) && versioningManager.list(id).size() == 1;
- }
+ private void validateVersionExistAndCertified(String workflowId, List<Version> versions, String versionId) {
+ Version baseVersion = findVersion(versions, versionId).orElseThrow(
+ () -> new EntityNotFoundException(String.format(VERSION_NOT_EXIST_MSG, versionId, workflowId)));
- protected Version mapVersionInfo(String id, WorkflowVersion workflowVersion) {
- WorkflowVersion retrievedVersion = get(id, workflowVersion.getId());
- Version version = new Version(workflowVersion.getId());
- version.setBaseId(retrievedVersion.getBaseId());
- version.setName(retrievedVersion.getName());
- return version;
+ if (!Certified.equals(baseVersion.getStatus())) {
+ throw new VersionCreationException(workflowId, versionId);
+ }
}
+ private Version getVersion(String workflowId, String versionId) {
+ try {
+ Version version = versioningManager.get(workflowId, new Version(versionId));
+ if (version == null) {
+ throw new EntityNotFoundException(String.format(VERSION_NOT_EXIST_MSG, versionId, workflowId));
+ }
+ return version;
+ } catch (Exception e) {
+ throw new EntityNotFoundException(String.format(VERSION_NOT_EXIST_MSG, versionId, workflowId));
+ }
+ }
+ private static Optional<Version> findVersion(List<Version> versions, String versionId) {
+ return versions.stream().filter(version -> versionId.equals(version.getId())).findFirst();
+ }
}
diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/VersionMapper.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/VersionMapper.java
index 6e0c3d6d..bcf89661 100644
--- a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/VersionMapper.java
+++ b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/VersionMapper.java
@@ -2,13 +2,15 @@ package org.onap.sdc.workflow.services.impl.mappers;
import org.mapstruct.InheritInverseConfiguration;
import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
import org.onap.sdc.workflow.persistence.types.WorkflowVersion;
import org.openecomp.sdc.versioning.dao.types.Version;
-@Mapper(componentModel = "spring", uses = VersionStatusMapper.class)
+@Mapper(componentModel = "spring", uses = VersionStateMapper.class)
public interface VersionMapper {
+ @Mapping(source = "status", target = "state")
WorkflowVersion versionToWorkflowVersion(Version version);
@InheritInverseConfiguration
diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/VersionStatusMapper.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/VersionStateMapper.java
index 1cdfd69e..0c2f5391 100644
--- a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/VersionStatusMapper.java
+++ b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/VersionStateMapper.java
@@ -4,19 +4,19 @@ import org.mapstruct.InheritInverseConfiguration;
import org.mapstruct.Mapper;
import org.mapstruct.ValueMapping;
import org.mapstruct.ValueMappings;
-import org.onap.sdc.workflow.persistence.types.WorkflowVersionStatus;
+import org.onap.sdc.workflow.persistence.types.WorkflowVersionState;
import org.openecomp.sdc.versioning.dao.types.VersionStatus;
@Mapper(componentModel = "spring")
-public interface VersionStatusMapper {
+public interface VersionStateMapper {
@ValueMappings({@ValueMapping(source = "Certified", target = "CERTIFIED"),
@ValueMapping(source = "Draft", target = "DRAFT"),
@ValueMapping(source = "<ANY_REMAINING>", target = "DRAFT")})
- WorkflowVersionStatus versionStatusToWorkflowVersionStatus(VersionStatus status);
+ WorkflowVersionState versionStatusToWorkflowVersionState(VersionStatus status);
@InheritInverseConfiguration
- VersionStatus workflowVersionStatusToVersionStatus(WorkflowVersionStatus status);
+ VersionStatus workflowVersionStateToVersionStatus(WorkflowVersionState status);
}
diff --git a/workflow-designer-be/src/test/java/org/onap/sdc/workflow/api/WorkflowControllerTest.java b/workflow-designer-be/src/test/java/org/onap/sdc/workflow/api/WorkflowControllerTest.java
index d23d3f90..69b25b01 100644
--- a/workflow-designer-be/src/test/java/org/onap/sdc/workflow/api/WorkflowControllerTest.java
+++ b/workflow-designer-be/src/test/java/org/onap/sdc/workflow/api/WorkflowControllerTest.java
@@ -8,6 +8,7 @@ import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.onap.sdc.workflow.TestUtil.createWorkflow;
+import static org.onap.sdc.workflow.api.RestConstants.USER_ID_HEADER_PARAM;
import static org.springframework.http.MediaType.APPLICATION_JSON;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
@@ -25,7 +26,6 @@ import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.onap.sdc.workflow.RestPath;
-import org.onap.sdc.workflow.api.impl.WorkflowControllerImpl;
import org.onap.sdc.workflow.persistence.types.Workflow;
import org.onap.sdc.workflow.services.WorkflowManager;
import org.openecomp.sdc.versioning.types.Item;
@@ -42,13 +42,12 @@ public class WorkflowControllerTest {
"Missing request header '%s' for method parameter of type String";
private static final String USER_ID = "userId";
private static final Gson GSON = new Gson();
- public static final String USER_ID_HEADER = "USER_ID";
private MockMvc mockMvc;
@InjectMocks
- private WorkflowControllerImpl workflowController;
+ private WorkflowController workflowController;
@Mock
private WorkflowManager workflowManagerMock;
@@ -73,7 +72,7 @@ public class WorkflowControllerTest {
Workflow workflowMock = createWorkflow(1, true);
doReturn(workflowMock).when(workflowManagerMock).get(any(Workflow.class));
mockMvc.perform(
- get(RestPath.getWorkflowPath(workflowMock.getId())).header(RestConstants.USER_ID_HEADER_PARAM, USER_ID)
+ get(RestPath.getWorkflowPath(workflowMock.getId())).header(USER_ID_HEADER_PARAM, USER_ID)
.contentType(APPLICATION_JSON)).andDo(print())
.andExpect(status().isOk()).andExpect(jsonPath("$.id", is(workflowMock.getId())))
.andExpect(jsonPath("$.name", is(workflowMock.getName())));
@@ -84,7 +83,7 @@ public class WorkflowControllerTest {
MockHttpServletResponse response =
mockMvc.perform(get(RestPath.getWorkflowsPath()).contentType(APPLICATION_JSON)).andDo(print())
.andExpect(status().isBadRequest()).andExpect(status().is(400)).andReturn().getResponse();
- assertEquals(String.format(MISSING_REQUEST_HEADER_ERRROR_FORMAT, USER_ID_HEADER), response.getErrorMessage());
+ assertEquals(String.format(MISSING_REQUEST_HEADER_ERRROR_FORMAT, USER_ID_HEADER_PARAM), response.getErrorMessage());
}
@Test
@@ -93,7 +92,7 @@ public class WorkflowControllerTest {
List<Workflow> workflowMocks = createWorkflows(numOfWorkflows);
doReturn(workflowMocks).when(workflowManagerMock).list();
mockMvc.perform(
- get(RestPath.getWorkflowsPath()).header(RestConstants.USER_ID_HEADER_PARAM, USER_ID).contentType(APPLICATION_JSON))
+ get(RestPath.getWorkflowsPath()).header(USER_ID_HEADER_PARAM, USER_ID).contentType(APPLICATION_JSON))
.andDo(print()).andExpect(status().isOk()).andExpect(jsonPath("$.results", hasSize(numOfWorkflows)));
}
@@ -103,7 +102,7 @@ public class WorkflowControllerTest {
item.setId("abc");
Workflow reqWorkflow = createWorkflow(1, false);
mockMvc.perform(
- post(RestPath.getWorkflowsPath()).header(RestConstants.USER_ID_HEADER_PARAM, USER_ID).contentType(APPLICATION_JSON)
+ post(RestPath.getWorkflowsPath()).header(USER_ID_HEADER_PARAM, USER_ID).contentType(APPLICATION_JSON)
.content(GSON.toJson(reqWorkflow))).andDo(print()).andExpect(status().isCreated())
.andExpect(MockMvcResultMatchers.content().contentType(MediaType.APPLICATION_JSON_UTF8_VALUE));
verify(workflowManagerMock, times(1)).create(reqWorkflow);
diff --git a/workflow-designer-be/src/test/java/org/onap/sdc/workflow/api/WorkflowVersionControllerTest.java b/workflow-designer-be/src/test/java/org/onap/sdc/workflow/api/WorkflowVersionControllerTest.java
index d38261b7..75b132ad 100644
--- a/workflow-designer-be/src/test/java/org/onap/sdc/workflow/api/WorkflowVersionControllerTest.java
+++ b/workflow-designer-be/src/test/java/org/onap/sdc/workflow/api/WorkflowVersionControllerTest.java
@@ -25,7 +25,6 @@ import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.onap.sdc.workflow.RestPath;
-import org.onap.sdc.workflow.api.impl.WorkflowVersionControllerImpl;
import org.onap.sdc.workflow.api.types.VersionRequestDto;
import org.onap.sdc.workflow.persistence.types.WorkflowVersion;
import org.onap.sdc.workflow.services.WorkflowVersionManager;
@@ -52,7 +51,7 @@ public class WorkflowVersionControllerTest {
private WorkflowVersionManager workflowVersionManagerMock;
@InjectMocks
- private WorkflowVersionControllerImpl workflowVersionController;
+ private WorkflowVersionController workflowVersionController;
@Before
public void setUp() {
diff --git a/workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/impl/WorkflowManagerTest.java b/workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/impl/WorkflowManagerImplTest.java
index 5173b063..3e228759 100644
--- a/workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/impl/WorkflowManagerTest.java
+++ b/workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/impl/WorkflowManagerImplTest.java
@@ -24,7 +24,7 @@ import org.openecomp.sdc.versioning.types.ItemStatus;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
-public class WorkflowManagerTest {
+public class WorkflowManagerImplTest {
private static final String ITEM1_ID = "workflowId1";
private static final String WORKFLOW_TYPE = "WORKFLOW";
diff --git a/workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/impl/WorkflowVersionManagerImplTest.java b/workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/impl/WorkflowVersionManagerImplTest.java
new file mode 100644
index 00000000..ae69b280
--- /dev/null
+++ b/workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/impl/WorkflowVersionManagerImplTest.java
@@ -0,0 +1,258 @@
+package org.onap.sdc.workflow.services.impl;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.ArgumentMatchers.argThat;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.onap.sdc.workflow.persistence.types.WorkflowVersionState.CERTIFIED;
+import static org.onap.sdc.workflow.persistence.types.WorkflowVersionState.DRAFT;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+import java.util.Optional;
+import org.apache.commons.io.IOUtils;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.ArgumentMatcher;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+import org.onap.sdc.workflow.api.types.VersionRequestDto;
+import org.onap.sdc.workflow.persistence.ArtifactRepository;
+import org.onap.sdc.workflow.persistence.types.ArtifactEntity;
+import org.onap.sdc.workflow.persistence.types.WorkflowVersion;
+import org.onap.sdc.workflow.persistence.types.WorkflowVersionState;
+import org.onap.sdc.workflow.services.exceptions.EntityNotFoundException;
+import org.onap.sdc.workflow.services.exceptions.VersionCreationException;
+import org.onap.sdc.workflow.services.exceptions.VersionStateModificationException;
+import org.onap.sdc.workflow.services.impl.mappers.VersionMapper;
+import org.onap.sdc.workflow.services.impl.mappers.VersionStateMapper;
+import org.openecomp.sdc.versioning.VersioningManager;
+import org.openecomp.sdc.versioning.dao.types.Version;
+import org.openecomp.sdc.versioning.dao.types.VersionStatus;
+import org.openecomp.sdc.versioning.types.VersionCreationMethod;
+import org.springframework.mock.web.MockMultipartFile;
+
+@RunWith(MockitoJUnitRunner.class)
+public class WorkflowVersionManagerImplTest {
+
+ private static final String ITEM1_ID = "item_id_1";
+ private static final String VERSION1_ID = "version_id_1";
+ private static final String VERSION2_ID = "version_id_2";
+
+ @Mock
+ private VersioningManager versioningManagerMock;
+ @Mock
+ private ArtifactRepository artifactRepositoryMock;
+ @Mock
+ private VersionMapper versionMapperMock;
+ @Mock
+ private VersionStateMapper versionStateMapperMock;
+ @InjectMocks
+ private WorkflowVersionManagerImpl workflowVersionManager;
+
+ @Test(expected = EntityNotFoundException.class)
+ public void shouldThrowExceptionWhenVersionDontExist() {
+ Version nonExistingVersion = new Version(VERSION1_ID);
+ doThrow(new RuntimeException()).when(versioningManagerMock).get(ITEM1_ID, nonExistingVersion);
+ workflowVersionManager.get(ITEM1_ID, VERSION1_ID);
+ }
+
+ @Test
+ public void shouldReturnWorkflowVersionWhenExist() {
+ Version version = new Version(VERSION1_ID);
+ doReturn(version).when(versioningManagerMock).get(ITEM1_ID, version);
+ workflowVersionManager.get(ITEM1_ID, VERSION1_ID);
+ verify(versioningManagerMock).get(ITEM1_ID, version);
+ }
+
+ @Test
+ public void shouldReturnWorkflowVersionList() {
+ List<Version> versionList = Arrays.asList(new Version(VERSION1_ID), new Version(VERSION2_ID));
+ versionList.forEach(version -> {
+ version.setBaseId("baseVersionId");
+ version.setDescription("Version description");
+ version.setName("name");
+ version.setCreationTime(new Date());
+ version.setModificationTime(new Date());
+ });
+ doReturn(versionList).when(versioningManagerMock).list(ITEM1_ID);
+ workflowVersionManager.list(ITEM1_ID);
+ verify(versioningManagerMock).list(ITEM1_ID);
+ verify(versionMapperMock, times(2)).versionToWorkflowVersion(any(Version.class));
+ }
+
+ @Test
+ public void shouldUpdateWorkflowVersion() {
+ Version retrievedVersion = new Version(VERSION1_ID);
+ retrievedVersion.setName("1.0");
+ retrievedVersion.setDescription("WorkflowVersion description");
+ retrievedVersion.setStatus(VersionStatus.Draft);
+ doReturn(retrievedVersion).when(versioningManagerMock).get(eq(ITEM1_ID), eqVersion(VERSION1_ID));
+ doReturn(DRAFT).when(versionStateMapperMock).versionStatusToWorkflowVersionState(retrievedVersion.getStatus());
+
+ WorkflowVersion inputVersion = new WorkflowVersion(VERSION1_ID);
+ inputVersion.setName("1.0");
+ inputVersion.setDescription("WorkflowVersion description updated");
+
+ Version mappedInputVersion = new Version(VERSION1_ID);
+ mappedInputVersion.setName("1.0");
+ mappedInputVersion.setDescription("WorkflowVersion description updated");
+ doReturn(mappedInputVersion).when(versionMapperMock).workflowVersionToVersion(inputVersion);
+
+ ArgumentCaptor<Version> versionArgCaptor = ArgumentCaptor.forClass(Version.class);
+ workflowVersionManager.update(ITEM1_ID, inputVersion);
+
+ verify(versioningManagerMock).updateVersion(eq(ITEM1_ID), versionArgCaptor.capture());
+ Version captorVersion = versionArgCaptor.getValue();
+ assertEquals("1.0", captorVersion.getName());
+ assertEquals("WorkflowVersion description updated", captorVersion.getDescription());
+ assertEquals(VersionStatus.Draft, captorVersion.getStatus());
+ verify(versioningManagerMock).publish(ITEM1_ID, mappedInputVersion, "Update version");
+ }
+
+ @Test
+ public void shouldCreateWorkflowVersion() {
+ Version version = new Version(VERSION1_ID);
+ version.setDescription("version desc");
+ doReturn(version).when(versioningManagerMock).create(ITEM1_ID, version, VersionCreationMethod.major);
+ VersionRequestDto workflowVersion = new VersionRequestDto();
+ workflowVersion.setDescription("version desc");
+ workflowVersionManager.create(ITEM1_ID, workflowVersion);
+ verify(versioningManagerMock).create(ITEM1_ID, version, VersionCreationMethod.major);
+
+ }
+
+ @Test(expected = VersionCreationException.class)
+ public void shouldTrowExceptionWhenDraftVersionExists() {
+ VersionRequestDto versionRequestDto = new VersionRequestDto();
+ versionRequestDto.setBaseVersionId(VERSION2_ID);
+
+ Version baseVersion = new Version(VERSION2_ID);
+ baseVersion.setStatus(VersionStatus.Draft);
+ List<Version> versions = Collections.singletonList(baseVersion);
+ doReturn(versions).when(versioningManagerMock).list(ITEM1_ID);
+
+ workflowVersionManager.create(ITEM1_ID, versionRequestDto);
+ }
+
+ @Test(expected = EntityNotFoundException.class)
+ public void getStateOfNonExisting() {
+ doThrow(new RuntimeException()).when(versioningManagerMock).get(eq(ITEM1_ID), eqVersion(VERSION1_ID));
+ workflowVersionManager.getState(ITEM1_ID, VERSION1_ID);
+ }
+
+ @Test
+ public void getState() {
+ Version version = new Version(VERSION1_ID);
+ version.setStatus(VersionStatus.Certified);
+ doReturn(version).when(versioningManagerMock).get(eq(ITEM1_ID), eqVersion(VERSION1_ID));
+ doReturn(CERTIFIED).when(versionStateMapperMock).versionStatusToWorkflowVersionState(version.getStatus());
+
+ WorkflowVersionState state = workflowVersionManager.getState(ITEM1_ID, VERSION1_ID);
+ assertEquals(CERTIFIED, state);
+ }
+
+ @Test(expected = EntityNotFoundException.class)
+ public void updateStateOfNonExisting() {
+ doThrow(new RuntimeException()).when(versioningManagerMock).get(eq(ITEM1_ID), eqVersion(VERSION1_ID));
+ workflowVersionManager.updateState(ITEM1_ID, VERSION1_ID, CERTIFIED);
+ }
+
+ @Test(expected = VersionStateModificationException.class)
+ public void updateStateToCurrentState() {
+ Version version = new Version(VERSION1_ID);
+ version.setStatus(VersionStatus.Draft);
+ doReturn(version).when(versioningManagerMock).get(eq(ITEM1_ID), eqVersion(VERSION1_ID));
+ doReturn(DRAFT).when(versionStateMapperMock).versionStatusToWorkflowVersionState(version.getStatus());
+
+ workflowVersionManager.updateState(ITEM1_ID, VERSION1_ID, DRAFT);
+ }
+
+ @Test(expected = VersionStateModificationException.class)
+ public void updateStateWhenCertified() {
+ Version version = new Version(VERSION1_ID);
+ version.setStatus(VersionStatus.Certified);
+ doReturn(version).when(versioningManagerMock).get(eq(ITEM1_ID), eqVersion(VERSION1_ID));
+ doReturn(CERTIFIED).when(versionStateMapperMock).versionStatusToWorkflowVersionState(version.getStatus());
+
+ workflowVersionManager.updateState(ITEM1_ID, VERSION1_ID, CERTIFIED);
+ }
+
+ @Test
+ public void updateState() {
+ Version retrievedVersion = new Version(VERSION1_ID);
+ retrievedVersion.setStatus(VersionStatus.Draft);
+ doReturn(retrievedVersion).when(versioningManagerMock).get(eq(ITEM1_ID), eqVersion(VERSION1_ID));
+ doReturn(DRAFT).when(versionStateMapperMock).versionStatusToWorkflowVersionState(VersionStatus.Draft);
+ doReturn(VersionStatus.Certified).when(versionStateMapperMock).workflowVersionStateToVersionStatus(CERTIFIED);
+
+ ArgumentCaptor<Version> versionArgCaptor = ArgumentCaptor.forClass(Version.class);
+ workflowVersionManager.updateState(ITEM1_ID, VERSION1_ID, CERTIFIED);
+
+ verify(versioningManagerMock).updateVersion(eq(ITEM1_ID), versionArgCaptor.capture());
+ assertEquals(VersionStatus.Certified, versionArgCaptor.getValue().getStatus());
+ verify(versioningManagerMock)
+ .publish(eq(ITEM1_ID), eqVersion(VERSION1_ID), eq("Update version state from DRAFT to CERTIFIED"));
+ }
+
+ @Test
+ public void shouldUploadArtifact() {
+ Version version = new Version(VERSION1_ID);
+ version.setStatus(VersionStatus.Draft);
+ doReturn(version).when(versioningManagerMock).get(eq(ITEM1_ID), eqVersion(VERSION1_ID));
+ doReturn(DRAFT).when(versionStateMapperMock).versionStatusToWorkflowVersionState(version.getStatus());
+
+ MockMultipartFile mockFile = new MockMultipartFile("data", "filename.txt", "text/plain", "some xml".getBytes());
+ workflowVersionManager.uploadArtifact(ITEM1_ID, VERSION1_ID, mockFile);
+
+ verify(artifactRepositoryMock).update(eq(ITEM1_ID), eq(VERSION1_ID), any(ArtifactEntity.class));
+ }
+
+ @Test(expected = EntityNotFoundException.class)
+ public void shouldThrowExceptionWhenArtifactNotFound() {
+ doReturn(new Version(VERSION1_ID)).when(versioningManagerMock).get(eq(ITEM1_ID), eqVersion(VERSION1_ID));
+
+ doReturn(Optional.empty()).when(artifactRepositoryMock).get(ITEM1_ID, VERSION1_ID);
+ workflowVersionManager.getArtifact(ITEM1_ID, VERSION1_ID);
+ }
+
+ @Test
+ public void shouldReturnArtifact() throws IOException {
+ doReturn(new Version(VERSION1_ID)).when(versioningManagerMock).get(eq(ITEM1_ID), eqVersion(VERSION1_ID));
+
+ InputStream inputStreamMock = IOUtils.toInputStream("some test data for my input stream", "UTF-8");
+ ArtifactEntity artifactMock = new ArtifactEntity("fileName.txt", inputStreamMock);
+ doReturn(Optional.of(artifactMock)).when(artifactRepositoryMock).get(ITEM1_ID, VERSION1_ID);
+ ArtifactEntity returnedArtifact = workflowVersionManager.getArtifact(ITEM1_ID, VERSION1_ID);
+ assertEquals(artifactMock, returnedArtifact);
+ }
+
+ private static Version eqVersion(String versionId) {
+ return argThat(new EqVersion(versionId));
+ }
+
+ private static class EqVersion implements ArgumentMatcher<Version> {
+
+ private final String versionId;
+
+ EqVersion(String versionId) {
+ this.versionId = versionId;
+ }
+
+ @Override
+ public boolean matches(Version version) {
+ return versionId.equals(version.getId());
+ }
+ }
+
+}
diff --git a/workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/impl/WorkflowVersionManagerTest.java b/workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/impl/WorkflowVersionManagerTest.java
deleted file mode 100644
index a82b5f3d..00000000
--- a/workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/impl/WorkflowVersionManagerTest.java
+++ /dev/null
@@ -1,168 +0,0 @@
-package org.onap.sdc.workflow.services.impl;
-
-import static org.junit.Assert.assertEquals;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.onap.sdc.workflow.persistence.types.WorkflowVersionStatus.*;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
-import java.util.Optional;
-import org.apache.commons.io.IOUtils;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.mockito.junit.MockitoJUnitRunner;
-import org.onap.sdc.workflow.api.types.VersionRequestDto;
-import org.onap.sdc.workflow.persistence.ArtifactRepository;
-import org.onap.sdc.workflow.persistence.types.ArtifactEntity;
-import org.onap.sdc.workflow.persistence.types.WorkflowVersion;
-import org.onap.sdc.workflow.persistence.types.WorkflowVersionStatus;
-import org.onap.sdc.workflow.services.exceptions.CreateVersionException;
-import org.onap.sdc.workflow.services.exceptions.EntityNotFoundException;
-import org.onap.sdc.workflow.services.impl.mappers.VersionMapper;
-import org.openecomp.sdc.versioning.VersioningManager;
-import org.openecomp.sdc.versioning.dao.types.Version;
-import org.openecomp.sdc.versioning.dao.types.VersionStatus;
-import org.openecomp.sdc.versioning.types.VersionCreationMethod;
-import org.springframework.mock.web.MockMultipartFile;
-
-@RunWith(MockitoJUnitRunner.class)
-public class WorkflowVersionManagerTest {
-
-
- private static final String ITEM1_ID = "item_id_1";
- private static final String VERSION1_ID = "version_id_1";
- private static final String VERSION2_ID = "version_id_2";
-
- @Mock
- private VersionMapper versionMapperMock;
-
- @Mock
- private VersioningManager versioningManagerMock;
-
- @Mock
- private ArtifactRepository artifactRepositoryMock;
-
- @Spy
- @InjectMocks
- private WorkflowVersionManagerImpl workflowVersionManager;
-
-
- @Test(expected = EntityNotFoundException.class)
- public void shouldThrowExceptionWhenVersionDontExist(){
- Version nonExistingVersion = new Version(VERSION1_ID);
- doThrow(new RuntimeException()).when(versioningManagerMock).get(ITEM1_ID, nonExistingVersion);
- workflowVersionManager.get(ITEM1_ID, VERSION1_ID);
- }
-
- @Test
- public void shouldReturnWorkflowVersionWhenExist(){
- Version version = new Version(VERSION1_ID);
- doReturn(version).when(versioningManagerMock).get(ITEM1_ID,version);
- workflowVersionManager.get(ITEM1_ID,VERSION1_ID);
- verify(versioningManagerMock).get(ITEM1_ID,version);
- }
-
- @Test
- public void shouldReturnWorkflowVersionList(){
- List<Version> versionList =
- Arrays.asList(new Version(VERSION1_ID), new Version(VERSION2_ID));
- versionList.forEach(version -> {
- version.setBaseId("baseVersionId");
- version.setDescription("Version description");
- version.setName("name");
- version.setCreationTime(new Date());
- version.setModificationTime(new Date());
- });
- doReturn(versionList).when(versioningManagerMock).list(ITEM1_ID);
- workflowVersionManager.list(ITEM1_ID);
- verify(versioningManagerMock).list(ITEM1_ID);
- verify(versionMapperMock ,times(2)).versionToWorkflowVersion(any(Version.class));
- }
-
- @Test
- public void shouldUpdateWorkflowVersion(){
- Version version = new Version(VERSION1_ID);
- version.setName("1.0");
- version.setDescription("WorkflowVersion description");
- WorkflowVersion workflowVersion = new WorkflowVersion(VERSION1_ID);
- workflowVersion.setName("1.0");
- workflowVersion.setDescription("WorkflowVersion description");
- doReturn(version).when(workflowVersionManager).mapVersionInfo(ITEM1_ID,workflowVersion);
- workflowVersionManager.update(ITEM1_ID,workflowVersion);
- verify(versioningManagerMock).updateVersion(ITEM1_ID,version);
- }
-
- @Test
- public void shouldCreateWorkflowVersion(){
- Version version = new Version(VERSION1_ID);
- version.setDescription("version desc");
- doReturn(version).when(versioningManagerMock).create(ITEM1_ID,version, VersionCreationMethod.major);
- VersionRequestDto workflowVersion = new VersionRequestDto();
- workflowVersion.setDescription("version desc");
- workflowVersionManager.create(ITEM1_ID,workflowVersion);
- verify(versioningManagerMock).create(ITEM1_ID,version, VersionCreationMethod.major);
-
- }
-
- @Test(expected = CreateVersionException.class)
- public void shouldTrowExceptionWhenDraftVersionExists(){
- VersionRequestDto versionRequestDto = new VersionRequestDto();
- versionRequestDto.setBaseVersionId(VERSION2_ID);
-
- Version baseVersion = new Version(VERSION2_ID);
- baseVersion.setStatus(VersionStatus.Draft);
- List<Version> versions = Collections.singletonList(baseVersion);
- doReturn(versions).when(versioningManagerMock).list(ITEM1_ID);
-
- workflowVersionManager.create(ITEM1_ID,versionRequestDto);
- }
-
- @Test
- public void shouldUploadArtifact() throws IOException {
-
- String mockFileName = "filename.txt";
- MockMultipartFile mockFile =
- new MockMultipartFile("data", mockFileName, "text/plain", "some xml".getBytes());
- WorkflowVersion version = new WorkflowVersion(VERSION1_ID);
- version.setStatus(WorkflowVersionStatus.DRAFT);
- doReturn(version).when(workflowVersionManager).get(ITEM1_ID,VERSION1_ID);
- workflowVersionManager.uploadArtifact(ITEM1_ID,version,mockFile);
-
- verify(artifactRepositoryMock).update(eq(ITEM1_ID),eq(VERSION1_ID),any(ArtifactEntity.class));
- }
-
- @Test(expected = EntityNotFoundException.class)
- public void shouldThrowExceptionWhenArtifactNotFound(){
- WorkflowVersion version = new WorkflowVersion(VERSION1_ID);
- version.setStatus(DRAFT);
- doReturn(version).when(workflowVersionManager).get(ITEM1_ID,VERSION1_ID);
- doReturn(Optional.empty()).when(artifactRepositoryMock).get(ITEM1_ID,VERSION1_ID);
- workflowVersionManager.getArtifact(ITEM1_ID,version);
- }
-
- @Test
- public void shouldReturnArtifact() throws IOException {
- WorkflowVersion version = new WorkflowVersion(VERSION1_ID);
- doReturn(version).when(workflowVersionManager).get(ITEM1_ID,VERSION1_ID);
-
- InputStream inputStreamMock =
- IOUtils.toInputStream("some test data for my input stream", "UTF-8");
- ArtifactEntity artifactMock = new ArtifactEntity("fileName.txt",inputStreamMock);
- doReturn(Optional.of(artifactMock)).when(artifactRepositoryMock).get(ITEM1_ID,VERSION1_ID);
- ArtifactEntity returnedArtifact = workflowVersionManager.getArtifact(ITEM1_ID, new WorkflowVersion(VERSION1_ID));
- assertEquals(artifactMock,returnedArtifact);
- }
-
-}
diff --git a/workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/impl/mappers/VersionMapperTest.java b/workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/impl/mappers/VersionMapperTest.java
index f9d65bd3..b778de47 100644
--- a/workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/impl/mappers/VersionMapperTest.java
+++ b/workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/impl/mappers/VersionMapperTest.java
@@ -6,7 +6,7 @@ import java.util.Date;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.onap.sdc.workflow.persistence.types.WorkflowVersion;
-import org.onap.sdc.workflow.persistence.types.WorkflowVersionStatus;
+import org.onap.sdc.workflow.persistence.types.WorkflowVersionState;
import org.openecomp.sdc.versioning.dao.types.Version;
import org.openecomp.sdc.versioning.dao.types.VersionStatus;
import org.springframework.beans.factory.annotation.Autowired;
@@ -20,7 +20,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
public class VersionMapperTest {
@Configuration
- @ComponentScan(basePackageClasses = {VersionMapper.class, VersionStatusMapper.class})
+ @ComponentScan(basePackageClasses = {VersionMapper.class, VersionStateMapper.class})
public static class VersionMapperSpringTestConfig { }
@Autowired
@@ -73,7 +73,7 @@ public class VersionMapperTest {
workflowVersion.setCreationTime(new Date());
workflowVersion.setModificationTime(new Date());
workflowVersion.setDescription("version_description");
- workflowVersion.setStatus(WorkflowVersionStatus.CERTIFIED);
+ workflowVersion.setState(WorkflowVersionState.CERTIFIED);
return workflowVersion;
}
diff --git a/workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/impl/mappers/VersionStatusMapperTest.java b/workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/impl/mappers/VersionStateMapperTest.java
index 0d4b6cd5..59d16289 100644
--- a/workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/impl/mappers/VersionStatusMapperTest.java
+++ b/workflow-designer-be/src/test/java/org/onap/sdc/workflow/services/impl/mappers/VersionStateMapperTest.java
@@ -4,7 +4,7 @@ import static org.junit.Assert.assertEquals;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.onap.sdc.workflow.persistence.types.WorkflowVersionStatus;
+import org.onap.sdc.workflow.persistence.types.WorkflowVersionState;
import org.openecomp.sdc.versioning.dao.types.VersionStatus;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.ComponentScan;
@@ -12,64 +12,64 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-@ContextConfiguration(classes = VersionStatusMapperTest.VersionStatusMapperSpringTestConfig.class)
+@ContextConfiguration(classes = VersionStateMapperTest.VersionStatusMapperSpringTestConfig.class)
@RunWith(SpringJUnit4ClassRunner.class)
-public class VersionStatusMapperTest {
+public class VersionStateMapperTest {
@Configuration
- @ComponentScan(basePackageClasses = {VersionStatusMapper.class})
+ @ComponentScan(basePackageClasses = {VersionStateMapper.class})
public static class VersionStatusMapperSpringTestConfig { }
@Autowired
- VersionStatusMapper versionStatusMapper;
+ VersionStateMapper versionStateMapper;
@Test
public void shouldMapCertifiedVersionStatusToWorkflowVersionStatus() {
- WorkflowVersionStatus mappedVersionStatus =
- versionStatusMapper.versionStatusToWorkflowVersionStatus(VersionStatus.Certified);
- assertEquals(WorkflowVersionStatus.CERTIFIED, mappedVersionStatus);
+ WorkflowVersionState mappedVersionStatus =
+ versionStateMapper.versionStatusToWorkflowVersionState(VersionStatus.Certified);
+ assertEquals(WorkflowVersionState.CERTIFIED, mappedVersionStatus);
}
@Test
public void shouldMapDraftVersionStatusToWorkflowVersionStatus() {
- WorkflowVersionStatus mappedVersionStatus =
- versionStatusMapper.versionStatusToWorkflowVersionStatus(VersionStatus.Draft);
- assertEquals(WorkflowVersionStatus.DRAFT, mappedVersionStatus);
+ WorkflowVersionState mappedVersionStatus =
+ versionStateMapper.versionStatusToWorkflowVersionState(VersionStatus.Draft);
+ assertEquals(WorkflowVersionState.DRAFT, mappedVersionStatus);
}
@Test
public void shouldMapDeletedVersionStatusToWorkflowVersionStatus() {
- WorkflowVersionStatus mappedVersionStatus =
- versionStatusMapper.versionStatusToWorkflowVersionStatus(VersionStatus.Deleted);
- assertEquals(WorkflowVersionStatus.DRAFT, mappedVersionStatus);
+ WorkflowVersionState mappedVersionStatus =
+ versionStateMapper.versionStatusToWorkflowVersionState(VersionStatus.Deleted);
+ assertEquals(WorkflowVersionState.DRAFT, mappedVersionStatus);
}
@Test
public void shouldMapLockedVersionStatusToWorkflowVersionStatus() {
- WorkflowVersionStatus mappedVersionStatus =
- versionStatusMapper.versionStatusToWorkflowVersionStatus(VersionStatus.Locked);
- assertEquals(WorkflowVersionStatus.DRAFT, mappedVersionStatus);
+ WorkflowVersionState mappedVersionStatus =
+ versionStateMapper.versionStatusToWorkflowVersionState(VersionStatus.Locked);
+ assertEquals(WorkflowVersionState.DRAFT, mappedVersionStatus);
}
@Test
public void shouldMapDeprecatedVersionStatusToWorkflowVersionStatus() {
- WorkflowVersionStatus mappedVersionStatus =
- versionStatusMapper.versionStatusToWorkflowVersionStatus(VersionStatus.Deprecated);
- assertEquals(WorkflowVersionStatus.DRAFT, mappedVersionStatus);
+ WorkflowVersionState mappedVersionStatus =
+ versionStateMapper.versionStatusToWorkflowVersionState(VersionStatus.Deprecated);
+ assertEquals(WorkflowVersionState.DRAFT, mappedVersionStatus);
}
@Test
public void shouldMapCertifiedWorkflowVersionStatusToVersionStatus() {
VersionStatus mappedVersionStatus =
- versionStatusMapper.workflowVersionStatusToVersionStatus(WorkflowVersionStatus.CERTIFIED);
+ versionStateMapper.workflowVersionStateToVersionStatus(WorkflowVersionState.CERTIFIED);
assertEquals(VersionStatus.Certified, mappedVersionStatus);
}
@Test
public void shouldMapDraftWorkflowVersionStatusToVersionStatus() {
VersionStatus mappedVersionStatus =
- versionStatusMapper.workflowVersionStatusToVersionStatus(WorkflowVersionStatus.DRAFT);
+ versionStateMapper.workflowVersionStateToVersionStatus(WorkflowVersionState.DRAFT);
assertEquals(VersionStatus.Draft, mappedVersionStatus);
}
}