1 package org.onap.policy.tutorial.tutorial;
4 import java.io.IOException;
5 import java.util.Iterator;
7 import java.util.Properties;
8 import java.util.ServiceLoader;
10 import org.apache.commons.lang3.tuple.Pair;
11 import org.junit.BeforeClass;
12 import org.junit.ClassRule;
13 import org.junit.Test;
14 import org.junit.rules.TemporaryFolder;
15 import org.onap.policy.common.utils.coder.CoderException;
16 import org.onap.policy.common.utils.coder.StandardCoder;
17 import org.onap.policy.common.utils.resources.TextFileUtils;
18 import org.onap.policy.models.decisions.concepts.DecisionRequest;
19 import org.onap.policy.models.decisions.concepts.DecisionResponse;
20 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
21 import org.onap.policy.pdp.xacml.application.common.TestUtils;
22 import org.onap.policy.pdp.xacml.application.common.XacmlApplicationException;
23 import org.onap.policy.pdp.xacml.application.common.XacmlApplicationServiceProvider;
24 import org.onap.policy.pdp.xacml.application.common.XacmlPolicyUtils;
25 import org.slf4j.Logger;
26 import org.slf4j.LoggerFactory;
28 import com.att.research.xacml.api.Response;
30 public class TutorialApplicationTest {
31 private static final Logger LOGGER = LoggerFactory.getLogger(TutorialApplicationTest.class);
32 private static Properties properties = new Properties();
33 private static File propertiesFile;
34 private static XacmlApplicationServiceProvider service;
35 private static StandardCoder gson = new StandardCoder();
38 public static final TemporaryFolder policyFolder = new TemporaryFolder();
41 public static void setup() throws Exception {
43 // Setup our temporary folder
45 XacmlPolicyUtils.FileCreator myCreator = (String filename) -> policyFolder.newFile(filename);
46 propertiesFile = XacmlPolicyUtils.copyXacmlPropertiesContents("src/test/resources/xacml.properties",
47 properties, myCreator);
49 // Load XacmlApplicationServiceProvider service
51 ServiceLoader<XacmlApplicationServiceProvider> applicationLoader =
52 ServiceLoader.load(XacmlApplicationServiceProvider.class);
54 // Look for our class instance and save it
56 Iterator<XacmlApplicationServiceProvider> iterator = applicationLoader.iterator();
57 while (iterator.hasNext()) {
58 XacmlApplicationServiceProvider application = iterator.next();
62 if (application instanceof TutorialApplication) {
63 service = application;
67 // Tell the application to initialize based on the properties file
68 // we just built for it.
70 service.initialize(propertiesFile.toPath().getParent());
74 public void test() throws CoderException, XacmlApplicationException, IOException {
76 // Now load the tutorial policies.
78 TestUtils.loadPolicies("src/test/resources/tutorial-policies.yaml", service);
80 // Load a Decision request
82 DecisionRequest decisionRequest = gson.decode(
84 .getTextFileAsString("src/test/resources/tutorial-decision-request.json"),
85 DecisionRequest.class);
89 Pair<DecisionResponse, Response> decision = service.makeDecision(decisionRequest);
90 LOGGER.info(decision.getLeft().toString());