4dd500d86dea6df34815fed99b46b7f9ce2184a0
[so.git] / mso-api-handlers / mso-requests-db-repositories / src / test / java / org / onap / so / db / request / data / repository / InfraActiveRequestsRepositoryImplTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2018 Ericsson. All rights reserved.
4  * ================================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  * 
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  * 
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  * 
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20 package org.onap.so.db.request.data.repository;
21
22 import static org.hamcrest.CoreMatchers.containsString;
23 import static org.hamcrest.CoreMatchers.not;
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertFalse;
26 import static org.junit.Assert.assertNotEquals;
27 import static org.junit.Assert.assertNull;
28 import static org.junit.Assert.assertThat;
29 import static org.junit.Assert.assertTrue;
30 import static org.mockito.Mockito.mock;
31 import static org.onap.so.db.request.data.repository.InfraActiveRequestsRepositoryImpl.ACTION;
32 import static org.onap.so.db.request.data.repository.InfraActiveRequestsRepositoryImpl.REQUEST_ID;
33 import static org.onap.so.db.request.data.repository.InfraActiveRequestsRepositoryImpl.SERVICE_INSTANCE_ID;
34
35 import java.util.Collections;
36 import java.util.HashMap;
37 import java.util.List;
38 import java.util.Map;
39 import java.util.concurrent.TimeUnit;
40 import java.util.stream.Collectors;
41
42 import javax.persistence.criteria.CriteriaBuilder;
43 import javax.persistence.criteria.Predicate;
44 import javax.persistence.criteria.Root;
45
46 import org.junit.Test;
47 import org.junit.runner.RunWith;
48 import org.onap.so.TestApplication;
49 import org.onap.so.db.request.beans.InfraActiveRequests;
50 import org.springframework.beans.factory.annotation.Autowired;
51 import org.springframework.boot.test.context.SpringBootTest;
52 import org.springframework.test.context.ActiveProfiles;
53 import org.springframework.test.context.junit4.SpringRunner;
54
55 @RunWith(SpringRunner.class)
56 @SpringBootTest(classes = TestApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
57 @ActiveProfiles("test")
58 public class InfraActiveRequestsRepositoryImplTest {
59
60     /**
61      * January 1, 2019 2:00:00 PM
62      */
63     private static final long END_TIME = 1546351200000l;
64
65     /**
66      * January 1, 2019 12:45:00 PM
67      */
68     private static final long START_TIME = 1546346700000l;
69     private static final int MAX_LIMIT = 1;
70
71     /**
72      * December 23, 2016 23:59 PM
73      */
74     private static final long END_TIME_IN_MILISEC = 1482580740000l;
75
76     /**
77      * December 21, 2016 01:00 AM
78      */
79     private static final long START_TIME_IN_MILISEC = 1482282000000l;
80     private static final String REQUEST_ID_VALUE = "00032ab7-3fb3-42e5-965d-8ea592502017";
81     private static final String SERVICE_INSTANCE_ID_VALUE = "e3b5744d-2ad1-4cdd-8390-c999a38829bc";
82
83     @Autowired
84     private InfraActiveRequestsRepositoryImpl objUnderTest;
85
86     @Test
87     public void test_GetInfraActiveRequests_emptyFiltersMap() {
88         final List<InfraActiveRequests> actualRequests = objUnderTest.getInfraActiveRequests(Collections.emptyMap(),
89                 START_TIME_IN_MILISEC, END_TIME_IN_MILISEC, null);
90         assertFalse(actualRequests.isEmpty());
91     }
92
93     @Test
94     public void test_GetInfraActiveRequests_invalidFiltersMap() {
95         final Map<String, String[]> filters = new HashMap<>();
96         filters.put("OverTheMoon", new String[] {"Humpty Dumpty Sat On The Wall"});
97         final List<Predicate> predicates =
98                 objUnderTest.getPredicates(filters, mock(CriteriaBuilder.class), (Root<InfraActiveRequests>)mock(Root.class));
99         assertTrue(predicates.isEmpty());
100     }
101
102     @Test
103     public void test_GetInfraActiveRequests_invalidFiltersMapWithInvalidKey() {
104         final Map<String, String[]> filters = new HashMap<>();
105         filters.put("OverTheMoon", new String[] {"Avengers", "Humpty Dumpty Sat On The Wall"});
106         final List<InfraActiveRequests> actualRequests =
107                 objUnderTest.getInfraActiveRequests(filters, START_TIME_IN_MILISEC, END_TIME_IN_MILISEC, null);
108         assertFalse(actualRequests.isEmpty());
109     }
110
111     @Test
112     public void test_GetInfraActiveRequestsData_withEqualServiceInstanceId() {
113         final Map<String, String[]> values = new HashMap<>();
114         values.put(SERVICE_INSTANCE_ID, new String[] {QueryOperationType.EQ.name(), SERVICE_INSTANCE_ID_VALUE});
115         final List<InfraActiveRequests> actualRequests =
116                 objUnderTest.getInfraActiveRequests(values, START_TIME_IN_MILISEC, END_TIME_IN_MILISEC, 1);
117         assertFalse(actualRequests.isEmpty());
118
119         assertEquals(SERVICE_INSTANCE_ID_VALUE, actualRequests.get(0).getServiceInstanceId());
120     }
121
122     @Test
123     public void test_GetInfraActiveRequestsData_withLikeRequestID() {
124         final Map<String, String[]> values = new HashMap<>();
125         values.put(REQUEST_ID, new String[] {QueryOperationType.LIKE.name(), "00032ab7"});
126         final List<InfraActiveRequests> actualRequests =
127                 objUnderTest.getInfraActiveRequests(values, START_TIME_IN_MILISEC, END_TIME_IN_MILISEC, 1);
128         assertFalse(actualRequests.isEmpty());
129
130         assertEquals(REQUEST_ID_VALUE, actualRequests.get(0).getRequestId());
131         assertEquals(SERVICE_INSTANCE_ID_VALUE, actualRequests.get(0).getServiceInstanceId());
132     }
133
134
135     @Test
136     public void test_GetInfraActiveRequestsData_withLikeRequestIDAndEqualToServiceInstanceId() {
137         final Map<String, String[]> values = new HashMap<>();
138         values.put(REQUEST_ID, new String[] {QueryOperationType.LIKE.name(), "00032ab7"});
139         values.put(SERVICE_INSTANCE_ID, new String[] {QueryOperationType.EQ.name(), SERVICE_INSTANCE_ID_VALUE});
140         final List<InfraActiveRequests> actualRequests =
141                 objUnderTest.getInfraActiveRequests(values, START_TIME_IN_MILISEC, END_TIME_IN_MILISEC, 1);
142         assertFalse(actualRequests.isEmpty());
143
144         assertEquals(REQUEST_ID_VALUE, actualRequests.get(0).getRequestId());
145         assertEquals(SERVICE_INSTANCE_ID_VALUE, actualRequests.get(0).getServiceInstanceId());
146     }
147
148
149     @Test
150     public void test_GetInfraActiveRequestsData_withNotEqualAction() {
151         final Map<String, String[]> values = new HashMap<>();
152         values.put(ACTION, new String[] {QueryOperationType.NEQ.name(), "createInstance"});
153         final List<InfraActiveRequests> actualRequests =
154                 objUnderTest.getInfraActiveRequests(values, START_TIME_IN_MILISEC, END_TIME_IN_MILISEC, null);
155         assertFalse(actualRequests.isEmpty());
156         for (final InfraActiveRequests actualActiveRequests : actualRequests) {
157             assertNotEquals("createInstance", actualActiveRequests.getAction());
158         }
159     }
160
161
162     @Test
163     public void test_GetInfraActiveRequestsData_withNotEqualToServiceInstanceNameAndServiceInstanceIdNul() {
164         final Map<String, String[]> values = new HashMap<>();
165         values.put(ACTION, new String[] {QueryOperationType.NEQ.name(), "createInstance"});
166         values.put(SERVICE_INSTANCE_ID, new String[] {QueryOperationType.EQ.name(), SERVICE_INSTANCE_ID_VALUE});
167
168         final List<InfraActiveRequests> actualRequests =
169                 objUnderTest.getInfraActiveRequests(values, START_TIME_IN_MILISEC, END_TIME_IN_MILISEC, null);
170         assertFalse(actualRequests.isEmpty());
171         for (final InfraActiveRequests actualActiveRequests : actualRequests) {
172             assertNotEquals("createInstance", actualActiveRequests.getAction());
173             assertEquals(SERVICE_INSTANCE_ID_VALUE, actualActiveRequests.getServiceInstanceId());
174         }
175     }
176
177     @Test
178     public void test_GetInfraActiveRequestsData_withStartEndDateTimeNotEqualAction() {
179         final Map<String, String[]> values = new HashMap<>();
180         values.put(ACTION, new String[] {QueryOperationType.NEQ.name(), "createInstance"});
181         final List<InfraActiveRequests> actualRequests =
182                 objUnderTest.getInfraActiveRequests(values, START_TIME_IN_MILISEC, END_TIME_IN_MILISEC, null);
183         assertFalse(actualRequests.isEmpty());
184         for (final InfraActiveRequests actualActiveRequests : actualRequests) {
185             assertNotEquals("createInstance", actualActiveRequests.getAction());
186         }
187     }
188
189     @Test
190     public void test_GetInfraActiveRequestsData_withLimitNotEqualAction() {
191         final Map<String, String[]> values = new HashMap<>();
192         values.put(ACTION, new String[] {QueryOperationType.NEQ.name(), "createInstance"});
193         final List<InfraActiveRequests> actualRequests =
194                 objUnderTest.getInfraActiveRequests(values, START_TIME_IN_MILISEC, END_TIME_IN_MILISEC, MAX_LIMIT);
195         assertFalse(actualRequests.isEmpty());
196         for (final InfraActiveRequests actualActiveRequests : actualRequests) {
197             assertNotEquals("createInstance", actualActiveRequests.getAction());
198         }
199     }
200
201     @Test
202     public void test_GetInfraActiveRequestsData_withNullFilters() {
203         final List<InfraActiveRequests> actualRequests =
204                 objUnderTest.getInfraActiveRequests(null, START_TIME_IN_MILISEC, END_TIME_IN_MILISEC, MAX_LIMIT);
205         assertTrue(actualRequests.isEmpty());
206     }
207
208     @Test
209     public void checkInstanceNameDuplicateNullInstanceNameTest() {
210         final Map<String, String> instanceIdMap = new HashMap<>();
211         instanceIdMap.put("serviceInstanceId", "e05864f0-ab35-47d0-8be4-56fd9619ba3b");
212         final InfraActiveRequests results =
213                 objUnderTest.checkInstanceNameDuplicate((HashMap<String, String>) instanceIdMap, null, "vnf");
214         assertNull(results);
215     }
216
217     @Test
218     public void test_GetInfraActiveRequestsData_returnRecordWithNullEndTime() {
219         final Map<String, String[]> values = new HashMap<>();
220         values.put(SERVICE_INSTANCE_ID,
221                 new String[] {QueryOperationType.EQ.name(), "f7712652-b516-4925-a243-64550d26fd84"});
222         final List<InfraActiveRequests> actualRequests =
223                 objUnderTest.getInfraActiveRequests(values, START_TIME, END_TIME, null);
224         assertFalse(actualRequests.isEmpty());
225
226         assertEquals(3, actualRequests.size());
227         assertEquals("ShouldReturnInSearchQuery_1,ShouldReturnInSearchQuery_2,ShouldReturnInSearchQuery_3", 
228                         actualRequests.stream().map(item -> item.getServiceInstanceName()).collect(Collectors.joining(",")));
229     }
230
231 }