Remove topic.properties and incorporate into overall config file for xacml
[policy/xacml-pdp.git] / main / src / test / java / org / onap / policy / pdpx / main / startstop / TestMain.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
4  * Modifications Copyright (C) 2019 Nordix Foundation.
5  * ================================================================================
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *      http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  *
18  * SPDX-License-Identifier: Apache-2.0
19  * ============LICENSE_END=========================================================
20  */
21
22 package org.onap.policy.pdpx.main.startstop;
23
24 import static org.assertj.core.api.Assertions.assertThatThrownBy;
25
26 import org.junit.After;
27 import org.junit.Assert;
28 import org.junit.Before;
29 import org.junit.BeforeClass;
30 import org.junit.Test;
31 import org.onap.policy.pdpx.main.CommonRest;
32 import org.onap.policy.pdpx.main.PolicyXacmlPdpException;
33
34 /**
35  * Class to perform unit test of Main.
36  *
37  */
38 public class TestMain extends CommonRest {
39
40     private Main main;
41
42     /**
43      * Sets up properties and configuration.
44      * @throws Exception if an error occurs
45      */
46     @BeforeClass
47     public static void setUpBeforeClass() throws Exception {
48         CommonRest.setUpBeforeClass();
49
50         // don't want the common "main" running
51         CommonRest.stopMain();
52     }
53
54     @Before
55     public void setUp() {
56         main = null;
57     }
58
59     /**
60      * Shuts "main" down.
61      */
62     @After
63     public void tearDown() {
64         if (main != null) {
65             main.shutdown();
66         }
67     }
68
69     @Test
70     public void testMain() throws PolicyXacmlPdpException {
71         final String[] xacmlPdpConfigParameters = {"-c", CONFIG_FILE};
72         main = new Main(xacmlPdpConfigParameters);
73         main.shutdown();
74         main = null;
75     }
76
77     @Test
78     public void testMain_NoArguments() {
79         final String[] xacmlPdpConfigParameters = {};
80         assertThatThrownBy(() -> new Main(xacmlPdpConfigParameters)).isInstanceOf(PolicyXacmlPdpException.class)
81                         .hasMessage("policy xacml pdp configuration file was not specified as an argument");
82     }
83
84     @Test
85     public void testMain_InvalidArguments() {
86         final String[] xacmlPdpConfigParameters = {"parameters/XacmlPdpConfigParameters.json"};
87         assertThatThrownBy(() -> new Main(xacmlPdpConfigParameters)).isInstanceOf(PolicyXacmlPdpException.class)
88             .hasMessage("too many command line arguments specified : [parameters/XacmlPdpConfigParameters.json]");
89     }
90
91     @Test
92     public void testMain_Help() throws PolicyXacmlPdpException {
93         final String[] xacmlPdpConfigParameters = {"-h"};
94         Assert.assertTrue(new Main(xacmlPdpConfigParameters).getArgumentMessage().contains("-h,--help"));
95
96     }
97
98     @Test
99     public void testMain_InvalidParameters()  {
100         final String[] xacmlPdpConfigParameters = {"-c", "parameters/XacmlPdpConfigParameters_InvalidName.json"};
101         assertThatThrownBy(() -> new Main(xacmlPdpConfigParameters)).isInstanceOf(PolicyXacmlPdpException.class)
102                         .hasMessageContaining("validation error");
103     }
104 }