Implant vid-app-common org.onap.vid.job (main and test)
[vid.git] / vid-app-common / src / test / java / org / onap / vid / mso / rest / RequestDetailsTest.java
index 153e165..7f30b0f 100644 (file)
+/*-
+ * ============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 static com.google.code.beanmatchers.BeanMatchers.hasValidBeanEqualsExcluding;
+import static com.google.code.beanmatchers.BeanMatchers.hasValidGettersAndSettersExcluding;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.testng.AssertJUnit.assertEquals;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
-
-import org.junit.Test;
-import org.onap.vid.domain.mso.*;
+import org.assertj.core.api.AssertionsForClassTypes;
+import org.onap.vid.exceptions.NotFoundException;
+import org.onap.vid.testUtils.TestUtils;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
 
 
 public class RequestDetailsTest {
 
-       private RequestDetails createTestSubject() {
-               return new RequestDetails();
-       }
+       private RequestDetails requestDetails;
 
-       
-       @Test
-       public void testGetCloudConfiguration() throws Exception {
-               RequestDetails testSubject;
-               CloudConfiguration result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = testSubject.getCloudConfiguration();
-       }
+       private String propertyName = "testProperty";
+       private String additionalProperty = "testAdditionalProperty";
 
-       
-       @Test
-       public void testSetCloudConfiguration() throws Exception {
-               RequestDetails testSubject;
-               CloudConfiguration cloudConfiguration = null;
+       private static final ImmutableList<String> LCP_CLOUD_REGION_ID_PATH =
+                       ImmutableList.of("requestDetails", "cloudConfiguration", "lcpCloudRegionId");
 
-               // default test
-               testSubject = createTestSubject();
-               testSubject.setCloudConfiguration(cloudConfiguration);
+       @BeforeClass
+       public static void registerValueGenerator() {
+               TestUtils.registerCloudConfigurationValueGenerator();
        }
 
-       
-       @Test
-       public void testGetModelInfo() throws Exception {
-               RequestDetails testSubject;
-               ModelInfo result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = testSubject.getModelInfo();
+       @BeforeMethod
+       public void setUp() {
+               requestDetails = new RequestDetails();
        }
 
-       
        @Test
-       public void testSetModelInfo() throws Exception {
-               RequestDetails testSubject;
-               ModelInfo modelInfo = null;
-
-               // default test
-               testSubject = createTestSubject();
-               testSubject.setModelInfo(modelInfo);
+       public void shouldHaveProperSettersAndGetters() {
+               assertThat(RequestDetails.class, hasValidGettersAndSettersExcluding("additionalProperties"));
        }
 
-       
        @Test
-       public void testGetRelatedInstanceList() throws Exception {
-               RequestDetails testSubject;
-               List<RelatedModel> result;
+       public void shouldHaveProperGetterAndSetterForAdditionalProperties() {
+               //      when
+               requestDetails.setAdditionalProperty(propertyName,additionalProperty);
 
-               // default test
-               testSubject = createTestSubject();
-               result = testSubject.getRelatedInstanceList();
+               //      then
+               AssertionsForClassTypes.assertThat( requestDetails.getAdditionalProperties().get(propertyName) ).isEqualTo(additionalProperty);
        }
 
-       
        @Test
-       public void testSetRelatedInstanceList() throws Exception {
-               RequestDetails testSubject;
-               List<RelatedModel> relatedInstanceList = null;
+       public void shouldProperlyConvertRelatedInstanceObjectToString() {
+               //      given
+               requestDetails.setAdditionalProperty(propertyName,additionalProperty);
 
-               // default test
-               testSubject = createTestSubject();
-               testSubject.setRelatedInstanceList(relatedInstanceList);
-       }
-
-       
-       @Test
-       public void testGetRequestInfo() throws Exception {
-               RequestDetails testSubject;
-               RequestInfo result;
+               //      when
+               String response = requestDetails.toString();
 
-               // default test
-               testSubject = createTestSubject();
-               result = testSubject.getRequestInfo();
+               //      then
+               AssertionsForClassTypes.assertThat(response).contains(
+                                               "additionalProperties={"+propertyName+"="+additionalProperty+"}]"
+               );
        }
 
-       
        @Test
-       public void testSetRequestInfo() throws Exception {
-               RequestDetails testSubject;
-               RequestInfo requestInfo = null;
-
-               // default test
-               testSubject = createTestSubject();
-               testSubject.setRequestInfo(requestInfo);
+       public void shouldProperlyCheckIfObjectsAreEqual() {
+               assertThat(RequestDetails.class, hasValidBeanEqualsExcluding("additionalProperties"));
        }
 
-       
-       @Test
-       public void testGetSubscriberInfo() throws Exception {
-               RequestDetails testSubject;
-               SubscriberInfo result;
+       @DataProvider
+       public static Object[][] extractValueByPathDataProvider() {
 
-               // default test
-               testSubject = createTestSubject();
-               result = testSubject.getSubscriberInfo();
-       }
+               RequestDetails requestDetails1 = new RequestDetails();
+               Map cloudConfiguration = ImmutableMap.of("lcpCloudRegionId", "lcp1");
+               requestDetails1.setAdditionalProperty("requestDetails",
+                               ImmutableMap.of("cloudConfiguration", cloudConfiguration));
 
-       
-       @Test
-       public void testSetSubscriberInfo() throws Exception {
-               RequestDetails testSubject;
-               SubscriberInfo subscriberInfo = null;
 
-               // default test
-               testSubject = createTestSubject();
-               testSubject.setSubscriberInfo(subscriberInfo);
-       }
-
-       
-       @Test
-       public void testToString() throws Exception {
-               RequestDetails testSubject;
-               String result;
+               return new Object[][] {
+                               { requestDetails1, LCP_CLOUD_REGION_ID_PATH, String.class, "lcp1" },
+                               { requestDetails1, ImmutableList.of("requestDetails", "cloudConfiguration"), Map.class, cloudConfiguration },
 
-               // default test
-               testSubject = createTestSubject();
-               result = testSubject.toString();
+               };
        }
 
-       
-       @Test
-       public void testGetAdditionalProperties() throws Exception {
-               RequestDetails testSubject;
-               Map<String, Object> result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = testSubject.getAdditionalProperties();
+       @Test(dataProvider = "extractValueByPathDataProvider")
+       public void testExtractValueByPath(RequestDetails requestDetails, List<String> keys, Class clz, Object expectedValue) {
+               assertEquals(expectedValue, requestDetails.extractValueByPathUsingAdditionalProperties(keys, clz));
        }
 
-       
-       @Test
-       public void testSetAdditionalProperty() throws Exception {
-               RequestDetails testSubject;
-               String name = "";
-               Object value = null;
-
-               // default test
-               testSubject = createTestSubject();
-               testSubject.setAdditionalProperty(name, value);
-       }
+       @DataProvider
+       public static Object[][] extractValueByPathDataProviderThrowException() {
+               RequestDetails requestDetails1 = new RequestDetails();
+               requestDetails1.setAdditionalProperty("requestDetails",
+                               ImmutableMap.of("cloudConfiguration", "notMap"));
 
-       
-       @Test
-       public void testHashCode() throws Exception {
-               RequestDetails testSubject;
-               int result;
+               RequestDetails requestDetails2 = new RequestDetails();
+               requestDetails2.setAdditionalProperty("requestDetails",
+                               ImmutableMap.of("cloudConfiguration", Collections.EMPTY_MAP));
 
-               // default test
-               testSubject = createTestSubject();
-               result = testSubject.hashCode();
+               return new Object[][] {
+                               { new RequestDetails(), LCP_CLOUD_REGION_ID_PATH, String.class},
+                               { requestDetails1, LCP_CLOUD_REGION_ID_PATH, String.class},
+                               { requestDetails1, ImmutableList.of("requestDetails", "abc"), String.class},
+                               { requestDetails2, LCP_CLOUD_REGION_ID_PATH, String.class},
+               };
        }
 
-       
-       @Test
-       public void testEquals() throws Exception {
-               RequestDetails testSubject;
-               Object other = null;
-               boolean result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = testSubject.equals(other);
+       @Test(dataProvider = "extractValueByPathDataProviderThrowException", expectedExceptions = NotFoundException.class)
+       public void testExtractValueByPathThrowException(RequestDetails requestDetails, List<String> keys, Class clz) {
+               requestDetails.extractValueByPathUsingAdditionalProperties(keys, clz);
        }
-}
\ No newline at end of file
+}