198e603f0abf7657000daf2faab210921beab1ec
[so.git] /
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();
56             result = session;
57             session.createSQLQuery(" show tables ");
58             result = query;
59             query.list();
60             result = Arrays.asList("table1", "table2");
61         }};
62
63         assertTrue(requestsDatabase.healthCheck());
64     }
65
66     @Test
67     public void updateInfraStatusTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
68                                       @Mocked Session session,
69                                       @Mocked Query query) throws Exception {
70         new Expectations() {{
71             sessionFactoryManager.getSessionFactory().openSession();
72             result = session;
73             query.executeUpdate();
74             result = 1;
75         }};
76         assertEquals(1, requestsDatabase.updateInfraStatus("123", "unknown", "unknown"));
77     }
78
79     @Test
80     public void updateInfraStatus1Test(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
81                                        @Mocked Session session,
82                                        @Mocked Query query) throws Exception {
83         new Expectations() {{
84             sessionFactoryManager.getSessionFactory().openSession();
85             result = session;
86             query.executeUpdate();
87             result = 1;
88         }};
89         assertEquals(1, requestsDatabase.updateInfraStatus("123", "unknown", 0, "unknown"));
90     }
91
92     @Test
93     public void updateInfraFinalStatusTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
94                                            @Mocked Session session,
95                                            @Mocked Query query) throws Exception {
96         new Expectations() {{
97             sessionFactoryManager.getSessionFactory().openSession();
98             result = session;
99             query.executeUpdate();
100             result = 1;
101         }};
102         assertEquals(1, requestsDatabase.updateInfraFinalStatus("123",
103                 "unknown",
104                 "statusMessage",
105                 0,
106                 "responsebody",
107                 "lastmodifiedby"));
108     }
109
110     @Test
111     public void getRequestFromInfraActiveTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
112                                               @Mocked Session session,
113                                               @Mocked Query query) throws Exception {
114         new Expectations() {{
115             sessionFactoryManager.getSessionFactory().openSession();
116             result = session;
117             query.uniqueResult();
118             result = new InfraActiveRequests("123", "action");
119         }};
120         assertEquals("123",
121                 requestsDatabase.getRequestFromInfraActive("123").getRequestId());
122     }
123
124     @Test
125     public void getOrchestrationFiltersFromInfraActiveTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
126                                                            @Mocked Session session,
127                                                            @Mocked Criteria criteria) throws Exception {
128
129         new Expectations() {{
130             sessionFactoryManager.getSessionFactory().openSession();
131             result = session;
132             session.createCriteria(InfraActiveRequests.class);
133             result = criteria;
134             criteria.list();
135             result = Arrays.asList(new InfraActiveRequests("123", "action"));
136         }};
137         assertEquals(1,
138                 requestsDatabase.getRequestListFromInfraActive("queryattr",
139                         "queryvalue",
140                         "type").size());
141     }
142
143     @Test
144     public void getRequestListFromInfraActiveTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
145                                                   @Mocked Session session,
146                                                   @Mocked Query query) throws Exception {
147         new Expectations() {{
148             sessionFactoryManager.getSessionFactory().openSession();
149             result = session;
150             session.createQuery("from InfraActiveRequests where (requestId = :requestId OR clientRequestId = :requestId) and requestType = :requestType");
151             result = query;
152             query.uniqueResult();
153             result = new InfraActiveRequests("123", "action");
154         }};
155         assertEquals("123",
156                 requestsDatabase.getRequestFromInfraActive("123", "requestType").getRequestId());
157     }
158
159     @Test
160     public void getRequestFromInfraActive1Test(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
161                                                @Mocked Session session,
162                                                @Mocked Criteria criteria) throws Exception {
163         new Expectations() {{
164             sessionFactoryManager.getSessionFactory().openSession();
165             result = session;
166             session.createCriteria(InfraActiveRequests.class);
167             result = criteria;
168             criteria.list();
169             result = Arrays.asList(new InfraActiveRequests());
170         }};
171         assertEquals(1,
172                 requestsDatabase.getRequestListFromInfraActive("queryAttr",
173                         "queryvalue",
174                         "type").size());
175     }
176
177     @Test
178     public void checkDuplicateByVnfNameTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
179                                             @Mocked Session session,
180                                             @Mocked Query query) throws Exception {
181         new Expectations() {{
182             sessionFactoryManager.getSessionFactory().openSession();
183             result = session;
184             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");
185             result = query;
186             query.list();
187             result = Arrays.asList(new InfraActiveRequests("123", "action"));
188         }};
189         assertEquals("123",
190                 requestsDatabase.checkDuplicateByVnfName("vnfname",
191                         "action",
192                         "requesttype").getRequestId());
193     }
194
195     @Test
196     public void checkDuplicateByVnfIdTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
197                                           @Mocked Session session,
198                                           @Mocked Query query) throws Exception {
199         new Expectations() {{
200             sessionFactoryManager.getSessionFactory().openSession();
201             result = session;
202             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");
203             result = query;
204             query.list();
205             result = Arrays.asList(new InfraActiveRequests("123", "action"));
206         }};
207         assertEquals("123",
208                 requestsDatabase.checkDuplicateByVnfId("vnfname",
209                         "action",
210                         "requesttype").getRequestId());
211     }
212
213     @Test
214     public void setMockDBTest() throws Exception {
215         requestsDatabase.setMockDB(null);
216     }
217
218     @Test
219     public void getSiteStatusTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
220                                   @Mocked Session session,
221                                   @Mocked Query query) throws Exception {
222         new Expectations() {{
223             sessionFactoryManager.getSessionFactory().openSession();
224             result = session;
225             session.createQuery("FROM SiteStatus WHERE siteName = :site_name");
226             result = query;
227             query.uniqueResult();
228             result = new SiteStatus();
229         }};
230         assertEquals(SiteStatus.class,
231                 requestsDatabase.getSiteStatus("site").getClass());
232     }
233
234     @Test
235     public void updateSiteStatusTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
236                                      @Mocked Session session,
237                                      @Mocked Query query) throws Exception {
238         new Expectations() {{
239             sessionFactoryManager.getSessionFactory().openSession();
240             result = session;
241             session.createQuery("FROM SiteStatus WHERE siteName = :site_name");
242             result = query;
243             query.uniqueResult();
244             result = new SiteStatus();
245         }};
246         requestsDatabase.updateSiteStatus("site", true);
247     }
248
249     @Test
250     public void getOperationStatusTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
251                                        @Mocked Session session,
252                                        @Mocked Query query) throws Exception {
253         new Expectations() {{
254             sessionFactoryManager.getSessionFactory().openSession();
255             result = session;
256             session.createQuery("FROM OperationStatus WHERE SERVICE_ID = :service_id and OPERATION_ID = :operation_id");
257             result = query;
258             query.uniqueResult();
259             result = new OperationStatus();
260         }};
261         assertEquals(OperationStatus.class,
262                 requestsDatabase.getOperationStatus("123",
263                         "Unknown").getClass());
264     }
265
266     @Test
267     public void getOperationStatusByServiceIdTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
268                                                   @Mocked Session session,
269                                                   @Mocked Query query) throws Exception {
270         new Expectations() {{
271             sessionFactoryManager.getSessionFactory().openSession();
272             result = session;
273             session.createQuery("FROM OperationStatus WHERE SERVICE_ID = :service_id");
274             result = query;
275             query.uniqueResult();
276             result = new OperationStatus();
277         }};
278         assertEquals(OperationStatus.class,
279                 requestsDatabase.getOperationStatusByServiceId("123").getClass());
280     }
281
282     @Test
283     public void getOperationStatusByServiceNameTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
284                                                     @Mocked Session session,
285                                                     @Mocked Query query) throws Exception {
286         new Expectations() {{
287             sessionFactoryManager.getSessionFactory().openSession();
288             result = session;
289             session.createQuery("FROM OperationStatus WHERE SERVICE_NAME = :service_name");
290             result = query;
291             query.uniqueResult();
292             result = new OperationStatus();
293         }};
294         assertEquals(OperationStatus.class,
295                 requestsDatabase.getOperationStatusByServiceName("servicename").getClass());
296     }
297
298     @Test
299     public void updateOperationStatusTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
300                                           @Mocked Session session,
301                                           @Mocked Query query) throws Exception {
302         new Expectations() {{
303             sessionFactoryManager.getSessionFactory().openSession();
304             result = session;
305             session.createQuery("FROM OperationStatus WHERE SERVICE_ID = :service_id and OPERATION_ID = :operation_id");
306             result = query;
307             query.uniqueResult();
308             result = new OperationStatus();
309         }};
310         requestsDatabase.updateOperationStatus(new OperationStatus());
311     }
312
313     @Test
314     public void getResourceOperationStatusTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
315                                                @Mocked Session session,
316                                                @Mocked Query query) throws Exception {
317         new Expectations() {{
318             sessionFactoryManager.getSessionFactory().openSession();
319             result = session;
320             session.createQuery("FROM ResourceOperationStatus WHERE serviceId = :service_id and operationId = :operation_id and resourceTemplateUUID= :uuid");
321             result = query;
322             query.uniqueResult();
323             result = new ResourceOperationStatus();
324         }};
325         assertEquals(ResourceOperationStatus.class,
326                 requestsDatabase.getResourceOperationStatus("serviceId",
327                         "operationid",
328                         "123-uuid").getClass());
329     }
330 }