import java.util.Set;
import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang.StringUtils;
import org.onap.policy.common.logging.flexlogger.FlexLogger;
import org.onap.policy.common.logging.flexlogger.Logger;
import org.onap.policy.rest.XACMLRestProperties;
/**
* Implementation of the PAPEngine interface that communicates with a PAP engine in a remote servlet through a RESTful
- * interface
+ * interface.
*
*
*/
private static final Logger LOGGER = FlexLogger.getLogger(RESTfulPAPEngine.class);
private static final String GROUP_ID = "groupId=";
+ private static final String UNABLE_MSG = "Unable to PUT policy '";
+ private static final String EXCEPTION_MSG = "', e:";
+ private static final String ERROR_MSG = "error";
+ private static final String PDPID_MSG = "pdpId=";
//
// URL of the PAP Servlet that this Admin Console talks to
//
- private String papServletURLString;
+ private String papServletUrlString;
/**
- * Set up link with PAP Servlet and get our initial set of Groups
+ * Set up link with PAP Servlet and get our initial set of Groups.
*
* @throws PAPException When failing to register with PAP
*/
- public RESTfulPAPEngine(String myURLString) throws PAPException {
+ public RESTfulPAPEngine(String myUrlString) throws PAPException {
//
// Get our URL to the PAP servlet
//
- this.papServletURLString = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_URL);
- if (this.papServletURLString == null || this.papServletURLString.length() == 0) {
- String message =
- "The property 'POLICYENGINE_ADMIN_ACTIVE' was not set during installation. Admin Console cannot call PAP.";
+ this.papServletUrlString = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_URL);
+ if (StringUtils.isBlank(this.papServletUrlString)) {
+ String message = "The property 'POLICYENGINE_ADMIN_ACTIVE' was not set during installation. "
+ + "Admin Console cannot call PAP.";
LOGGER.error(message);
throw new PAPException(message);
}
//
// register this Admin Console with the PAP Servlet to get updates
//
- Object newURL = sendToPAP("PUT", null, null, null, "adminConsoleURL=" + myURLString);
- if (newURL != null) {
+ Object newUrl = sendToPap("PUT", null, null, null, "adminConsoleURL=" + myUrlString);
+ if (newUrl != null) {
// assume this was a re-direct and try again
- LOGGER.warn("Redirecting to '" + newURL + "'");
- this.papServletURLString = (String) newURL;
- newURL = sendToPAP("PUT", null, null, null, "adminConsoleURL=" + myURLString);
- if (newURL != null) {
- LOGGER.error("Failed to redirect to " + this.papServletURLString);
+ LOGGER.warn("Redirecting to '" + newUrl + "'");
+ this.papServletUrlString = (String) newUrl;
+ newUrl = sendToPap("PUT", null, null, null, "adminConsoleURL=" + myUrlString);
+ if (newUrl != null) {
+ LOGGER.error("Failed to redirect to " + this.papServletUrlString);
throw new PAPException("Failed to register with PAP");
}
}
@Override
public OnapPDPGroup getDefaultGroup() throws PAPException {
- return (OnapPDPGroup) sendToPAP("GET", null, null, StdPDPGroup.class, GROUP_ID, "default=");
+ return (OnapPDPGroup) sendToPap("GET", null, null, StdPDPGroup.class, GROUP_ID, "default=");
}
@Override
public void setDefaultGroup(OnapPDPGroup group) throws PAPException {
- sendToPAP("POST", null, null, null, GROUP_ID + group.getId(), "default=true");
+ sendToPap("POST", null, null, null, GROUP_ID + group.getId(), "default=true");
}
@SuppressWarnings("unchecked")
@Override
public Set<OnapPDPGroup> getOnapPDPGroups() throws PAPException {
Set<OnapPDPGroup> newGroupSet;
- newGroupSet = (Set<OnapPDPGroup>) this.sendToPAP("GET", null, Set.class, StdPDPGroup.class, GROUP_ID);
+ newGroupSet = (Set<OnapPDPGroup>) this.sendToPap("GET", null, Set.class, StdPDPGroup.class, GROUP_ID);
return Collections.unmodifiableSet(newGroupSet);
}
@Override
public OnapPDPGroup getGroup(String id) throws PAPException {
- return (OnapPDPGroup) sendToPAP("GET", null, null, StdPDPGroup.class, GROUP_ID + id);
+ return (OnapPDPGroup) sendToPap("GET", null, null, StdPDPGroup.class, GROUP_ID + id);
}
@Override
throw new PAPException("Unable to send name or description to PAP: " + e.getMessage() + e);
}
- this.sendToPAP("POST", null, null, null, GROUP_ID, "groupName=" + escapedName,
+ this.sendToPap("POST", null, null, null, GROUP_ID, "groupName=" + escapedName,
"groupDescription=" + escapedDescription);
}
- /**
- * Update the configuration on the PAP for a single Group.
- *
- * @param group
- * @return
- * @throws PAPException
- */
@Override
public void updateGroup(OnapPDPGroup group) throws PAPException {
try {
// However, the policy files are (probably!) not too huge, and this is a good way to ensure that any
// corrupted files on the PAP get refreshed.
// now update the group object on the PAP
- sendToPAP("PUT", group, null, null, GROUP_ID + group.getId());
+ sendToPap("PUT", group, null, null, GROUP_ID + group.getId());
} catch (Exception e) {
- String message = "Unable to PUT policy '" + group.getId() + "', e:" + e;
+ String message = UNABLE_MSG + group.getId() + EXCEPTION_MSG + e;
LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + message, e);
throw new PAPException(message);
}
@Override
public void updateGroup(OnapPDPGroup group, String userName) throws PAPException {
try {
- sendToPAP("PUT", group, null, null, GROUP_ID + group.getId(), "userId=" + userName);
+ sendToPap("PUT", group, null, null, GROUP_ID + group.getId(), "userId=" + userName);
} catch (Exception e) {
- String message = "Unable to PUT policy '" + group.getId() + "', e:" + e;
+ String message = UNABLE_MSG + group.getId() + EXCEPTION_MSG + e;
LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + message, e);
throw new PAPException(message);
}
if (newGroup != null) {
moveToGroupString = "movePDPsToGroupId=" + newGroup.getId();
}
- sendToPAP("DELETE", null, null, null, GROUP_ID + group.getId(), moveToGroupString);
+ sendToPap("DELETE", null, null, null, GROUP_ID + group.getId(), moveToGroupString);
}
@Override
}
public OnapPDPGroup getPDPGroup(String pdpId) throws PAPException {
- return (OnapPDPGroup) sendToPAP("GET", null, null, StdPDPGroup.class, GROUP_ID, "pdpId=" + pdpId,
+ return (OnapPDPGroup) sendToPap("GET", null, null, StdPDPGroup.class, GROUP_ID, PDPID_MSG + pdpId,
"getPDPGroup=");
}
@Override
public OnapPDP getPDP(String pdpId) throws PAPException {
- return (OnapPDP) sendToPAP("GET", null, null, StdPDP.class, GROUP_ID, "pdpId=" + pdpId);
+ return (OnapPDP) sendToPap("GET", null, null, StdPDP.class, GROUP_ID, PDPID_MSG + pdpId);
}
@Override
public void newPDP(String id, OnapPDPGroup group, String name, String description, int jmxport)
throws PAPException {
- StdPDP newPDP = new StdPDP(id, name, description, jmxport);
- sendToPAP("PUT", newPDP, null, null, GROUP_ID + group.getId(), "pdpId=" + id);
+ StdPDP newPdp = new StdPDP(id, name, description, jmxport);
+ sendToPap("PUT", newPdp, null, null, GROUP_ID + group.getId(), PDPID_MSG + id);
}
@Override
public void movePDP(OnapPDP pdp, OnapPDPGroup newGroup) throws PAPException {
- sendToPAP("POST", null, null, null, GROUP_ID + newGroup.getId(), "pdpId=" + pdp.getId());
+ sendToPap("POST", null, null, null, GROUP_ID + newGroup.getId(), PDPID_MSG + pdp.getId());
}
@Override
public void updatePDP(OnapPDP pdp) throws PAPException {
OnapPDPGroup group = getPDPGroup(pdp);
- sendToPAP("PUT", pdp, null, null, GROUP_ID + group.getId(), "pdpId=" + pdp.getId());
+ sendToPap("PUT", pdp, null, null, GROUP_ID + group.getId(), PDPID_MSG + pdp.getId());
}
@Override
public void removePDP(OnapPDP pdp) throws PAPException {
OnapPDPGroup group = getPDPGroup(pdp);
- sendToPAP("DELETE", null, null, null, GROUP_ID + group.getId(), "pdpId=" + pdp.getId());
+ sendToPap("DELETE", null, null, null, GROUP_ID + group.getId(), PDPID_MSG + pdp.getId());
}
- // Validate the Policy Data
+ /**
+ * validatePolicyRequest Creates a pap policy and then send to pap.
+ *
+ * @param policyAdapter Input Adapter
+ * @param policyType Type of Policy
+ * @return true if validated
+ * @throws PAPException exception if invalid
+ */
public boolean validatePolicyRequest(PolicyRestAdapter policyAdapter, String policyType) throws PAPException {
- StdPAPPolicy newPAPPolicy = new StdPAPPolicy(policyAdapter.getPolicyName(), policyAdapter.getConfigBodyData(),
+ StdPAPPolicy newPapPolicy = new StdPAPPolicy(policyAdapter.getPolicyName(), policyAdapter.getConfigBodyData(),
policyAdapter.getConfigType(), "Base");
// send JSON object to PAP
- return (Boolean) sendToPAP("PUT", newPAPPolicy, null, null, "operation=validate", "apiflag=admin",
+ return (Boolean) sendToPap("PUT", newPapPolicy, null, null, "operation=validate", "apiflag=admin",
"policyType=" + policyType);
}
* Copy a single Policy file from the input stream to the PAP Servlet. Either this works (silently) or it throws an
* exception.
*
- * @param policyId
- * @param group
- * @param policy
- * @return
- * @throws PAPException
+ * @param policyId ID of policy
+ * @param group PDP Group
+ * @param policy Input stream of policy
+ * @throws PAPException exception
*/
public void copyFile(String policyId, OnapPDPGroup group, InputStream policy) throws PAPException {
// send the policy file to the PAP Servlet
try {
- sendToPAP("POST", policy, null, null, GROUP_ID + group.getId(), "policyId=" + policyId);
+ sendToPap("POST", policy, null, null, GROUP_ID + group.getId(), "policyId=" + policyId);
} catch (Exception e) {
- String message = "Unable to PUT policy '" + policyId + "', e:" + e;
+ String message = UNABLE_MSG + policyId + EXCEPTION_MSG + e;
LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + message, e);
throw new PAPException(message);
}
try (InputStream is = new FileInputStream(new File(policy.getLocation()))) {
copyFile(policy.getId(), group, is);
} catch (Exception e) {
- String message = "Unable to PUT policy '" + policy.getId() + "', e:" + e;
+ String message = UNABLE_MSG + policy.getId() + EXCEPTION_MSG + e;
LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + message, e);
throw new PAPException(message);
}
* Special operation - Similar to the normal PAP operations but this one contacts the PDP directly to get detailed
* status info.
*
- * @param pdp
- * @return
- * @throws PAPException
+ * @param pdp PDP to get status
+ * @return PDPStatus object
+ * @throws PAPException Exception
*/
@Override
public PDPStatus getStatus(OnapPDP pdp) throws PAPException {
- return (StdPDPStatus) sendToPAP("GET", pdp, null, StdPDPStatus.class);
+ return (StdPDPStatus) sendToPap("GET", pdp, null, StdPDPStatus.class);
}
//
/**
* Send a request to the PAP Servlet and get the response.
*
- * The content is either an InputStream to be copied to the Request OutputStream OR it is an object that is to be
+ * <p>The content is either an InputStream to be copied to the Request OutputStream OR it is an object that is to be
* encoded into JSON and pushed into the Request OutputStream.
*
- * The Request parameters may be encoded in multiple "name=value" sets, or parameters may be combined by the caller.
+ * <p>The Request parameters may be encoded in multiple "name=value" sets, or parameters may be
+ * combined by the caller.
*
- * @param method
+ * @param method method
* @param content - EITHER an InputStream OR an Object to be encoded in JSON
- * @param collectionTypeClass
- * @param responseContentClass
- * @param parameters
- * @return
- * @throws PAPException
+ * @param collectionTypeClass Collection
+ * @param responseContentClass Response Content
+ * @param parameters List of parameters
+ * @return Object
+ * @throws PAPException exception
*/
@SuppressWarnings({"rawtypes", "unchecked"})
- private Object sendToPAP(String method, Object content, Class collectionTypeClass, Class responseContentClass,
+ private Object sendToPap(String method, Object content, Class collectionTypeClass, Class responseContentClass,
String... parameters) throws PAPException {
HttpURLConnection connection = null;
String papID = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_USERID);
Object contentObj = content;
LOGGER.info("Encoding for the PAP is: " + encoding);
try {
- String fullURL = papServletURLString;
+ String fullUrl = papServletUrlString;
if (parameters != null && parameters.length > 0) {
StringBuilder queryString = new StringBuilder();
Arrays.stream(parameters).map(p -> "&" + p).forEach(queryString::append);
- fullURL += "?" + queryString.substring(1);
+ fullUrl += "?" + queryString.substring(1);
}
// special case - Status (actually the detailed status) comes from the PDP directly, not the PAP
if ("GET".equals(method) && (contentObj instanceof OnapPDP) && responseContentClass == StdPDPStatus.class) {
// Adjust the url and properties appropriately
String pdpID = ((OnapPDP) contentObj).getId();
- fullURL = pdpID + "?type=Status";
+ fullUrl = pdpID + "?type=Status";
contentObj = null;
- if (CheckPDP.validateID(pdpID)) {
- encoding = CheckPDP.getEncoding(pdpID);
+ if (CheckPdpProperties.validateId(pdpID)) {
+ encoding = CheckPdpProperties.getEncoding(pdpID);
}
}
//
// Open up the connection
//
- connection = (HttpURLConnection) makeConnection(fullURL);
+ connection = (HttpURLConnection) makeConnection(fullUrl);
//
// Setup our method and headers
//
String finalPolicyPath = connection.getHeaderField("finalPolicyPath");
successMap.put("success", finalPolicyPath);
return successMap;
- } else if ("error".equalsIgnoreCase(isSuccess)) {
+ } else if (ERROR_MSG.equalsIgnoreCase(isSuccess)) {
LOGGER.info("There was an error while creating the policy!");
- successMap.put("error", "error");
+ successMap.put(ERROR_MSG, ERROR_MSG);
return successMap;
} else {
// get the response content into a String
}
} else if (connection.getResponseCode() >= 300 && connection.getResponseCode() <= 399) {
// redirection
- String newURL = connection.getHeaderField("Location");
- if (newURL == null) {
+ String newUrl = connection.getHeaderField("Location");
+ if (newUrl == null) {
LOGGER.error(
"No Location header to redirect to when response code=" + connection.getResponseCode());
throw new IOException(
"No redirect Location header when response code=" + connection.getResponseCode());
}
- int qIndex = newURL.indexOf('?');
- if (qIndex > 0) {
- newURL = newURL.substring(0, qIndex);
+ int qindex = newUrl.indexOf('?');
+ if (qindex > 0) {
+ newUrl = newUrl.substring(0, qindex);
}
- LOGGER.info("Redirect seen. Redirecting " + fullURL + " to " + newURL);
- return newURL;
+ LOGGER.info("Redirect seen. Redirecting " + fullUrl + " to " + newUrl);
+ return newUrl;
} else {
LOGGER.warn("Unexpected response code: " + connection.getResponseCode() + " message: "
+ connection.getResponseMessage());
// these may be overridden by junit tests
- protected URLConnection makeConnection(String fullURL) throws IOException {
- return new URL(fullURL).openConnection();
+ protected URLConnection makeConnection(String fullUrl) throws IOException {
+ return new URL(fullUrl).openConnection();
}
}
+++ /dev/null
-/*-
- * ============LICENSE_START=======================================================
- * ONAP Policy Engine
- * ================================================================================
- * Copyright (C) 2017, 2019 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Modifications Copyright (C) 2019 Samsung
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.admin;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.io.File;
-
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.runners.MethodSorters;
-
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-public class CheckPDPTest {
-
- @Test
- public final void test1NoPropertySet() {
- try {
- System.clearProperty("xacml.rest.pdp.idfile");
- assertFalse(CheckPDP.validateID("http://localhost:8082/pdp/"));
-
- System.setProperty("xacml.rest.pdp.idfile",
- new File(".").getCanonicalPath() + File.separator + "src" + File.separator + "test" + File.separator
- + "resources" + File.separator + "idonotexist.properties");
- assertFalse(CheckPDP.validateID("http://localhost:8082/pdp/"));
-
- System.setProperty("xacml.rest.pdp.idfile",
- new File(".").getCanonicalPath() + File.separator + "src" + File.separator + "test" + File.separator
- + "resources" + File.separator + "doesnothaveproperties.atall");
- assertFalse(CheckPDP.validateID("http://localhost:8082/pdp/"));
-
- System.setProperty("xacml.rest.pdp.idfile", new File(".").getCanonicalPath() + File.separator + "src"
- + File.separator + "test" + File.separator + "resources" + File.separator + "testbad.properties");
- assertFalse(CheckPDP.validateID("http://localhost:8082/pdp/"));
-
- System.setProperty("xacml.rest.pdp.idfile", new File(".").getCanonicalPath() + File.separator + "src"
- + File.separator + "test" + File.separator + "resources" + File.separator + "empty.properties");
- assertFalse(CheckPDP.validateID("http://localhost:8082/pdp/"));
-
- System.setProperty("xacml.rest.pdp.idfile",
- new File(".").getCanonicalPath() + File.separator + "src" + File.separator + "test" + File.separator
- + "resources" + File.separator + "testnotenoughvalues.properties");
- assertFalse(CheckPDP.validateID("http://localhost:8082/pdp/"));
-
- assertNull(CheckPDP.getPdpMap());
- assertNull(CheckPDP.getEncoding("http://localhost:8082/pdp/"));
-
- } catch (Exception e) {
- fail("Error occured in CheckPDP test");
- }
- }
-
- @Test
- public final void test2CheckPDP() {
- try {
- System.setProperty("xacml.rest.pdp.idfile", new File(".").getCanonicalPath() + File.separator + "src"
- + File.separator + "test" + File.separator + "resources" + File.separator + "test.properties");
- assertTrue(CheckPDP.validateID("http://localhost:8082/pdp/"));
- assertTrue(CheckPDP.getPdpMap().containsKey("http://localhost:8082/pdp/"));
- assertTrue(CheckPDP.getEncoding("http://localhost:8082/pdp/").equals("dGVzdHBkcDphbHBoYTQ1Ng=="));
- } catch (Exception e) {
- fail("Error occured in CheckPDP test");
- }
- }
-}
--- /dev/null
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP Policy Engine
+ * ================================================================================
+ * Copyright (C) 2017, 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Modifications Copyright (C) 2019 Samsung
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.admin;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import com.att.research.xacml.util.XACMLProperties;
+import java.io.File;
+import java.io.IOException;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runners.MethodSorters;
+
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+public class CheckPdpPropertiesTest {
+
+ @Test
+ public final void test1NoPropertySet() throws IOException {
+ System.setProperty(XACMLProperties.XACML_PROPERTIES_NAME, "noexistenfile.properties");
+ assertFalse(CheckPdpProperties.validateId("http://localhost:8082/pdp/"));
+
+ System.clearProperty(XACMLProperties.XACML_PROPERTIES_NAME);
+ System.clearProperty("xacml.rest.pdp.idfile");
+ assertFalse(CheckPdpProperties.validateId("http://localhost:8082/pdp/"));
+
+ System.setProperty("xacml.rest.pdp.idfile", new File(".").getCanonicalPath() + File.separator + "src"
+ + File.separator + "test" + File.separator + "resources" + File.separator + "idonotexist.properties");
+ assertFalse(CheckPdpProperties.validateId("http://localhost:8082/pdp/"));
+
+ System.setProperty("xacml.rest.pdp.idfile",
+ new File(".").getCanonicalPath() + File.separator + "src" + File.separator + "test" + File.separator
+ + "resources" + File.separator + "doesnothaveproperties.atall");
+ assertFalse(CheckPdpProperties.validateId("http://localhost:8082/pdp/"));
+
+ System.setProperty("xacml.rest.pdp.idfile", new File(".").getCanonicalPath() + File.separator + "src"
+ + File.separator + "test" + File.separator + "resources" + File.separator + "testbad.properties");
+ assertFalse(CheckPdpProperties.validateId("http://localhost:8082/pdp/"));
+
+ System.setProperty("xacml.rest.pdp.idfile", new File(".").getCanonicalPath() + File.separator + "src"
+ + File.separator + "test" + File.separator + "resources" + File.separator + "empty.properties");
+ assertFalse(CheckPdpProperties.validateId("http://localhost:8082/pdp/"));
+
+ System.setProperty("xacml.rest.pdp.idfile",
+ new File(".").getCanonicalPath() + File.separator + "src" + File.separator + "test" + File.separator
+ + "resources" + File.separator + "testnotenoughvalues.properties");
+ assertFalse(CheckPdpProperties.validateId("http://localhost:8082/pdp/"));
+
+ assertNull(CheckPdpProperties.getPdpMap());
+ assertNull(CheckPdpProperties.getEncoding("http://localhost:8082/pdp/"));
+ }
+
+ @Test
+ public final void test2CheckPdp() throws IOException {
+ System.setProperty("xacml.rest.pdp.idfile", new File(".").getCanonicalPath() + File.separator + "src"
+ + File.separator + "test" + File.separator + "resources" + File.separator + "test.properties");
+ assertTrue(CheckPdpProperties.validateId("http://localhost:8082/pdp/"));
+ assertTrue(CheckPdpProperties.getPdpMap().containsKey("http://localhost:8082/pdp/"));
+ assertTrue(CheckPdpProperties.getEncoding("http://localhost:8082/pdp/").equals("dGVzdHBkcDphbHBoYTQ1Ng=="));
+ }
+}
package org.onap.policy.admin;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
+import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
+import static org.junit.Assert.assertNull;
import com.att.research.xacml.api.pap.PAPException;
import com.att.research.xacml.api.pap.PDPPolicy;
import javax.servlet.http.HttpServletResponse;
import org.junit.AfterClass;
-import org.junit.Before;
import org.junit.BeforeClass;
-import org.junit.Rule;
import org.junit.Test;
-import org.junit.rules.ExpectedException;
import org.mockito.Mockito;
import org.onap.policy.rest.adapter.PolicyRestAdapter;
import org.onap.policy.xacml.api.pap.OnapPDP;
import org.onap.policy.xacml.api.pap.OnapPDPGroup;
public class RESTfulPAPEngineTest {
- @Rule
- public ExpectedException thrown = ExpectedException.none();
private RESTfulPAPEngine engine = null;
private String name = "testName";
OnapPDP pdp = Mockito.mock(OnapPDP.class);
InputStream policy;
+ /**
+ * BeforeClass does some simple code coverage and sets up the
+ * XACML properties.
+ */
@BeforeClass
public static void setUpBeforeClass() {
+ //
+ // Test constructor with bad URL
+ //
+ assertThatExceptionOfType(PAPException.class).isThrownBy(() ->
+ new RESTfulPAPEngine(null));
+
XACMLProperties.reloadProperties();
}
XACMLProperties.reloadProperties();
}
- @Before
- public void runConstructor() throws Exception {
+ private void setupConnection(int responseCode) throws Exception {
// Mock connection
HttpURLConnection connection = Mockito.mock(HttpURLConnection.class);
- Mockito.when(connection.getResponseCode()).thenReturn(HttpServletResponse.SC_NO_CONTENT);
+ Mockito.when(connection.getResponseCode()).thenReturn(responseCode);
+ Mockito.when(connection.getHeaderField("Location")).thenReturn("localhost:5678");
// Set the system property temporarily
String systemKey = "xacml.properties";
- String oldProperty = System.getProperty(systemKey);
+ final String oldProperty = System.getProperty(systemKey);
System.setProperty(systemKey, "src/test/resources/xacml.admin.properties");
// Test constructor
String urlName = "localhost:1234";
engine = new RESTfulPAPEngine(urlName) {
@Override
- protected URLConnection makeConnection(String fullURL) throws IOException {
+ protected URLConnection makeConnection(String fullUrl) throws IOException {
return connection;
}
};
}
@Test
- public void testGroups() throws Exception {
+ public void testAllTheExceptions() throws Exception {
+ setupConnection(HttpServletResponse.SC_NO_CONTENT);
+
engine.setDefaultGroup(group);
- assertEquals(engine.getDefaultGroup(), null);
+ assertNull(engine.getDefaultGroup());
engine.newGroup(name, description);
engine.removeGroup(group, newGroup);
- assertEquals(engine.getPDPGroup(pdp), null);
- assertEquals(engine.getPDPGroup(id), null);
- assertEquals(engine.getPDP(id), null);
- assertEquals(engine.getStatus(pdp), null);
-
- thrown.expect(NullPointerException.class);
- engine.getOnapPDPGroups();
- fail("Expecting an exception.");
- }
+ assertNull(engine.getPDPGroup(pdp));
+ assertNull(engine.getPDPGroup(id));
+ assertNull(engine.getPDP(id));
+ assertNull(engine.getStatus(pdp));
- @Test
- public void testUpdateGroup() throws PAPException {
- thrown.expect(PAPException.class);
- engine.updateGroup(group);
- fail("Expecting an exception.");
- }
+ assertThatExceptionOfType(NullPointerException.class).isThrownBy(() ->
+ engine.getOnapPDPGroups()
+ );
- @Test
- public void testPDP() throws PAPException {
- assertEquals(engine.getGroup(name), null);
+ assertThatExceptionOfType(PAPException.class).isThrownBy(() ->
+ engine.updateGroup(group)
+ );
+
+ assertNull(engine.getGroup(name));
engine.movePDP(pdp, newGroup);
- thrown.expect(PAPException.class);
- engine.newPDP(id, newGroup, name, description, jmxport);
- fail("Expecting an exception.");
- }
+ assertThatExceptionOfType(PAPException.class).isThrownBy(() ->
+ engine.newPDP(id, newGroup, name, description, jmxport)
+ );
- @Test
- public void testUpdatePDP() throws PAPException {
- thrown.expect(NullPointerException.class);
- engine.updatePDP(pdp);
- fail("Expecting an exception.");
- }
+ assertThatExceptionOfType(NullPointerException.class).isThrownBy(() ->
+ engine.updatePDP(pdp)
+ );
- @Test
- public void testRemovePDP() throws PAPException {
- thrown.expect(NullPointerException.class);
- engine.removePDP(pdp);
- fail("Expecting an exception.");
- }
+ assertThatExceptionOfType(NullPointerException.class).isThrownBy(() ->
+ engine.removePDP(pdp)
+ );
- @Test
- public void testValidatePolicy() throws PAPException {
- PolicyRestAdapter policyAdapter = new PolicyRestAdapter();
+ assertThatExceptionOfType(PAPException.class).isThrownBy(() ->
+ engine.validatePolicyRequest(new PolicyRestAdapter(), policyType)
+ );
- thrown.expect(PAPException.class);
- engine.validatePolicyRequest(policyAdapter, policyType);
- fail("Expecting an exception.");
- }
+ assertThatExceptionOfType(PAPException.class).isThrownBy(() ->
+ engine.publishPolicy(id, name, false, policy, newGroup)
+ );
- @Test
- public void testPublishPolicy() throws PAPException {
- thrown.expect(PAPException.class);
- engine.publishPolicy(id, name, false, policy, newGroup);
- fail("Expecting an exception.");
- }
-
- @Test
- public void testCopy() throws PAPException {
engine.copyFile(id, newGroup, policy);
PDPPolicy pdpPolicy = Mockito.mock(PDPPolicy.class);
-
- thrown.expect(PAPException.class);
- engine.copyPolicy(pdpPolicy, newGroup);
- fail("Expecting an exception.");
+ assertThatExceptionOfType(PAPException.class).isThrownBy(() ->
+ engine.copyPolicy(pdpPolicy, newGroup)
+ );
+
+ assertThatExceptionOfType(PAPException.class).isThrownBy(() ->
+ engine.removePolicy(null, group)
+ );
+
+ assertThatExceptionOfType(PAPException.class).isThrownBy(() ->
+ engine.copyPolicy(null, null)
+ );
+
+ //
+ // Change the mockito to take a different path
+ //
+ assertThatExceptionOfType(PAPException.class).isThrownBy(() ->
+ setupConnection(HttpServletResponse.SC_FOUND)
+ );
}
}