aboutsummaryrefslogtreecommitdiffstats
path: root/cloudify-client
diff options
context:
space:
mode:
authorArthur Martella <amartell@research.att.com>2018-03-19 12:52:13 -0400
committerArthur Martella <amartell@research.att.com>2018-03-19 12:52:13 -0400
commit48cad37a5c9906b24ae75532d45fb7fa21a32a52 (patch)
tree8434a05af00205cb69cd0e08412ab41cafa0fa44 /cloudify-client
parent88a47679a783c620683d283b20b04fcdc97b4c8f (diff)
Add some initial unit test to cloudify client
See also: MSO-2317 R1806 Change-Id: Ia5539fe2adc1e8c3159bc767c2b7eaa0114094f1 Issue-ID: SO-489 Signed-off-by: Arthur Martella <amartell@research.att.com>
Diffstat (limited to 'cloudify-client')
-rw-r--r--cloudify-client/pom.xml28
-rw-r--r--cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Blueprint.java7
-rw-r--r--cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Deployment.java22
-rw-r--r--cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/DeploymentOutputs.java9
-rw-r--r--cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Metadata.java27
-rw-r--r--cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Pagination.java51
-rw-r--r--cloudify-client/src/test/java/org/openecomp/mso/cloudify/BeanMultiTest.java70
-rw-r--r--cloudify-client/src/test/java/org/openecomp/mso/cloudify/connector/http/HttpClientConnectorTest.java150
8 files changed, 321 insertions, 43 deletions
diff --git a/cloudify-client/pom.xml b/cloudify-client/pom.xml
index 61798c3462..9b2ca39615 100644
--- a/cloudify-client/pom.xml
+++ b/cloudify-client/pom.xml
@@ -35,12 +35,36 @@
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
- <version>4.3.1</version>
+<!-- <version>4.3.1</version> -->
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
- <version>4.5.5</version>
+<!-- <version>4.5.5</version> -->
+ </dependency>
+ <dependency>
+ <groupId>org.hamcrest</groupId>
+ <artifactId>hamcrest-core</artifactId>
+ <version>1.3</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.hamcrest</groupId>
+ <artifactId>hamcrest-library</artifactId>
+ <version>1.3</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-all</artifactId>
+ <version>1.9.5</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.11</version>
+ <scope>test</scope>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
diff --git a/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Blueprint.java b/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Blueprint.java
index a33c5206f2..468195909f 100644
--- a/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Blueprint.java
+++ b/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Blueprint.java
@@ -57,10 +57,6 @@ public class Blueprint implements Serializable {
@JsonProperty("updated_at")
private Date updatedAt;
- // ObjectMapper instance to parse Json stack outputs
- @JsonIgnore
- private static ObjectMapper mapper = new ObjectMapper();
-
public Date getCreatedAt() {
return createdAt;
}
@@ -124,6 +120,9 @@ public class Blueprint implements Serializable {
*/
public <T> T getMapValue (Map<String,Object> map, String key, Class<T> type)
{
+
+ ObjectMapper mapper = new ObjectMapper();
+
if (map.containsKey(key)) {
try {
String s = mapper.writeValueAsString(map.get(key));
diff --git a/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Deployment.java b/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Deployment.java
index 453dd3f692..515e8a0be1 100644
--- a/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Deployment.java
+++ b/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Deployment.java
@@ -78,10 +78,22 @@ public class Deployment implements Serializable {
@JsonProperty("workflows")
private List<Workflow> workflows;
- // ObjectMapper instance to parse Json object outputs
- @JsonIgnore
- private static ObjectMapper mapper = new ObjectMapper();
-
+ public List<Object> getPolicyTriggers() {
+ return policyTriggers;
+ }
+
+ public void setPolicyTriggers(List<Object> policyTriggers) {
+ this.policyTriggers = policyTriggers;
+ }
+
+ public List<Object> getPolicyTypes() {
+ return policyTypes;
+ }
+
+ public void setPolicyTypes(List<Object> policyTypes) {
+ this.policyTypes = policyTypes;
+ }
+
public String getBlueprintId() {
return blueprintId;
}
@@ -320,6 +332,8 @@ public class Deployment implements Serializable {
*/
public <T> T getMapValue (Map<String,Object> map, String key, Class<T> type)
{
+
+ ObjectMapper mapper = new ObjectMapper();
if (map.containsKey(key)) {
try {
String s = mapper.writeValueAsString(map.get(key));
diff --git a/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/DeploymentOutputs.java b/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/DeploymentOutputs.java
index 11fe7faae0..26d2ae20bc 100644
--- a/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/DeploymentOutputs.java
+++ b/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/DeploymentOutputs.java
@@ -41,12 +41,6 @@ public class DeploymentOutputs implements Serializable {
@JsonProperty("outputs")
private Map<String, Object> outputs = null;
-
- // ObjectMapper instance to parse Json object outputs
- @JsonIgnore
- private static ObjectMapper mapper = new ObjectMapper();
-
-
public Map<String, Object> getOutputs() {
return this.outputs;
}
@@ -67,6 +61,9 @@ public class DeploymentOutputs implements Serializable {
*/
public <T> T getMapValue (Map<String,Object> map, String key, Class<T> type)
{
+
+ ObjectMapper mapper = new ObjectMapper();
+
if (map.containsKey(key)) {
try {
String s = mapper.writeValueAsString(map.get(key));
diff --git a/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Metadata.java b/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Metadata.java
index d44e92b1bc..31e3b0dbe3 100644
--- a/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Metadata.java
+++ b/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Metadata.java
@@ -54,31 +54,4 @@ public class Metadata implements Serializable {
this.pagination = pagination;
}
- public class Pagination {
- @JsonProperty("total")
- private int total;
- @JsonProperty("offset")
- private int offset;
- @JsonProperty("size")
- private int size;
-
- public int getTotal() {
- return total;
- }
- public void setTotal(int total) {
- this.total = total;
- }
- public int getOffset() {
- return offset;
- }
- public void setOffset(int offset) {
- this.offset = offset;
- }
- public int getSize() {
- return size;
- }
- public void setSize(int size) {
- this.size = size;
- }
- }
}
diff --git a/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Pagination.java b/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Pagination.java
new file mode 100644
index 0000000000..a79f053ca2
--- /dev/null
+++ b/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Pagination.java
@@ -0,0 +1,51 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.mso.cloudify.v3.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class Pagination {
+ @JsonProperty("total")
+ private int total;
+ @JsonProperty("offset")
+ private int offset;
+ @JsonProperty("size")
+ private int size;
+
+ public int getTotal() {
+ return total;
+ }
+ public void setTotal(int total) {
+ this.total = total;
+ }
+ public int getOffset() {
+ return offset;
+ }
+ public void setOffset(int offset) {
+ this.offset = offset;
+ }
+ public int getSize() {
+ return size;
+ }
+ public void setSize(int size) {
+ this.size = size;
+ }
+} \ No newline at end of file
diff --git a/cloudify-client/src/test/java/org/openecomp/mso/cloudify/BeanMultiTest.java b/cloudify-client/src/test/java/org/openecomp/mso/cloudify/BeanMultiTest.java
new file mode 100644
index 0000000000..11a74e8c7d
--- /dev/null
+++ b/cloudify-client/src/test/java/org/openecomp/mso/cloudify/BeanMultiTest.java
@@ -0,0 +1,70 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.mso.cloudify;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import com.openpojo.reflection.PojoClass;
+import com.openpojo.reflection.PojoClassFilter;
+import com.openpojo.reflection.filters.FilterEnum;
+import com.openpojo.reflection.impl.PojoClassFactory;
+import com.openpojo.validation.Validator;
+import com.openpojo.validation.ValidatorBuilder;
+import com.openpojo.validation.rule.impl.GetterMustExistRule;
+import com.openpojo.validation.rule.impl.SetterMustExistRule;
+import com.openpojo.validation.test.impl.GetterTester;
+import com.openpojo.validation.test.impl.SetterTester;
+
+public class BeanMultiTest {
+
+ Validator validator;
+ PojoClassFilter enumFilter;
+ private PojoClassFilter filterTestClasses = new FilterTestClasses();
+
+ @Before
+ public void setup(){
+ enumFilter = new FilterEnum();
+ validator = ValidatorBuilder.create()
+ .with(new SetterMustExistRule(),
+ new GetterMustExistRule())
+ .with(new SetterTester(),
+ new GetterTester())
+ .build();
+ }
+ @Test
+ public void validateBeansMsoApihandlerBeans() {
+ try{
+ validator.validate("org.openecomp.mso.cloudify.v3.model",enumFilter);
+ } catch (AssertionError e) {
+ System.err.println("!!!!!!!!!");
+ e.printStackTrace();
+ System.err.println("!!!!!!!!!");
+ throw e;
+ }
+ }
+
+ private static class FilterTestClasses implements PojoClassFilter {
+ public boolean include(PojoClass pojoClass) {
+ return !pojoClass.getSourcePath().contains("/src/test/java");
+ }
+ }
+} \ No newline at end of file
diff --git a/cloudify-client/src/test/java/org/openecomp/mso/cloudify/connector/http/HttpClientConnectorTest.java b/cloudify-client/src/test/java/org/openecomp/mso/cloudify/connector/http/HttpClientConnectorTest.java
new file mode 100644
index 0000000000..b768c93168
--- /dev/null
+++ b/cloudify-client/src/test/java/org/openecomp/mso/cloudify/connector/http/HttpClientConnectorTest.java
@@ -0,0 +1,150 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.mso.cloudify.connector.http;
+
+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
+import static com.github.tomakehurst.wiremock.client.WireMock.post;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
+import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig;
+
+import com.github.tomakehurst.wiremock.junit.WireMockRule;
+import static com.github.tomakehurst.wiremock.client.WireMock.get;
+import static com.github.tomakehurst.wiremock.client.WireMock.delete;
+import static com.github.tomakehurst.wiremock.client.WireMock.put;
+import static com.github.tomakehurst.wiremock.client.WireMock.equalTo;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
+import static com.github.tomakehurst.wiremock.client.WireMock.postRequestedFor;
+import static com.github.tomakehurst.wiremock.client.WireMock.verify;
+import static com.github.tomakehurst.wiremock.client.WireMock.getRequestedFor;
+import static com.github.tomakehurst.wiremock.client.WireMock.putRequestedFor;
+import static com.github.tomakehurst.wiremock.client.WireMock.deleteRequestedFor;
+import org.apache.http.HttpStatus;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import static org.hamcrest.CoreMatchers.*;
+import org.openecomp.mso.cloudify.base.client.CloudifyRequest;
+import org.openecomp.mso.cloudify.base.client.CloudifyResponseException;
+import org.openecomp.mso.cloudify.base.client.HttpMethod;
+import org.openecomp.mso.cloudify.v3.model.Deployment;
+
+public class HttpClientConnectorTest {
+
+ @Rule
+ public WireMockRule wireMockRule = new WireMockRule(wireMockConfig().dynamicPort());
+
+ @Rule
+ public ExpectedException thrown = ExpectedException.none();
+
+ @Test
+ public void sunnyDay_POST(){
+ wireMockRule.stubFor(post(urlPathEqualTo("/testUrl")).willReturn(aResponse()
+ .withHeader("Content-Type", "application/json").withBody("TEST").withStatus(HttpStatus.SC_OK)));
+ int port = wireMockRule.port();
+ HttpClientConnector conector = new HttpClientConnector();
+ CloudifyRequest<Deployment> request = new CloudifyRequest<Deployment>();
+ Deployment deployment = new Deployment();
+ deployment.setId("id");
+ request.entity(deployment, "application/json");
+ request.endpoint("http://localhost:"+port+"/testUrl");
+ request.setBasicAuthentication("USER","PASSWORD");
+ request.header("Content-Type","application/json");
+ request.method(HttpMethod.POST);
+ conector.request(request);
+ verify(postRequestedFor(urlEqualTo("/testUrl")));
+ }
+
+
+ @Test
+ public void sunnyDay_GET(){
+ wireMockRule.stubFor(get(urlPathEqualTo("/testUrl")).willReturn(aResponse()
+ .withHeader("Content-Type", "application/json").withBody("TEST").withStatus(HttpStatus.SC_OK)));
+ int port = wireMockRule.port();
+ HttpClientConnector conector = new HttpClientConnector();
+ CloudifyRequest<Deployment> request = new CloudifyRequest<Deployment>();
+ request.endpoint("http://localhost:"+port+"/testUrl");
+ request.setBasicAuthentication("USER","PASSWORD");
+ request.method(HttpMethod.GET);
+ conector.request(request);
+ verify(getRequestedFor(urlEqualTo("/testUrl")));
+ }
+
+ @Test
+ public void sunnyDay_PUT(){
+ wireMockRule.stubFor(put(urlPathEqualTo("/testUrl")).willReturn(aResponse()
+ .withHeader("Content-Type", "application/json").withBody("TEST").withStatus(HttpStatus.SC_OK)));
+ int port = wireMockRule.port();
+ HttpClientConnector conector = new HttpClientConnector();
+ CloudifyRequest<Deployment> request = new CloudifyRequest<Deployment>();
+ request.endpoint("http://localhost:"+port+"/testUrl");
+ request.setBasicAuthentication("USER","PASSWORD");
+ request.method(HttpMethod.PUT);
+ conector.request(request);
+ verify(putRequestedFor(urlEqualTo("/testUrl")));
+ }
+
+
+ @Test
+ public void sunnyDay_DELETE(){
+ wireMockRule.stubFor(delete(urlPathEqualTo("/testUrl")).willReturn(aResponse()
+ .withHeader("Content-Type", "application/json").withBody("TEST").withStatus(HttpStatus.SC_OK)));
+ int port = wireMockRule.port();
+ HttpClientConnector conector = new HttpClientConnector();
+ CloudifyRequest<Deployment> request = new CloudifyRequest<Deployment>();
+ request.endpoint("http://localhost:"+port+"/testUrl");
+ request.setBasicAuthentication("USER","PASSWORD");
+ request.method(HttpMethod.DELETE);
+ conector.request(request);
+ verify(deleteRequestedFor(urlEqualTo("/testUrl")));
+ }
+
+
+ @Test
+ public void rainydDay_PATCH(){
+ thrown.expect(HttpClientException.class);
+ thrown.expectMessage("Unrecognized HTTP Method: PATCH");
+ HttpClientConnector conector = new HttpClientConnector();
+ CloudifyRequest<Deployment> request = new CloudifyRequest<Deployment>();
+ request.endpoint("http://localhost:123123/testUrl");
+ request.setBasicAuthentication("USER","PASSWORD");
+ request.method(HttpMethod.PATCH);
+ conector.request(request);
+
+ }
+
+
+ @Test
+ public void rainydDay_RunTimeException(){
+ wireMockRule.stubFor(post(urlEqualTo("/503")).willReturn(
+ aResponse().withStatus(503).withHeader("Content-Type", "text/plain").withBody("failure")));
+ thrown.expect(RuntimeException.class);
+ thrown.expectMessage("Unexpected client exception");
+ HttpClientConnector conector = new HttpClientConnector();
+ CloudifyRequest<Deployment> request = new CloudifyRequest<Deployment>();
+ request.endpoint("http://localhost:123123/503");
+ request.setBasicAuthentication("USER","PASSWORD");
+ request.method(HttpMethod.POST);
+ conector.request(request);
+
+ }
+
+
+} \ No newline at end of file