0bb126fa4213e54a87656875f2bd28cd8fd660e4
[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.Test;
31 import org.junit.runner.RunWith;
32 import org.openecomp.mso.db.AbstractSessionFactoryManager;
33
34 import java.util.Arrays;
35
36 import static org.junit.Assert.assertEquals;
37 import static org.junit.Assert.assertTrue;
38
39 @RunWith(JMockit.class)
40 public class RequestsDatabaseTest {
41
42     RequestsDatabase requestsDatabase = RequestsDatabase.getInstance();
43
44     @Test
45     public void getInstanceTest() throws Exception {
46         RequestsDatabase instance = RequestsDatabase.getInstance();
47         assertEquals(RequestsDatabase.class, instance.getClass());
48     }
49
50     @Test
51     public void healthCheckTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
52                                 @Mocked Session session,
53                                 @Mocked SQLQuery query) throws Exception {
54         new Expectations() {{
55             sessionFactoryManager.getSessionFactory().openSession(); result = session;
56             session.createSQLQuery(" show tables "); result = query;
57             query.list(); result = Arrays.asList("table1", "table2");
58         }};
59
60         assertTrue(requestsDatabase.healthCheck());
61     }
62
63     @Test
64     public void updateInfraStatusTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
65                                       @Mocked Session session,
66                                       @Mocked Query query) throws Exception {
67         new Expectations() {{
68             sessionFactoryManager.getSessionFactory().openSession(); result = session;
69             query.executeUpdate(); result = 1;
70         }};
71         assertEquals(1, requestsDatabase.updateInfraStatus("123", "unknown", "unknown"));
72     }
73
74     @Test
75     public void updateInfraStatus1Test(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
76                                        @Mocked Session session,
77                                        @Mocked Query query) throws Exception {
78         new Expectations() {{
79             sessionFactoryManager.getSessionFactory().openSession(); result = session;
80             query.executeUpdate(); result = 1;
81         }};
82         assertEquals(1, requestsDatabase.updateInfraStatus("123", "unknown", 0, "unknown"));
83     }
84
85     @Test
86     public void updateInfraFinalStatusTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
87                                            @Mocked Session session,
88                                            @Mocked Query query) throws Exception {
89         new Expectations() {{
90             sessionFactoryManager.getSessionFactory().openSession(); result = session;
91             query.executeUpdate(); result = 1;
92         }};
93         assertEquals(1, requestsDatabase.updateInfraFinalStatus("123",
94                 "unknown",
95                 "statusMessage",
96                 0,
97                 "responsebody",
98                 "lastmodifiedby"));
99     }
100
101     @Test
102     public void getRequestFromInfraActiveTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
103                                               @Mocked Session session,
104                                               @Mocked Query query) throws Exception {
105         new Expectations() {{
106             sessionFactoryManager.getSessionFactory().openSession(); result = session;
107             query.uniqueResult(); result = new InfraActiveRequests("123", "action");
108         }};
109         assertEquals("123",
110                 requestsDatabase.getRequestFromInfraActive("123").getRequestId());
111     }
112
113     @Test
114     public void getOrchestrationFiltersFromInfraActiveTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
115                                                            @Mocked Session session,
116                                                            @Mocked Criteria criteria) throws Exception {
117
118         new Expectations() {{
119             sessionFactoryManager.getSessionFactory().openSession(); result = session;
120             session.createCriteria(InfraActiveRequests.class); result = criteria;
121             criteria.list(); result = Arrays.asList(new InfraActiveRequests("123", "action"));
122         }};
123         assertEquals(1,
124                 requestsDatabase.getRequestListFromInfraActive("queryattr",
125                         "queryvalue",
126                         "type").size());
127     }
128
129     @Test
130     public void getRequestListFromInfraActiveTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
131                                                   @Mocked Session session,
132                                                   @Mocked Query query) throws Exception {
133         new Expectations() {{
134             sessionFactoryManager.getSessionFactory().openSession(); result = session;
135             session.createQuery("from InfraActiveRequests where (requestId = :requestId OR clientRequestId = :requestId) and requestType = :requestType"); result = query;
136             query.uniqueResult(); result = new InfraActiveRequests("123", "action");
137         }};
138         assertEquals("123",
139                 requestsDatabase.getRequestFromInfraActive("123", "requestType").getRequestId());
140     }
141
142     @Test
143     public void getRequestFromInfraActive1Test(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
144                                                @Mocked Session session,
145                                                @Mocked Criteria criteria) throws Exception {
146         new Expectations() {{
147             sessionFactoryManager.getSessionFactory().openSession(); result = session;
148             session.createCriteria(InfraActiveRequests.class); result = criteria;
149             criteria.list(); result = Arrays.asList(new InfraActiveRequests());
150         }};
151         assertEquals(1,
152                 requestsDatabase.getRequestListFromInfraActive("queryAttr",
153                         "queryvalue",
154                         "type").size());
155     }
156
157     @Test
158     public void checkDuplicateByVnfNameTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
159                                             @Mocked Session session,
160                                             @Mocked Query query) throws Exception {
161         new Expectations() {{
162             sessionFactoryManager.getSessionFactory().openSession(); result = session;
163             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;
164             query.list(); result = Arrays.asList(new InfraActiveRequests("123", "action"));
165         }};
166         assertEquals("123",
167                 requestsDatabase.checkDuplicateByVnfName("vnfname",
168                         "action",
169                         "requesttype").getRequestId());
170     }
171
172     @Test
173     public void checkDuplicateByVnfIdTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
174                                           @Mocked Session session,
175                                           @Mocked Query query) throws Exception {
176         new Expectations() {{
177             sessionFactoryManager.getSessionFactory().openSession(); result = session;
178             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;
179             query.list(); result = Arrays.asList(new InfraActiveRequests("123", "action"));
180         }};
181         assertEquals("123",
182                 requestsDatabase.checkDuplicateByVnfId("vnfname",
183                         "action",
184                         "requesttype").getRequestId());
185     }
186
187     @Test
188     public void setMockDBTest() throws Exception {
189         requestsDatabase.setMockDB(null);
190     }
191
192     @Test
193     public void getSiteStatusTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
194                                   @Mocked Session session,
195                                   @Mocked Query query) throws Exception {
196         new Expectations() {{
197             sessionFactoryManager.getSessionFactory().openSession(); result = session;
198             session.createQuery("FROM SiteStatus WHERE siteName = :site_name"); result = query;
199             query.uniqueResult(); result = new SiteStatus();
200         }};
201         assertEquals(SiteStatus.class,
202                 requestsDatabase.getSiteStatus("site").getClass());
203     }
204
205     @Test
206     public void updateSiteStatusTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
207                                      @Mocked Session session,
208                                      @Mocked Query query) throws Exception {
209         new Expectations() {{
210             sessionFactoryManager.getSessionFactory().openSession(); result = session;
211             session.createQuery("FROM SiteStatus WHERE siteName = :site_name"); result = query;
212             query.uniqueResult(); result = new SiteStatus();
213         }};
214         requestsDatabase.updateSiteStatus("site", true);
215     }
216
217     @Test
218     public void getOperationStatusTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
219                                        @Mocked Session session,
220                                        @Mocked Query query) throws Exception {
221         new Expectations() {{
222             sessionFactoryManager.getSessionFactory().openSession(); result = session;
223             session.createQuery("FROM OperationStatus WHERE SERVICE_ID = :service_id and OPERATION_ID = :operation_id"); result = query;
224             query.uniqueResult(); result = new OperationStatus();
225         }};
226         assertEquals(OperationStatus.class,
227                 requestsDatabase.getOperationStatus("123",
228                         "Unknown").getClass());
229     }
230
231     @Test
232     public void getOperationStatusByServiceIdTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
233                                                   @Mocked Session session,
234                                                   @Mocked Query query) throws Exception {
235         new Expectations() {{
236             sessionFactoryManager.getSessionFactory().openSession(); result = session;
237             session.createQuery("FROM OperationStatus WHERE SERVICE_ID = :service_id"); result = query;
238             query.uniqueResult(); result = new OperationStatus();
239         }};
240         assertEquals(OperationStatus.class,
241                 requestsDatabase.getOperationStatusByServiceId("123").getClass());
242     }
243
244     @Test
245     public void getOperationStatusByServiceNameTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
246                                                     @Mocked Session session,
247                                                     @Mocked Query query) throws Exception {
248         new Expectations() {{
249             sessionFactoryManager.getSessionFactory().openSession(); result = session;
250             session.createQuery("FROM OperationStatus WHERE SERVICE_NAME = :service_name"); result = query;
251             query.uniqueResult(); result = new OperationStatus();
252         }};
253         assertEquals(OperationStatus.class,
254                 requestsDatabase.getOperationStatusByServiceName("servicename").getClass());
255     }
256
257     @Test
258     public void updateOperationStatusTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
259                                           @Mocked Session session,
260                                           @Mocked Query query) throws Exception {
261         new Expectations() {{
262             sessionFactoryManager.getSessionFactory().openSession(); result = session;
263             session.createQuery("FROM OperationStatus WHERE SERVICE_ID = :service_id and OPERATION_ID = :operation_id"); result = query;
264             query.uniqueResult(); result = new OperationStatus();
265         }};
266         requestsDatabase.updateOperationStatus(new OperationStatus());
267     }
268
269     @Test
270     public void getResourceOperationStatusTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
271                                                @Mocked Session session,
272                                                @Mocked Query query) throws Exception {
273         new Expectations() {{
274             sessionFactoryManager.getSessionFactory().openSession(); result = session;
275             session.createQuery("FROM ResourceOperationStatus WHERE serviceId = :service_id and operationId = :operation_id and resourceTemplateUUID= :uuid"); result = query;
276             query.uniqueResult(); result = new ResourceOperationStatus();
277         }};
278         assertEquals(ResourceOperationStatus.class,
279                 requestsDatabase.getResourceOperationStatus("serviceId",
280                         "operationid",
281                         "123-uuid").getClass());
282     }
283 }