2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2019-2023 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
9 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 * SPDX-License-Identifier: Apache-2.0
18 * ============LICENSE_END=========================================================
21 package org.oran.datafile.model;
23 import static org.junit.jupiter.api.Assertions.assertEquals;
24 import static org.junit.jupiter.api.Assertions.assertFalse;
25 import static org.junit.jupiter.api.Assertions.assertThrows;
26 import static org.junit.jupiter.api.Assertions.assertTrue;
28 import java.nio.file.Path;
29 import java.nio.file.Paths;
30 import java.util.Collections;
31 import org.junit.jupiter.api.Test;
32 import org.oran.datafile.configuration.AppConfig;
33 import org.oran.datafile.exceptions.DatafileTaskException;
37 void testSchemeGetSchemeFromString() throws DatafileTaskException {
38 assertThrows(DatafileTaskException.class, () -> FileData.Scheme.getSchemeFromString("Scheme String"));
39 assertEquals(FileData.Scheme.FTPES, FileData.Scheme.getSchemeFromString("FTPES"));
40 assertEquals(FileData.Scheme.SFTP, FileData.Scheme.getSchemeFromString("SFTP"));
41 assertEquals(FileData.Scheme.HTTP, FileData.Scheme.getSchemeFromString("HTTP"));
42 assertEquals(FileData.Scheme.HTTPS, FileData.Scheme.getSchemeFromString("HTTPS"));
46 void testSchemeIsFtpScheme() {
47 assertTrue(FileData.Scheme.isFtpScheme(FileData.Scheme.FTPES));
48 assertTrue(FileData.Scheme.isFtpScheme(FileData.Scheme.SFTP));
49 assertFalse(FileData.Scheme.isFtpScheme(FileData.Scheme.HTTP));
50 assertFalse(FileData.Scheme.isFtpScheme(FileData.Scheme.HTTPS));
54 void testSourceName() {
55 FileReadyMessage.MessageMetaData metaData = new FileReadyMessage.MessageMetaData(
56 "sourceName", "otherField1", "otherField2", "otherField3", 42, "field5", "field6",
57 "field7", "field8", 123456789L, 987654321L, "field11", "field12"
59 FileData fileData = FileData.builder().messageMetaData(metaData).build();
61 assertEquals("field8", fileData.sourceName());
66 FileReadyMessage.MessageMetaData metaData = new FileReadyMessage.MessageMetaData(
67 "sourceName", "otherField1", "otherField2", "otherField3", 42, "field5", "field6",
68 "field7", "field8", 123456789L, 987654321L, "field11", "field12"
70 FileData fileData = FileData.builder().messageMetaData(metaData).build();
72 FileReadyMessage.FileInfo fileInfo = new FileReadyMessage.FileInfo("name", "location", "hashMapField", "");
73 FileReadyMessage.ArrayOfNamedHashMap arrayOfNamedHashMap = new FileReadyMessage.ArrayOfNamedHashMap("someString", fileInfo);
74 fileData.fileInfo = arrayOfNamedHashMap;
76 assertEquals("field8/someString", fileData.name());
80 void testRemoteFilePath() {
81 FileReadyMessage.MessageMetaData metaData = new FileReadyMessage.MessageMetaData(
82 "sourceName", "otherField1", "otherField2", "otherField3", 42, "field5", "field6",
83 "field7", "field8", 123456789L, 987654321L, "field11", "field12"
85 FileData fileData = FileData.builder().messageMetaData(metaData).build();
87 FileReadyMessage.FileInfo fileInfo = new FileReadyMessage.FileInfo("name", "ftp://example.com/remote/file.txt", "hashMapField", "");
88 FileReadyMessage.ArrayOfNamedHashMap arrayOfNamedHashMap = new FileReadyMessage.ArrayOfNamedHashMap("someString", fileInfo);
89 fileData.fileInfo = arrayOfNamedHashMap;
91 assertEquals("/remote/file.txt", fileData.remoteFilePath());
96 FileReadyMessage.MessageMetaData metaData = new FileReadyMessage.MessageMetaData(
97 "sourceName", "otherField1", "otherField2", "otherField3", 42, "field5", "field6",
98 "field7", "field8", 123456789L, 987654321L, "field11", "field12"
100 FileData fileData = FileData.builder().messageMetaData(metaData).build();
102 FileReadyMessage.FileInfo fileInfo = new FileReadyMessage.FileInfo("name", "http://example.com/file.txt", "hashMapField", "");
103 FileReadyMessage.ArrayOfNamedHashMap arrayOfNamedHashMap = new FileReadyMessage.ArrayOfNamedHashMap("someString", fileInfo);
104 fileData.fileInfo = arrayOfNamedHashMap;
106 assertEquals(FileData.Scheme.HTTP, fileData.scheme());
110 void testGetLocalFilePath() {
111 AppConfig config = new AppConfig();
112 config.setCollectedFilesPath("/local/path");
113 FileReadyMessage.MessageMetaData metaData = new FileReadyMessage.MessageMetaData(
114 "sourceName", "otherField1", "otherField2", "otherField3", 42, "field5", "field6",
115 "field7", "field8", 123456789L, 987654321L, "field11", "field12"
117 FileData fileData = FileData.builder().messageMetaData(metaData).build();
119 FileReadyMessage.FileInfo fileInfo = new FileReadyMessage.FileInfo("name", "http://example.com/file.txt", "hashMapField", "");
120 FileReadyMessage.ArrayOfNamedHashMap arrayOfNamedHashMap = new FileReadyMessage.ArrayOfNamedHashMap("someString", fileInfo);
121 fileData.fileInfo = arrayOfNamedHashMap;
123 Path expectedPath = Paths.get("/local/path/field8/someString");
124 Path actualPath = fileData.getLocalFilePath(config);
125 assertEquals(expectedPath, actualPath);
129 void testFileServerDataWithUserInfo() throws Exception {
131 AppConfig config = new AppConfig();
132 config.setCollectedFilesPath("/local/path");
133 FileReadyMessage.MessageMetaData metaData = new FileReadyMessage.MessageMetaData(
134 "sourceName", "otherField1", "otherField2", "otherField3", 42, "field5", "field6",
135 "field7", "field8", 123456789L, 987654321L, "field11", "field12"
137 FileData fileData = FileData.builder().messageMetaData(metaData).build();
139 FileReadyMessage.FileInfo fileInfo = new FileReadyMessage.FileInfo("name", "http://username:password@example.com:8080/path?query1=value1&query2=value2", "hashMapField", "");
140 FileReadyMessage.ArrayOfNamedHashMap arrayOfNamedHashMap = new FileReadyMessage.ArrayOfNamedHashMap("someString", fileInfo);
141 fileData.fileInfo = arrayOfNamedHashMap;
144 FileServerData result = fileData.fileServerData();
147 assertEquals("username", result.userId);
148 assertEquals("password", result.password);
152 void testFileServerDataWithFragment() throws Exception {
154 AppConfig config = new AppConfig();
155 config.setCollectedFilesPath("/local/path");
156 FileReadyMessage.MessageMetaData metaData = new FileReadyMessage.MessageMetaData(
157 "sourceName", "otherField1", "otherField2", "otherField3", 42, "field5", "field6",
158 "field7", "field8", 123456789L, 987654321L, "field11", "field12"
160 FileData fileData = FileData.builder().messageMetaData(metaData).build();
162 FileReadyMessage.FileInfo fileInfo = new FileReadyMessage.FileInfo("name", "http://username@example.com:8080/path?query1=value1&query2=value2#rawFragment", "hashMapField", "");
163 FileReadyMessage.ArrayOfNamedHashMap arrayOfNamedHashMap = new FileReadyMessage.ArrayOfNamedHashMap("someString", fileInfo);
164 fileData.fileInfo = arrayOfNamedHashMap;
167 FileServerData result = fileData.fileServerData();
170 assertEquals("rawFragment", result.uriRawFragment);
174 void testFileServerDataWithoutUserInfo() throws Exception {
176 AppConfig config = new AppConfig();
177 config.setCollectedFilesPath("/local/path");
178 FileReadyMessage.MessageMetaData metaData = new FileReadyMessage.MessageMetaData(
179 "sourceName", "otherField1", "otherField2", "otherField3", 42, "field5", "field6",
180 "field7", "field8", 123456789L, 987654321L, "field11", "field12"
182 FileData fileData = FileData.builder().messageMetaData(metaData).build();
184 FileReadyMessage.FileInfo fileInfo = new FileReadyMessage.FileInfo("name", "http://example.com:8080/path?query1=value1&query2=value2", "hashMapField", "");
185 FileReadyMessage.ArrayOfNamedHashMap arrayOfNamedHashMap = new FileReadyMessage.ArrayOfNamedHashMap("someString", fileInfo);
186 fileData.fileInfo = arrayOfNamedHashMap;
188 FileServerData result = fileData.fileServerData();
189 assertEquals("example.com", result.getServerAddress());
193 void testInvalidScheme() throws Exception {
195 AppConfig config = new AppConfig();
196 config.setCollectedFilesPath("/local/path");
197 FileReadyMessage.MessageMetaData metaData = new FileReadyMessage.MessageMetaData(
198 "sourceName", "otherField1", "otherField2", "otherField3", 42, "field5", "field6",
199 "field7", "field8", 123456789L, 987654321L, "field11", "field12"
201 FileData fileData = FileData.builder().messageMetaData(metaData).build();
203 FileReadyMessage.FileInfo fileInfo = new FileReadyMessage.FileInfo("name", "abcxyz://example.com:8080/path?query1=value1&query2=value2", "hashMapField", "");
204 FileReadyMessage.ArrayOfNamedHashMap arrayOfNamedHashMap = new FileReadyMessage.ArrayOfNamedHashMap("someString", fileInfo);
205 fileData.fileInfo = arrayOfNamedHashMap;
208 FileData.Scheme result = fileData.scheme();
209 assertEquals("FTPES", result.name());
213 void testCreateFileData(){
215 FileReadyMessage.MessageMetaData metaData = new FileReadyMessage.MessageMetaData(
216 "sourceName", "otherField1", "otherField2", "otherField3", 42, "field5", "field6",
217 "field7", "field8", 123456789L, 987654321L, "field11", "field12"
220 FileReadyMessage fileReadyMessage = FileReadyMessage.builder()
222 FileReadyMessage.Event.builder()
223 .commonEventHeader(metaData)
225 FileReadyMessage.NotificationFields.builder()
226 .notificationFieldsVersion("1.0")
228 .changeIdentifier("Change123")
229 .arrayOfNamedHashMap(
230 Collections.singletonList(
231 FileReadyMessage.ArrayOfNamedHashMap.builder()
234 FileReadyMessage.FileInfo.builder()
235 .fileFormatType("Text")
236 .location("ftp://example.com/files/file.txt")
237 .fileFormatVersion("1.0")
250 Iterable<FileData> fileDataIterable = FileData.createFileData(fileReadyMessage);
251 FileReadyMessage.MessageMetaData messageMetaData = fileDataIterable.iterator().next().messageMetaData;
253 assertEquals("field8", messageMetaData.sourceName);