From 03359a5641dfb26f93d630a1b1232c0ffc6ec51c Mon Sep 17 00:00:00 2001 From: Ittay Stern Date: Tue, 19 Mar 2019 12:26:20 +0200 Subject: Task.java to Task.kt, and test it Also move setRandomStrings() to TestUtils.setStringsInStringProperties() Issue-ID: VID-403 Change-Id: I0216d16983699f1b91c23d167472e36bcae10ce1 Signed-off-by: Ittay Stern --- .../src/main/java/org/onap/vid/mso/rest/Task.java | 136 --------------------- .../src/main/java/org/onap/vid/mso/rest/Task.kt | 43 +++++++ .../vid/job/command/InstanceGroupCommandTest.java | 31 ++--- .../test/java/org/onap/vid/mso/rest/TaskTest.java | 53 +++++++- .../java/org/onap/vid/testUtils/TestUtils.java | 34 +++++- 5 files changed, 137 insertions(+), 160 deletions(-) delete mode 100644 vid-app-common/src/main/java/org/onap/vid/mso/rest/Task.java create mode 100644 vid-app-common/src/main/java/org/onap/vid/mso/rest/Task.kt 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 index 1956d8a95..000000000 --- a/vid-app-common/src/main/java/org/onap/vid/mso/rest/Task.java +++ /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 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 getValidResponses() { - return validResponses; - } - - public void setValidResponses(List 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 index 000000000..311b0fbbe --- /dev/null +++ b/vid-app-common/src/main/java/org/onap/vid/mso/rest/Task.kt @@ -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? +) { + // i.e. "default constructor", no params + constructor() : this( + null, null, null, null, + null, null, null, null, + null, null, null, null + ) +} diff --git a/vid-app-common/src/test/java/org/onap/vid/job/command/InstanceGroupCommandTest.java b/vid-app-common/src/test/java/org/onap/vid/job/command/InstanceGroupCommandTest.java index 47ec44ca7..b4a5c64f5 100644 --- a/vid-app-common/src/test/java/org/onap/vid/job/command/InstanceGroupCommandTest.java +++ b/vid-app-common/src/test/java/org/onap/vid/job/command/InstanceGroupCommandTest.java @@ -20,8 +20,14 @@ 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 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); } } diff --git a/vid-app-common/src/test/java/org/onap/vid/mso/rest/TaskTest.java b/vid-app-common/src/test/java/org/onap/vid/mso/rest/TaskTest.java index 5d1e480fe..f6d0c763f 100644 --- a/vid-app-common/src/test/java/org/onap/vid/mso/rest/TaskTest.java +++ b/vid-app-common/src/test/java/org/onap/vid/mso/rest/TaskTest.java @@ -20,15 +20,64 @@ 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()) + ); + } } diff --git a/vid-app-common/src/test/java/org/onap/vid/testUtils/TestUtils.java b/vid-app-common/src/test/java/org/onap/vid/testUtils/TestUtils.java index 3a7d4690d..3d919d72d 100644 --- a/vid-app-common/src/test/java/org/onap/vid/testUtils/TestUtils.java +++ b/vid-app-common/src/test/java/org/onap/vid/testUtils/TestUtils.java @@ -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 aClass) { + public static String[] allPropertiesOf(Class aClass) { return Arrays.stream(getPropertyDescriptors(aClass)) .map(PropertyDescriptor::getDisplayName) .toArray(String[]::new); } + private static List 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 + * @return The modified object + */ + public static T setStringsInStringProperties(T object) { + try { + final List 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; -- cgit 1.2.3-korg