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