Task.java to Task.kt, and test it 60/82660/1
authorIttay Stern <ittay.stern@att.com>
Tue, 19 Mar 2019 10:26:20 +0000 (12:26 +0200)
committerIttay Stern <ittay.stern@att.com>
Tue, 19 Mar 2019 10:38:48 +0000 (12:38 +0200)
Also move setRandomStrings() to TestUtils.setStringsInStringProperties()

Issue-ID: VID-403
Change-Id: I0216d16983699f1b91c23d167472e36bcae10ce1
Signed-off-by: Ittay Stern <ittay.stern@att.com>
vid-app-common/src/main/java/org/onap/vid/mso/rest/Task.java [deleted file]
vid-app-common/src/main/java/org/onap/vid/mso/rest/Task.kt [new file with mode: 0644]
vid-app-common/src/test/java/org/onap/vid/job/command/InstanceGroupCommandTest.java
vid-app-common/src/test/java/org/onap/vid/mso/rest/TaskTest.java
vid-app-common/src/test/java/org/onap/vid/testUtils/TestUtils.java

diff --git a/vid-app-common/src/main/java/org/onap/vid/mso/rest/Task.java b/vid-app-common/src/main/java/org/onap/vid/mso/rest/Task.java
deleted file mode 100644 (file)
index 1956d8a..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * VID
- * ================================================================================
- * Copyright (C) 2017 - 2019 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.onap.vid.mso.rest;
-
-import java.util.List;
-
-public class Task {
-
-    private String taskId;
-    private String type;
-    private String nfRole;
-    private String subscriptionServiceType;
-    private String originalRequestId;
-    private String originalRequestorId;
-    private String errorSource;
-    private String errorCode;
-    private String errorMessage;
-    private String buildingBlockName;
-    private String buildingBlockStep;
-    private List<String> validResponses;
-
-
-    public String getTaskId() {
-        return taskId;
-    }
-
-    public void setTaskId(String taskId) {
-        this.taskId = taskId;
-    }
-
-    public String getType() {
-        return type;
-    }
-
-    public void setType(String type) {
-        this.type = type;
-    }
-
-    public String getNfRole() {
-        return nfRole;
-    }
-
-    public void setNfRole(String nfRole) {
-        this.nfRole = nfRole;
-    }
-
-    public String getSubscriptionServiceType() {
-        return subscriptionServiceType;
-    }
-
-    public void setSubscriptionServiceType(String subscriptionServiceType) {
-        this.subscriptionServiceType = subscriptionServiceType;
-    }
-
-    public String getOriginalRequestId() {
-        return originalRequestId;
-    }
-
-    public void setOriginalRequestId(String originalRequestId) {
-        this.originalRequestId = originalRequestId;
-    }
-
-    public String getOriginalRequestorId() {
-        return originalRequestorId;
-    }
-
-    public void setOriginalRequestorId(String originalRequestorId) {
-        this.originalRequestorId = originalRequestorId;
-    }
-
-    public String getErrorSource() {
-        return errorSource;
-    }
-
-    public void setErrorSource(String errorSource) {
-        this.errorSource = errorSource;
-    }
-
-    public String getErrorCode() {
-        return errorCode;
-    }
-
-    public void setErrorCode(String errorCode) {
-        this.errorCode = errorCode;
-    }
-
-    public String getErrorMessage() {
-        return errorMessage;
-    }
-
-    public void setErrorMessage(String errorMessage) {
-        this.errorMessage = errorMessage;
-    }
-
-    public String getBuildingBlockName() {
-        return buildingBlockName;
-    }
-
-    public void setBuildingBlockName(String buildingBlockName) {
-        this.buildingBlockName = buildingBlockName;
-    }
-
-    public String getBuildingBlockStep() {
-        return buildingBlockStep;
-    }
-
-    public void setBuildingBlockStep(String buildingBlockStep) {
-        this.buildingBlockStep = buildingBlockStep;
-    }
-
-    public List<String> getValidResponses() {
-        return validResponses;
-    }
-
-    public void setValidResponses(List<String> validResponses) {
-        this.validResponses = validResponses;
-    }
-}
diff --git a/vid-app-common/src/main/java/org/onap/vid/mso/rest/Task.kt b/vid-app-common/src/main/java/org/onap/vid/mso/rest/Task.kt
new file mode 100644 (file)
index 0000000..311b0fb
--- /dev/null
@@ -0,0 +1,43 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 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.onap.vid.mso.rest
+
+data class Task(
+        var taskId: String?,
+        var type: String?,
+        var nfRole: String?,
+        var subscriptionServiceType: String?,
+        var originalRequestId: String?,
+        var originalRequestorId: String?,
+        var errorSource: String?,
+        var errorCode: String?,
+        var errorMessage: String?,
+        var buildingBlockName: String?,
+        var buildingBlockStep: String?,
+        var validResponses: List<String>?
+) {
+    // i.e. "default constructor", no params
+    constructor() : this(
+            null, null, null, null,
+            null, null, null, null,
+            null, null, null, null
+    )
+}
index 47ec44c..b4a5c64 100644 (file)
 
 package org.onap.vid.job.command;
 
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.eq;
+import static org.mockito.Mockito.only;
+import static org.mockito.Mockito.same;
+import static org.mockito.Mockito.verify;
+
 import com.google.common.collect.ImmutableMap;
