Add some initial unit test to cloudify client 85/36785/1
authorArthur Martella <amartell@research.att.com>
Mon, 19 Mar 2018 16:52:13 +0000 (12:52 -0400)
committerArthur Martella <amartell@research.att.com>
Mon, 19 Mar 2018 16:52:13 +0000 (12:52 -0400)
See also: MSO-2317 R1806

Change-Id: Ia5539fe2adc1e8c3159bc767c2b7eaa0114094f1
Issue-ID: SO-489
Signed-off-by: Arthur Martella <amartell@research.att.com>
cloudify-client/pom.xml
cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Blueprint.java
cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Deployment.java
cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/DeploymentOutputs.java
cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Metadata.java
cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Pagination.java [new file with mode: 0644]
cloudify-client/src/test/java/org/openecomp/mso/cloudify/BeanMultiTest.java [new file with mode: 0644]
cloudify-client/src/test/java/org/openecomp/mso/cloudify/connector/http/HttpClientConnectorTest.java [new file with mode: 0644]

index 61798c3..9b2ca39 100644 (file)
                <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>
index a33c520..4681959 100644 (file)
@@ -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));
index 453dd3f..515e8a0 100644 (file)
@@ -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));
index 11fe7fa..26d2ae2 100644 (file)
@@ -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));
index d44e92b..31e3b0d 100644 (file)
@@ -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 (file)
index 0000000..a79f053
--- /dev/null
@@ -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 (file)
index 0000000..11a74e8
--- /dev/null
@@ -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 (file)
index 0000000..b768c93
--- /dev/null
@@ -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