Fix policycreation test
[policy/engine.git] / ONAP-PAP-REST / src / test / java / org / onap / policy / pap / xacml / rest / policycontroller / PolicyCreationTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP-PAP-REST
4  * ================================================================================
5  * Copyright (C) 2019-2020 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
21 package org.onap.policy.pap.xacml.rest.policycontroller;
22
23 import static org.assertj.core.api.Assertions.assertThat;
24 import static org.junit.Assert.assertEquals;
25 import static org.mockito.ArgumentMatchers.anyString;
26 import static org.mockito.ArgumentMatchers.eq;
27 import java.util.ArrayList;
28 import java.util.LinkedHashMap;
29 import java.util.LinkedList;
30 import java.util.List;
31 import javax.servlet.http.HttpServletRequest;
32 import javax.servlet.http.HttpServletResponse;
33 import org.hibernate.Criteria;
34 import org.hibernate.Session;
35 import org.hibernate.SessionFactory;
36 import org.junit.Test;
37 import org.mockito.Mockito;
38 import org.onap.policy.pap.xacml.rest.components.PolicyDbDao;
39 import org.onap.policy.pap.xacml.rest.components.PolicyDbDaoTransaction;
40 import org.onap.policy.rest.adapter.PolicyRestAdapter;
41 import org.onap.policy.rest.dao.CommonClassDao;
42 import org.onap.policy.rest.jpa.PolicyDbDaoEntity;
43 import org.onap.policy.rest.jpa.PolicyVersion;
44 import org.powermock.reflect.Whitebox;
45 import org.springframework.http.HttpStatus;
46 import org.springframework.http.ResponseEntity;
47 import org.springframework.http.converter.HttpMessageNotReadableException;
48 import org.springframework.mock.web.MockHttpServletResponse;
49 import com.mockrunner.mock.web.MockHttpServletRequest;
50
51 public class PolicyCreationTest {
52     @Test
53     public void testCreation() {
54         CommonClassDao dao = Mockito.mock(CommonClassDao.class);
55         PolicyVersion version = new PolicyVersion();
56         version.setPolicyName("policyname");
57         Mockito.when(dao.getEntityItem(eq(PolicyVersion.class), eq("policyName"), anyString())).thenReturn(version);
58         PolicyCreation.setCommonClassDao(dao);
59         assertEquals(dao, PolicyCreation.getCommonClassDao());
60         PolicyCreation creation = new PolicyCreation(dao);
61         assertEquals(dao, PolicyCreation.getCommonClassDao());
62
63         HttpServletRequest req = new MockHttpServletRequest();
64         Exception cause = new Exception("oops");
65         HttpMessageNotReadableException exception = new HttpMessageNotReadableException("oops", cause);
66         assertEquals(HttpStatus.BAD_REQUEST,
67                 creation.messageNotReadableExceptionHandler(req, exception).getStatusCode());
68
69         HttpServletResponse response = new MockHttpServletResponse();
70         PolicyRestAdapter policyData = new PolicyRestAdapter();
71         policyData.setPolicyType("Config");
72         policyData.setConfigPolicyType("ClosedLoop_Fault");
73         policyData.setDomainDir("domain");
74         policyData.setPolicyName("policyname");
75         ResponseEntity<String> responseEntity = creation.savePolicy(policyData, response);
76         assertThat(responseEntity).isNotNull();
77
78         version.setHigherVersion(1);
79         responseEntity = creation.savePolicy(policyData, response);
80         assertThat(responseEntity).isNotNull();
81
82         policyData.setEditPolicy(true);
83         responseEntity = creation.savePolicy(policyData, response);
84         assertThat(responseEntity).isNotNull();
85
86         policyData.setEditPolicy(false);
87         version.setHigherVersion(0);
88         responseEntity = creation.savePolicy(policyData, response);
89         assertThat(responseEntity).isNotNull();
90
91         policyData.setEditPolicy(true);
92         responseEntity = creation.savePolicy(policyData, response);
93         assertThat(responseEntity).isNotNull();
94
95         version.setHigherVersion(1);
96         policyData.setConfigPolicyType("Firewall Config");
97         responseEntity = creation.savePolicy(policyData, response);
98         assertThat(responseEntity).isNotNull();
99
100         policyData.setConfigPolicyType("BRMS_Raw");
101         responseEntity = creation.savePolicy(policyData, response);
102         assertThat(responseEntity).isNotNull();
103
104         policyData.setConfigPolicyType("BRMS_Param");
105         responseEntity = creation.savePolicy(policyData, response);
106         assertThat(responseEntity).isNotNull();
107
108         policyData.setConfigPolicyType("Base");
109         Mockito.when(policyData.getRuleData()).thenReturn(new LinkedHashMap<>());
110
111         SessionFactory mockSessionFactory = Mockito.mock(SessionFactory.class);
112         Session mockSession = Mockito.mock(Session.class);
113         Criteria mockCriteria = Mockito.mock(Criteria.class);
114         List<?> policyDbDaoEntityList = new LinkedList<>();
115
116         Mockito.when(mockSessionFactory.openSession()).thenReturn(mockSession);
117         Mockito.when(mockSession.createCriteria(PolicyDbDaoEntity.class)).thenReturn(mockCriteria);
118         Mockito.when(mockCriteria.list()).thenReturn(policyDbDaoEntityList);
119         Whitebox.setInternalState(PolicyDbDao.class, "sessionfactory", mockSessionFactory);
120
121         PolicyDbDao mockPolicyDbDao = Mockito.mock(PolicyDbDao.class);
122         PolicyDbDaoTransaction mockTransaction = Mockito.mock(PolicyDbDaoTransaction.class);
123         Mockito.when(mockPolicyDbDao.getNewTransaction()).thenReturn(mockTransaction);
124
125         responseEntity = creation.savePolicy(policyData, response);
126         assertThat(responseEntity).isNotNull();
127
128         policyData.setConfigPolicyType("ClosedLoop_PM");
129         responseEntity = creation.savePolicy(policyData, response);
130         assertThat(responseEntity).isNotNull();
131
132         policyData.setConfigPolicyType("Micro Service");
133         responseEntity = creation.savePolicy(policyData, response);
134         assertThat(responseEntity).isNotNull();
135
136         policyData.setConfigPolicyType("Optimization");
137         responseEntity = creation.savePolicy(policyData, response);
138         assertThat(responseEntity).isNotNull();
139
140         policyData.setPolicyType("Action");
141         List<Object> choices = new ArrayList<>();
142         policyData.setRuleAlgorithmschoices(choices);
143         responseEntity = creation.savePolicy(policyData, response);
144         assertThat(responseEntity).isNotNull();
145
146         policyData.setPolicyType("Decision");
147         List<Object> settings = new ArrayList<>();
148         policyData.setSettings(settings);
149         responseEntity = creation.savePolicy(policyData, response);
150         assertThat(responseEntity).isNotNull();
151     }
152 }