609dc31c99b03b4f8e4e1a5ff4ebfdc9ad900b39
[policy/apex-pdp.git] /
1 /*
2  *  ============LICENSE_START=======================================================
3  *  Copyright (C) 2021. Nordix Foundation.
4  *  ================================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.apex.service.engine.event.impl.filecarrierplugin;
22
23 import static org.assertj.core.api.Assertions.assertThat;
24 import static org.assertj.core.api.Assertions.assertThatThrownBy;
25 import static org.junit.Assume.assumeTrue;
26
27 import java.io.File;
28 import java.io.IOException;
29 import java.net.URL;
30 import java.util.Random;
31 import org.apache.commons.lang3.RandomStringUtils;
32 import org.junit.After;
33 import org.junit.Before;
34 import org.junit.Test;
35 import org.onap.policy.common.parameters.ParameterRuntimeException;
36 import org.onap.policy.common.parameters.ValidationResult;
37
38 public class FileCarrierTechnologyParametersTest {
39     private final Random random = new Random();
40     private static final String APEX_RELATIVE_FILE_ROOT = "APEX_RELATIVE_FILE_ROOT";
41     private final String defaultApesRelativeFileRoot = System.getProperty(APEX_RELATIVE_FILE_ROOT);
42     private FileCarrierTechnologyParameters parameters;
43     private File tempFile;
44
45     @Before
46     public void setUp() throws Exception {
47         parameters = new FileCarrierTechnologyParameters();
48     }
49
50     /**
51      * Cleaning after testing.
52      */
53     @After
54     public void tearDown() {
55         if (tempFile != null) {
56             tempFile.delete();
57         }
58         if (defaultApesRelativeFileRoot != null) {
59             System.setProperty(APEX_RELATIVE_FILE_ROOT, defaultApesRelativeFileRoot);
60         } else {
61             System.clearProperty(APEX_RELATIVE_FILE_ROOT);
62         }
63     }
64
65     @Test
66     public void getSetFileName() {
67         final String fileName = RandomStringUtils.random(10);
68         parameters.setFileName(fileName);
69         assertThat(parameters.getFileName())
70             .isEqualTo(fileName);
71     }
72
73     @Test
74     public void isStandardIo() {
75         assertThat(parameters.isStandardIo()).isFalse();
76     }
77
78     @Test
79     public void isStandardError() {
80         assertThat(parameters.isStandardError()).isFalse();
81     }
82
83     @Test
84     public void isStreamingMode() {
85         assertThat(parameters.isStreamingMode()).isFalse();
86     }
87
88     @Test
89     public void setStandardIo() {
90         final boolean standardIo = random.nextBoolean();
91         parameters.setStandardIo(standardIo);
92         assertThat(parameters.isStandardIo()).isEqualTo(standardIo);
93     }
94
95     @Test
96     public void setStandardError() {
97         final boolean standardError = random.nextBoolean();
98         parameters.setStandardError(standardError);
99         assertThat(parameters.isStandardError()).isEqualTo(standardError);
100     }
101
102     @Test
103     public void getStartDelay() {
104         assertThat(parameters.getStartDelay()).isEqualTo(0L);
105     }
106
107     @Test
108     public void setStartDelay() {
109         final long delay = random.nextInt();
110         parameters.setStartDelay(delay);
111         assertThat(parameters.getStartDelay()).isEqualTo(delay);
112     }
113
114     @Test
115     public void getLabel() {
116         final String label = RandomStringUtils.random(10);
117         parameters.setLabel(label);
118         assertThat(parameters.getLabel()).isEqualTo(label);
119     }
120
121     @Test
122     public void setName() {
123         final String name = RandomStringUtils.random(10);
124         assertThatThrownBy(() -> parameters.setName(name)).isInstanceOf(ParameterRuntimeException.class);
125     }
126
127     @Test
128     public void getName() {
129         final String label = RandomStringUtils.random(10);
130         parameters.setLabel(label);
131         assertThat(parameters.getName()).isEqualTo(label);
132     }
133
134     @Test
135     public void getStreamingMode() {
136         assertThat(parameters.isStreamingMode()).isFalse();
137     }
138
139     @Test
140     public void setStreamingMode() {
141         final boolean streamingMode = random.nextBoolean();
142         parameters.setStreamingMode(streamingMode);
143         assertThat(parameters.isStreamingMode()).isEqualTo(streamingMode);
144     }
145
146     @Test
147     public void validateFileNameNull() {
148         final ValidationResult result = parameters.validate();
149         assertThat(result.isValid()).isFalse();
150     }
151
152     @Test
153     public void validateFileNameAbsolutePath() throws IOException {
154         tempFile = File.createTempFile("test_", ".tmp");
155         parameters.setFileName(tempFile.getAbsolutePath());
156         final ValidationResult result = parameters.validate();
157         assertThat(result.isValid()).isTrue();
158     }
159
160     @Test
161     public void validateFileNameAbsolutePathNotExisting() {
162         parameters.setFileName(RandomStringUtils.randomAlphabetic(5) + ".tmp");
163         System.setProperty(APEX_RELATIVE_FILE_ROOT, System.getProperty("user.home"));
164         final ValidationResult result = parameters.validate();
165         assertThat(result.isValid()).isTrue();
166     }
167
168     @Test
169     public void validateDirectoryName() {
170         parameters.setFileName(System.getProperty("user.dir"));
171         final ValidationResult result = parameters.validate();
172         assertThat(result.isValid()).isFalse();
173     }
174
175     @Test
176     public void validateParentNotDirectory() {
177         final URL resource = FileCarrierTechnologyParameters.class
178             .getResource("FileCarrierTechnologyParameters.class");
179         assumeTrue(resource != null && "file".equalsIgnoreCase(resource.getProtocol()));
180         final String fileParentPath = resource.getPath();
181         final String fileName = RandomStringUtils.randomAlphabetic(5);
182         final String absolutePath = new File(fileParentPath, fileName).getAbsolutePath();
183         parameters.setFileName(absolutePath);
184         final ValidationResult result = parameters.validate();
185         assertThat(result.isValid()).isFalse();
186     }
187
188     @Test
189     public void validateParentDoesNOtExists() {
190         final File fileParent = new File(System.getProperty("user.home"), RandomStringUtils.randomAlphabetic(6));
191         final String fileName = RandomStringUtils.randomAlphabetic(5);
192         final String absolutePath = new File(fileParent, fileName).getAbsolutePath();
193         parameters.setFileName(absolutePath);
194         final ValidationResult result = parameters.validate();
195         assertThat(result.isValid()).isFalse();
196     }
197
198     @Test
199     public void validateDirectorNoSystemVariableSet() {
200         final ValidationResult result = parameters.validate();
201         assertThat(result.isValid()).isFalse();
202     }
203
204     @Test
205     public void validateStandardIo() {
206         parameters.setStandardIo(true);
207         final ValidationResult result = parameters.validate();
208         assertThat(result.isValid()).isTrue();
209     }
210
211     @Test
212     public void validateStandardError() {
213         parameters.setStandardError(true);
214         final ValidationResult result = parameters.validate();
215         assertThat(result.isValid()).isTrue();
216     }
217
218     @Test
219     public void validateNegativeDelay() {
220         final long delay = random.nextInt() * -1;
221         parameters.setStartDelay(delay);
222         final ValidationResult result = parameters.validate();
223         assertThat(result.isValid()).isFalse();
224     }
225
226 }