Handle 201 and 422 status codes
SDC activitySpec API returns 201 for success and 422 when already exists
Issue-ID: SO-1996
Signed-off-by: Kuleshov, Elena <evn@att.com>
Change-Id: I75837b75cbd24f4ccfb97a07e91219b3b61453f6
diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/activity/ActivitySpecsActions.java b/asdc-controller/src/main/java/org/onap/so/asdc/activity/ActivitySpecsActions.java
index c80e84b..619d894 100644
--- a/asdc-controller/src/main/java/org/onap/so/asdc/activity/ActivitySpecsActions.java
+++ b/asdc-controller/src/main/java/org/onap/so/asdc/activity/ActivitySpecsActions.java
@@ -67,7 +67,9 @@
Response response = httpClient.post(payload);
int statusCode = response.getStatus();
- if (statusCode != HttpStatus.SC_OK) {
+ if (statusCode == HttpStatus.SC_UNPROCESSABLE_ENTITY) {
+ logger.warn("{} {} {}", "ActivitySpec", activitySpec.getName(), "already exists in SDC");
+ } else if (statusCode != HttpStatus.SC_OK && statusCode != HttpStatus.SC_CREATED) {
logger.warn("{} {} {}", "Error creating activity spec", activitySpec.getName(), statusCode);
} else {
if (response.getEntity() != null) {
@@ -108,7 +110,9 @@
int statusCode = response.getStatus();
- if (statusCode != HttpStatus.SC_OK) {
+ if (statusCode == HttpStatus.SC_UNPROCESSABLE_ENTITY) {
+ logger.warn("{} {} {}", "ActivitySpec with id", activitySpecId, "is already certified in SDC");
+ } else if (statusCode != HttpStatus.SC_OK) {
logger.warn("{} {} {}", "Error certifying activity", activitySpecId, statusCode);
} else {
certificationResult = true;
diff --git a/asdc-controller/src/test/java/org/onap/asdc/activity/ActivitySpecsActionsTest.java b/asdc-controller/src/test/java/org/onap/asdc/activity/ActivitySpecsActionsTest.java
index 4381209..7de35b5 100644
--- a/asdc-controller/src/test/java/org/onap/asdc/activity/ActivitySpecsActionsTest.java
+++ b/asdc-controller/src/test/java/org/onap/asdc/activity/ActivitySpecsActionsTest.java
@@ -56,6 +56,44 @@
}
@Test
+ public void CreateActivitySpecReturnsCreated_Test() throws Exception {
+ String HOSTNAME = createURLWithPort("");
+
+ ActivitySpec activitySpec = new ActivitySpec();
+ activitySpec.setName("testActivitySpec");
+ activitySpec.setDescription("Test Activity Spec");
+ ActivitySpecCreateResponse activitySpecCreateResponse = new ActivitySpecCreateResponse();
+ activitySpecCreateResponse.setId("testActivityId");
+ ObjectMapper mapper = new ObjectMapper();
+ String body = mapper.writeValueAsString(activitySpecCreateResponse);
+ wireMockServer.stubFor(post(urlPathMatching("/v1.0/activity-spec"))
+ .willReturn(aResponse().withHeader("Content-Type", "application/json")
+ .withStatus(org.springframework.http.HttpStatus.CREATED.value()).withBody(body)));
+
+ String activitySpecId = activitySpecsActions.createActivitySpec(HOSTNAME, activitySpec);
+ assertEquals("testActivityId", activitySpecId);
+ }
+
+ @Test
+ public void CreateActivitySpecReturnsExists_Test() throws Exception {
+ String HOSTNAME = createURLWithPort("");
+
+ ActivitySpec activitySpec = new ActivitySpec();
+ activitySpec.setName("testActivitySpec");
+ activitySpec.setDescription("Test Activity Spec");
+ ActivitySpecCreateResponse activitySpecCreateResponse = new ActivitySpecCreateResponse();
+ activitySpecCreateResponse.setId("testActivityId");
+ ObjectMapper mapper = new ObjectMapper();
+ String body = mapper.writeValueAsString(activitySpecCreateResponse);
+ wireMockServer.stubFor(post(urlPathMatching("/v1.0/activity-spec"))
+ .willReturn(aResponse().withHeader("Content-Type", "application/json")
+ .withStatus(org.springframework.http.HttpStatus.UNPROCESSABLE_ENTITY.value()).withBody(body)));
+
+ String activitySpecId = activitySpecsActions.createActivitySpec(HOSTNAME, activitySpec);
+ assertEquals(null, activitySpecId);
+ }
+
+ @Test
public void CertifyActivitySpec_Test() throws Exception {
String HOSTNAME = createURLWithPort("");
@@ -70,6 +108,21 @@
assertTrue(certificationResult);
}
+ @Test
+ public void CertifyActivitySpecReturnsExists_Test() throws Exception {
+ String HOSTNAME = createURLWithPort("");
+
+ String activitySpecId = "testActivitySpec";
+ String urlPath = "/v1.0/activity-spec/testActivitySpec/versions/latest/actions";
+
+ wireMockServer.stubFor(
+ put(urlPathMatching(urlPath)).willReturn(aResponse().withHeader("Content-Type", "application/json")
+ .withStatus(org.springframework.http.HttpStatus.UNPROCESSABLE_ENTITY.value())));
+
+ boolean certificationResult = activitySpecsActions.certifyActivitySpec(HOSTNAME, activitySpecId);
+ assertFalse(certificationResult);
+ }
+
private String createURLWithPort(String uri) {
return "http://localhost:" + wireMockPort + uri;
}