Preload control loop coordination type in API
[policy/api.git] / main / src / test / java / org / onap / policy / api / main / startstop / TestApiCommandLineArguments.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP Policy API
4  * ================================================================================
5  * Copyright (C) 2019 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
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
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  *
19  * SPDX-License-Identifier: Apache-2.0
20  * ============LICENSE_END=========================================================
21  */
22
23 package org.onap.policy.api.main.startstop;
24
25 import static org.assertj.core.api.Assertions.assertThatThrownBy;
26
27 import java.io.IOException;
28 import java.nio.file.Files;
29 import java.nio.file.Path;
30 import java.nio.file.Paths;
31 import java.nio.file.attribute.FileAttribute;
32 import java.nio.file.attribute.PosixFilePermission;
33 import java.nio.file.attribute.PosixFilePermissions;
34 import java.util.Set;
35
36 import org.junit.Test;
37 import org.onap.policy.api.main.exception.PolicyApiException;
38 import org.onap.policy.api.main.exception.PolicyApiRuntimeException;
39
40 public class TestApiCommandLineArguments {
41     private ApiCommandLineArguments apiCmdArgs = new ApiCommandLineArguments();
42
43     @Test(expected = PolicyApiRuntimeException.class)
44     public void testApiCommandLineArgumentsStringArray() {
45         String [] args = {"---d"};
46         new ApiCommandLineArguments(args);
47     }
48
49     @Test
50     public void testNonExistentFileValidateReadableFile() {
51         apiCmdArgs.setConfigurationFilePath("src/test/resources/filetest/nonexist.json ");
52         assertThatThrownBy(
53                 apiCmdArgs::validate
54             )
55             .isInstanceOf(PolicyApiException.class)
56             .hasMessageContaining("file \"src/test/resources/filetest/nonexist.json \" does not exist");
57     }
58
59     @Test
60     public void testEmptyFileNameValidateReadableFile() {
61         apiCmdArgs.setConfigurationFilePath("");
62         assertThatThrownBy(
63                  apiCmdArgs::validate
64             )
65             .isInstanceOf(PolicyApiException.class)
66             .hasMessageContaining("policy api configuration file was not specified as an argument");
67     }
68
69     @Test
70     public void testInvalidUrlValidateReadableFile() {
71         apiCmdArgs.setConfigurationFilePath("src/test\\resources/filetest\\n");
72         assertThatThrownBy(
73                 apiCmdArgs::validate
74             )
75             .isInstanceOf(PolicyApiException.class)
76             .hasMessageContaining(
77                     "policy api configuration file \"src/test\\resources/filetest\\n\" does not exist");
78     }
79
80     @Test
81     public void testDirectoryValidateReadableFile() {
82         apiCmdArgs.setConfigurationFilePath("src/test/resources/");
83         assertThatThrownBy(
84                 apiCmdArgs::validate
85             )
86             .isInstanceOf(PolicyApiException.class)
87             .hasMessageContaining("file \"src/test/resources/\" is not a normal file");
88     }
89
90     @Test
91     public void testReadPermissionValidateReadableFile() throws IOException {
92         String filepath =  "src/test/resources/unreadablefile.json";
93         Set<PosixFilePermission> notReadable = PosixFilePermissions.fromString("-wx-wx-wx");
94         FileAttribute<?> permissions = PosixFilePermissions.asFileAttribute(notReadable);
95         Path pathObj = Paths.get(filepath);
96         Files.createFile(pathObj, permissions);
97         apiCmdArgs.setConfigurationFilePath(filepath);
98         assertThatThrownBy(
99                 apiCmdArgs::validate
100             )
101             .isInstanceOf(PolicyApiException.class)
102             .hasMessageContaining(
103                 "file \"src/test/resources/unreadablefile.json\" is ureadable");
104         Files.deleteIfExists(pathObj);
105     }
106 }