2 * ============LICENSE_START=======================================================
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
21 package org.onap.policy.pap.xacml.rest.policycontroller;
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;
51 public class PolicyCreationTest {
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());
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());
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();
78 version.setHigherVersion(1);
79 responseEntity = creation.savePolicy(policyData, response);
80 assertThat(responseEntity).isNotNull();
82 policyData.setEditPolicy(true);
83 responseEntity = creation.savePolicy(policyData, response);
84 assertThat(responseEntity).isNotNull();
86 policyData.setEditPolicy(false);
87 version.setHigherVersion(0);
88 responseEntity = creation.savePolicy(policyData, response);
89 assertThat(responseEntity).isNotNull();
91 policyData.setEditPolicy(true);
92 responseEntity = creation.savePolicy(policyData, response);
93 assertThat(responseEntity).isNotNull();
95 version.setHigherVersion(1);
96 policyData.setConfigPolicyType("Firewall Config");
97 responseEntity = creation.savePolicy(policyData, response);
98 assertThat(responseEntity).isNotNull();
100 policyData.setConfigPolicyType("BRMS_Raw");
101 responseEntity = creation.savePolicy(policyData, response);
102 assertThat(responseEntity).isNotNull();
104 policyData.setConfigPolicyType("BRMS_Param");
105 responseEntity = creation.savePolicy(policyData, response);
106 assertThat(responseEntity).isNotNull();
108 policyData.setConfigPolicyType("Base");
109 Mockito.when(policyData.getRuleData()).thenReturn(new LinkedHashMap<>());
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<>();
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);
121 PolicyDbDao mockPolicyDbDao = Mockito.mock(PolicyDbDao.class);
122 PolicyDbDaoTransaction mockTransaction = Mockito.mock(PolicyDbDaoTransaction.class);
123 Mockito.when(mockPolicyDbDao.getNewTransaction()).thenReturn(mockTransaction);
125 responseEntity = creation.savePolicy(policyData, response);
126 assertThat(responseEntity).isNotNull();
128 policyData.setConfigPolicyType("ClosedLoop_PM");
129 responseEntity = creation.savePolicy(policyData, response);
130 assertThat(responseEntity).isNotNull();
132 policyData.setConfigPolicyType("Micro Service");
133 responseEntity = creation.savePolicy(policyData, response);
134 assertThat(responseEntity).isNotNull();
136 policyData.setConfigPolicyType("Optimization");
137 responseEntity = creation.savePolicy(policyData, response);
138 assertThat(responseEntity).isNotNull();
140 policyData.setPolicyType("Action");
141 List<Object> choices = new ArrayList<>();
142 policyData.setRuleAlgorithmschoices(choices);
143 responseEntity = creation.savePolicy(policyData, response);
144 assertThat(responseEntity).isNotNull();
146 policyData.setPolicyType("Decision");
147 List<Object> settings = new ArrayList<>();
148 policyData.setSettings(settings);
149 responseEntity = creation.savePolicy(policyData, response);
150 assertThat(responseEntity).isNotNull();