Merge "Reorder modifiers"
[so.git] / mso-api-handlers / mso-requests-db / src / test / java / org / openecomp / mso / requestsdb / RequestsDatabaseTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20 package org.openecomp.mso.requestsdb;
21
22
23 import mockit.Expectations;
24 import mockit.Mocked;
25 import mockit.integration.junit4.JMockit;
26 import org.hibernate.Criteria;
27 import org.hibernate.Query;
28 import org.hibernate.SQLQuery;
29 import org.hibernate.Session;
30 import org.junit.Ignore;
31 import org.junit.Test;
32 import org.junit.runner.RunWith;
33 import org.openecomp.mso.db.AbstractSessionFactoryManager;
34
35 import java.util.Arrays;
36 import java.util.List;
37
38 import static org.junit.Assert.assertEquals;
39 import static org.junit.Assert.assertTrue;
40
41 @RunWith(JMockit.class)
42 public class RequestsDatabaseTest {
43
44     RequestsDatabase requestsDatabase = RequestsDatabase.getInstance();
45
46     @Test
47     public void getInstanceTest() throws Exception {
48         RequestsDatabase instance = RequestsDatabase.getInstance();
49         assertEquals(RequestsDatabase.class, instance.getClass());
50     }
51
52     @Test
53     public void healthCheckTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
54                                 @Mocked Session session,
55                                 @Mocked SQLQuery query) throws Exception {
56         new Expectations() {{
57             sessionFactoryManager.getSessionFactory().openSession(); result = session;
58             session.createSQLQuery(" show tables "); result = query;
59             query.list(); result = Arrays.asList("table1", "table2");
60         }};
61
62         assertTrue(requestsDatabase.healthCheck());
63     }
64
65     @Test
66     public void updateInfraStatusTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
67                                       @Mocked Session session,
68                                       @Mocked Query query) throws Exception {
69         new Expectations() {{
70             sessionFactoryManager.getSessionFactory().openSession(); result = session;
71             query.executeUpdate(); result = 1;
72         }};
73         assertEquals(1, requestsDatabase.updateInfraStatus("123", "unknown", "unknown"));
74     }
75
76     @Test
77     public void updateInfraStatus1Test(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
78                                        @Mocked Session session,
79                                        @Mocked Query query) throws Exception {
80         new Expectations() {{
81             sessionFactoryManager.getSessionFactory().openSession(); result = session;
82             query.executeUpdate(); result = 1;
83         }};
84         assertEquals(1, requestsDatabase.updateInfraStatus("123", "unknown", 0, "unknown"));
85     }
86
87     @Test
88     public void updateInfraFinalStatusTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
89                                            @Mocked Session session,
90                                            @Mocked Query query) throws Exception {
91         new Expectations() {{
92             sessionFactoryManager.getSessionFactory().openSession(); result = session;
93             query.executeUpdate(); result = 1;
94         }};
95         assertEquals(1, requestsDatabase.updateInfraFinalStatus("123",
96                 "unknown",
97                 "statusMessage",
98                 0,
99                 "responsebody",
100                 "lastmodifiedby"));
101     }
102
103     @Test
104     public void getRequestFromInfraActiveTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
105                                               @Mocked Session session,
106                                               @Mocked Query query) throws Exception {
107         new Expectations() {{
108             sessionFactoryManager.getSessionFactory().openSession(); result = session;
109             query.uniqueResult(); result = new InfraActiveRequests("123", "action");
110         }};
111         assertEquals("123",
112                 requestsDatabase.getRequestFromInfraActive("123").getRequestId());
113     }
114
115     @Test
116     public void getOrchestrationFiltersFromInfraActiveTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
117                                                            @Mocked Session session,
118                                                            @Mocked Criteria criteria) throws Exception {
119
120         new Expectations() {{
121             sessionFactoryManager.getSessionFactory().openSession(); result = session;
122             session.createCriteria(InfraActiveRequests.class); result = criteria;
123             criteria.list(); result = Arrays.asList(new InfraActiveRequests("123", "action"));
124         }};
125         assertEquals(1,
126                 requestsDatabase.getRequestListFromInfraActive("queryattr",
127                         "queryvalue",
128                         "type").size());
129     }
130
131     @Test
132     public void getRequestListFromInfraActiveTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
133                                                   @Mocked Session session,
134                                                   @Mocked Query query) throws Exception {
135         new Expectations() {{
136             sessionFactoryManager.getSessionFactory().openSession(); result = session;
137             session.createQuery("from InfraActiveRequests where (requestId = :requestId OR clientRequestId = :requestId) and requestType = :requestType"); result = query;
138             query.uniqueResult(); result = new InfraActiveRequests("123", "action");
139         }};
140         assertEquals("123",
141                 requestsDatabase.getRequestFromInfraActive("123", "requestType").getRequestId());
142     }
143
144     @Test
145     public void getRequestFromInfraActive1Test(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
146                                                @Mocked Session session,
147                                                @Mocked Criteria criteria) throws Exception {
148         new Expectations() {{
149             sessionFactoryManager.getSessionFactory().openSession(); result = session;
150             session.createCriteria(InfraActiveRequests.class); result = criteria;
151             criteria.list(); result = Arrays.asList(new InfraActiveRequests());
152         }};
153         assertEquals(1,
154                 requestsDatabase.getRequestListFromInfraActive("queryAttr",
155                         "queryvalue",
156                         "type").size());
157     }
158
159     @Test
160     @Ignore // 1802 merge
161     public void checkDuplicateByVnfNameTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
162                                             @Mocked Session session,
163                                             @Mocked Query query) throws Exception {
164         new Expectations() {{
165             sessionFactoryManager.getSessionFactory().openSession(); result = session;
166             session.createQuery("from InfraActiveRequests where vnfName = :vnfName and action = :action and (requestStatus = 'PENDING' or requestStatus = 'IN_PROGRESS' or requestStatus = 'TIMEOUT') and requestType = :requestType ORDER BY startTime DESC"); result = query;
167             query.list(); result = Arrays.asList(new InfraActiveRequests("123", "action"));
168         }};
169         assertEquals("123",
170                 requestsDatabase.checkDuplicateByVnfName("vnfname",
171                         "action",
172                         "requesttype").getRequestId());
173     }
174
175     @Test
176     @Ignore // 1802 merge
177     public void checkDuplicateByVnfIdTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
178                                           @Mocked Session session,
179                                           @Mocked Query query) throws Exception {
180         new Expectations() {{
181             sessionFactoryManager.getSessionFactory().openSession(); result = session;
182             session.createQuery("from InfraActiveRequests where vnfId = :vnfId and action = :action and (requestStatus = 'PENDING' or requestStatus = 'IN_PROGRESS' or requestStatus = 'TIMEOUT') and requestType = :requestType ORDER BY startTime DESC"); result = query;
183             query.list(); result = Arrays.asList(new InfraActiveRequests("123", "action"));
184         }};
185         assertEquals("123",
186                 requestsDatabase.checkDuplicateByVnfId("vnfname",
187                         "action",
188                         "requesttype").getRequestId());
189     }
190
191     @Test
192     public void setMockDBTest() throws Exception {
193         requestsDatabase.setMockDB(null);
194     }
195
196     @Test
197     public void getSiteStatusTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
198                                   @Mocked Session session,
199                                   @Mocked Query query) throws Exception {
200         new Expectations() {{
201             sessionFactoryManager.getSessionFactory().openSession(); result = session;
202             session.createQuery("FROM SiteStatus WHERE siteName = :site_name"); result = query;
203             query.uniqueResult(); result = new SiteStatus();
204         }};
205         assertEquals(SiteStatus.class,
206                 requestsDatabase.getSiteStatus("site").getClass());
207     }
208
209     @Test
210     public void updateSiteStatusTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
211                                      @Mocked Session session,
212                                      @Mocked Query query) throws Exception {
213         new Expectations() {{
214             sessionFactoryManager.getSessionFactory().openSession(); result = session;
215             session.createQuery("FROM SiteStatus WHERE siteName = :site_name"); result = query;
216             query.uniqueResult(); result = new SiteStatus();
217         }};
218         requestsDatabase.updateSiteStatus("site", true);
219     }
220
221     @Test
222     public void getOperationStatusTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
223                                        @Mocked Session session,
224                                        @Mocked Query query) throws Exception {
225         new Expectations() {{
226             sessionFactoryManager.getSessionFactory().openSession(); result = session;
227             session.createQuery("FROM OperationStatus WHERE SERVICE_ID = :service_id and OPERATION_ID = :operation_id"); result = query;
228             query.uniqueResult(); result = new OperationStatus();
229         }};
230         assertEquals(OperationStatus.class,
231                 requestsDatabase.getOperationStatus("123",
232                         "Unknown").getClass());
233     }
234
235     @Test
236     public void getOperationStatusByServiceIdTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
237                                                   @Mocked Session session,
238                                                   @Mocked Query query) throws Exception {
239         new Expectations() {{
240             sessionFactoryManager.getSessionFactory().openSession(); result = session;
241             session.createQuery("FROM OperationStatus WHERE SERVICE_ID = :service_id order by OPERATE_AT desc"); result = query;
242             List<Object>list = query.list(); result = new OperationStatus();
243         }};
244         assertEquals(OperationStatus.class,
245                 requestsDatabase.getOperationStatusByServiceId("123").getClass());
246     }
247
248     @Test
249     public void getOperationStatusByServiceNameTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
250                                                     @Mocked Session session,
251                                                     @Mocked Query query) throws Exception {
252         new Expectations() {{
253             sessionFactoryManager.getSessionFactory().openSession(); result = session;
254             session.createQuery("FROM OperationStatus WHERE SERVICE_NAME = :service_name"); result = query;
255             query.uniqueResult(); result = new OperationStatus();
256         }};
257         assertEquals(OperationStatus.class,
258                 requestsDatabase.getOperationStatusByServiceName("servicename").getClass());
259     }
260
261     @Test
262     public void updateOperationStatusTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
263                                           @Mocked Session session,
264                                           @Mocked Query query) throws Exception {
265         new Expectations() {{
266             sessionFactoryManager.getSessionFactory().openSession(); result = session;
267             session.createQuery("FROM OperationStatus WHERE SERVICE_ID = :service_id and OPERATION_ID = :operation_id"); result = query;
268             query.uniqueResult(); result = new OperationStatus();
269         }};
270         requestsDatabase.updateOperationStatus(new OperationStatus());
271     }
272
273     @Test
274     public void getResourceOperationStatusTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
275                                                @Mocked Session session,
276                                                @Mocked Query query) throws Exception {
277         new Expectations() {{
278             sessionFactoryManager.getSessionFactory().openSession(); result = session;
279             session.createQuery("FROM ResourceOperationStatus WHERE serviceId = :service_id and operationId = :operation_id and resourceTemplateUUID= :uuid"); result = query;
280             query.uniqueResult(); result = new ResourceOperationStatus();
281         }};
282         assertEquals(ResourceOperationStatus.class,
283                 requestsDatabase.getResourceOperationStatus("serviceId",
284                         "operationid",
285                         "123-uuid").getClass());
286     }
287 }