diff options
8 files changed, 314 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..5eaa27f11f --- /dev/null +++ b/cloudify-client/src/test/java/org/openecomp/mso/cloudify/BeanMultiTest.java @@ -0,0 +1,63 @@ +/*- + * ============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() { + validator.validate("org.openecomp.mso.cloudify.v3.model",enumFilter); + } + + 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 |