7a1c2f94f417a0647234b09f2d2e9960b0c75cd2
[policy/parent.git] / docs / xacml / tutorial / app / src / test / java / org / onap / policy / tutorial / tutorial / TutorialApplicationTest.java
1 package org.onap.policy.tutorial.tutorial;
2
3 import java.io.File;
4 import java.io.IOException;
5 import java.util.Iterator;
6 import java.util.List;
7 import java.util.Properties;
8 import java.util.ServiceLoader;
9
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;
27
28 import com.att.research.xacml.api.Response;
29
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();
36
37     @ClassRule
38     public static final TemporaryFolder policyFolder = new TemporaryFolder();
39
40     @BeforeClass
41     public static void setup() throws Exception {
42         //
43         // Setup our temporary folder
44         //
45         XacmlPolicyUtils.FileCreator myCreator = (String filename) -> policyFolder.newFile(filename);
46         propertiesFile = XacmlPolicyUtils.copyXacmlPropertiesContents("src/test/resources/xacml.properties",
47                 properties, myCreator);
48         //
49         // Load XacmlApplicationServiceProvider service
50         //
51         ServiceLoader<XacmlApplicationServiceProvider> applicationLoader =
52                 ServiceLoader.load(XacmlApplicationServiceProvider.class);
53         //
54         // Look for our class instance and save it
55         //
56         Iterator<XacmlApplicationServiceProvider> iterator = applicationLoader.iterator();
57         while (iterator.hasNext()) {
58             XacmlApplicationServiceProvider application = iterator.next();
59             //
60             // Is it our service?
61             //
62             if (application instanceof TutorialApplication) {
63                 service = application;
64             }
65         }
66         //
67         // Tell the application to initialize based on the properties file
68         // we just built for it.
69         //
70         service.initialize(propertiesFile.toPath().getParent());
71         }
72     
73     @Test
74     public void test() throws CoderException, XacmlApplicationException, IOException {
75         //
76         // Now load the tutorial policies.
77         //
78         TestUtils.loadPolicies("src/test/resources/tutorial-policies.yaml", service);
79         //
80         // Load a Decision request
81         //
82         DecisionRequest decisionRequest = gson.decode(
83                 TextFileUtils
84                 .getTextFileAsString("src/test/resources/tutorial-decision-request.json"),
85                 DecisionRequest.class);
86         //
87         // Test a decision
88         //
89         Pair<DecisionResponse, Response> decision = service.makeDecision(decisionRequest);
90         LOGGER.info(decision.getLeft().toString());
91     }
92
93 }