-import org.apache.commons.beanutils.BeanUtils;
+import java.util.Optional;
 import org.mockito.Answers;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
@@ -32,19 +38,11 @@ import org.onap.vid.model.serviceInstantiation.InstanceGroup;
 import org.onap.vid.mso.RestMsoImplementation;
 import org.onap.vid.mso.model.ModelInfo;
 import org.onap.vid.services.AsyncInstantiationBusinessLogic;
+import org.onap.vid.testUtils.TestUtils;
 import org.springframework.http.HttpMethod;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
-import java.util.Optional;
-import java.util.Set;
-
-import static java.util.function.Function.identity;
-import static java.util.stream.Collectors.toMap;
-import static org.apache.commons.lang.RandomStringUtils.randomAlphanumeric;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.*;
-
 public class InstanceGroupCommandTest {
 
     @Mock(answer = Answers.RETURNS_MOCKS)
@@ -73,7 +71,7 @@ public class InstanceGroupCommandTest {
 
     @Test
     public void createMyself_callsMso() {
-        final ModelInfo serviceModelInfo = setRandomStrings(new ModelInfo());
+        final ModelInfo serviceModelInfo = setStrings(new ModelInfo());
         final String serviceInstanceId = "service-instance-id";
         final String userId = "ff3223";
 
@@ -92,14 +90,7 @@ public class InstanceGroupCommandTest {
 
     }
 
-    private ModelInfo setRandomStrings(ModelInfo object) {
-        try {
-            Set<String> fields = BeanUtils.describe(object).keySet();
-            BeanUtils.populate(object,
-                    fields.stream().collect(toMap(identity(), s -> randomAlphanumeric(4))));
-            return object;
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
+    private ModelInfo setStrings(ModelInfo object) {
+        return TestUtils.setStringsInStringProperties(object);
     }
 }
index 5d1e480..f6d0c76 100644 (file)
 
 package org.onap.vid.mso.rest;
 
-import org.testng.annotations.Test;
-
 import static com.google.code.beanmatchers.BeanMatchers.hasValidGettersAndSetters;
+import static net.javacrumbs.jsonunit.JsonMatchers.jsonEquals;
+import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.common.collect.ImmutableList;
+import java.io.IOException;
+import org.onap.vid.testUtils.TestUtils;
+import org.testng.annotations.Test;
+
 public class TaskTest {
 
+    private final ObjectMapper mapper = new ObjectMapper();
+    private final String TASK_JSON = ""
+        + "{ "
+        + "  \"taskId\": \"taskId\", "
+        + "  \"type\": \"type\", "
+        + "  \"nfRole\": \"nfRole\", "
+        + "  \"subscriptionServiceType\": \"subscriptionServiceType\", "
+        + "  \"originalRequestId\": \"originalRequestId\", "
+        + "  \"originalRequestorId\": \"originalRequestorId\", "
+        + "  \"buildingBlockName\": \"buildingBlockName\", "
+        + "  \"buildingBlockStep\": \"buildingBlockStep\", "
+        + "  \"errorSource\": \"errorSource\", "
+        + "  \"errorCode\": \"errorCode\", "
+        + "  \"errorMessage\": \"errorMessage\", "
+        + "  \"validResponses\": [ "
+        + "    \"a\", "
+        + "    \"b\", "
+        + "    \"c\" "
+        + "  ] "
+        + "} ";
+
+    private Task newTaskWithPopulatedFields() {
+        Task task = TestUtils.setStringsInStringProperties(new Task());
+        task.setValidResponses(ImmutableList.of("a", "b", "c"));
+        return task;
+    }
+
     @Test
     public void shouldHaveProperSettersAndGetters() {
         assertThat(Task.class, hasValidGettersAndSetters());
     }
+
+    @Test
+    public void serializeTask() throws IOException {
+        assertThat(
+            mapper.writeValueAsString(newTaskWithPopulatedFields()),
+            jsonEquals(TASK_JSON)
+        );
+    }
+
+    @Test
+    public void deserializeTask() throws IOException {
+        assertThat(
+            mapper.readValue(TASK_JSON, Task.class),
+            is(newTaskWithPopulatedFields())
+        );
+    }
 }
index 3a7d469..3d919d7 100644 (file)
@@ -20,6 +20,9 @@
 
 package org.onap.vid.testUtils;
 
+import static java.util.function.Function.identity;
+import static java.util.stream.Collectors.toList;
+import static java.util.stream.Collectors.toMap;
 import static org.apache.commons.beanutils.PropertyUtils.getPropertyDescriptors;
 import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.RETURNS_DEFAULTS;
@@ -46,6 +49,7 @@ import javax.ws.rs.client.WebTarget;
 import javax.ws.rs.core.GenericType;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+import org.apache.commons.beanutils.BeanUtils;
 import org.apache.log4j.LogManager;
 import org.apache.log4j.Logger;
 import org.json.JSONArray;
@@ -55,7 +59,6 @@ import org.mockito.MockSettings;
 import org.mockito.Mockito;
 import org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
-import org.onap.portalsdk.core.domain.support.DomainVo;
 import org.onap.portalsdk.core.util.SystemProperties;
 import org.onap.vid.asdc.beans.Service;
 import org.springframework.mock.env.MockEnvironment;
@@ -131,12 +134,39 @@ public class TestUtils {
                 valueType);
     }
 
-    public static String[] allPropertiesOf(Class<DomainVo> aClass) {
+    public static String[] allPropertiesOf(Class<?> aClass) {
         return Arrays.stream(getPropertyDescriptors(aClass))
             .map(PropertyDescriptor::getDisplayName)
             .toArray(String[]::new);
     }
 
+    private static <T> List<String> allStringPropertiesOf(T object) {
+        return Arrays.stream(getPropertyDescriptors(object.getClass()))
+            .filter(descriptor -> descriptor.getPropertyType().isAssignableFrom(String.class))
+            .map(PropertyDescriptor::getDisplayName)
+            .collect(toList());
+    }
+
+    /**
+     * Sets each String property with a value equal to the name of
+     * the property; e.g.: { name: "name", city: "city" }
+     * @param object
+     * @param <T>
+     * @return The modified object
+     */
+    public static <T> T setStringsInStringProperties(T object) {
+        try {
+            final List<String> stringFields = allStringPropertiesOf(object);
+
+            BeanUtils.populate(object, stringFields.stream()
+                .collect(toMap(identity(), identity())));
+
+            return object;
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
 
     public static class JavaxRsClientMocks {
         private final javax.ws.rs.client.Client fakeClient;