2 * ============LICENSE_START======================================================================
3 * Copyright (C) 2018-2019 Nordix Foundation. All rights reserved.
4 * Modifications Copyright (C) 2021 Nokia. All rights reserved.
5 * ===============================================================================================
6 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
7 * in compliance with the License. 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 distributed under the License
12 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
13 * or implied. See the License for the specific language governing permissions and limitations under
15 * ============LICENSE_END========================================================================
18 package org.onap.dcaegen2.collectors.datafile.service;
20 import static org.junit.jupiter.api.Assertions.assertEquals;
21 import static org.junit.jupiter.api.Assertions.assertFalse;
22 import static org.junit.jupiter.api.Assertions.assertTrue;
24 import java.net.URISyntaxException;
25 import java.util.List;
27 import org.apache.hc.core5.http.NameValuePair;
28 import org.apache.hc.core5.net.URIBuilder;
29 import org.junit.jupiter.api.Test;
30 import org.onap.dcaegen2.collectors.datafile.commons.FileServerData;
34 private static final String XNF_ADDRESS = "127.0.0.1";
35 private static final int PORT = 443;
36 private static final String JWT_PASSWORD = "thisIsThePassword";
37 private static final String ACCESS_TOKEN = "access_token";
38 private static final String ANOTHER_TOKEN = "another_token";
39 private static final String ANOTHER_DATA = "another_data";
40 private static final String FRAGMENT = "thisIsTheFragment";
41 private static final String USERNAME = "bob";
42 private static final String PASSWORD = "123";
45 void shouldReturnSuccessfulResponse() {
46 assertTrue(HttpUtils.isSuccessfulResponseCodeWithDataRouter(200));
50 void shouldReturnBadResponse() {
51 assertFalse(HttpUtils.isSuccessfulResponseCodeWithDataRouter(404));
55 void isSingleQueryWithJWT_validToken() throws URISyntaxException {
56 assertTrue(HttpUtils.isQueryWithSingleJWT(validTokenSingleQueryData()));
57 assertTrue(HttpUtils.isQueryWithSingleJWT(validTokenDoubleQueryData()));
61 void isSingleQueryWithJWT_invalidToken() throws URISyntaxException {
62 assertFalse(HttpUtils.isQueryWithSingleJWT(validQueryNoToken()));
63 assertFalse(HttpUtils.isQueryWithSingleJWT(queryDataDoubleToken()));
64 assertFalse(HttpUtils.isQueryWithSingleJWT(null));
68 void getJWTToken_jWTTokenPresent() throws URISyntaxException {
69 assertEquals(JWT_PASSWORD, HttpUtils.getJWTToken(fileServerDataWithJWTToken()));
70 assertEquals(JWT_PASSWORD, HttpUtils.getJWTToken(fileServerDataWithJWTTokenLongQueryAndFragment()));
74 void getJWTToken_JWTTokenNotPresent() throws URISyntaxException {
75 assertEquals("", HttpUtils.getJWTToken(fileServerDataQueryWithoutToken()));
79 void prepareUri_UriWithoutPort() {
80 FileServerData serverData =
81 FileServerData.builder().serverAddress(XNF_ADDRESS).userId(USERNAME).password(PASSWORD).build();
82 String REMOTE_FILE = "any";
84 String retrievedUri = HttpUtils.prepareUri("http", serverData, REMOTE_FILE, 80);
85 assertTrue(retrievedUri.startsWith("http://" + XNF_ADDRESS + ":80"));
89 void prepareUri_verifyUriWithTokenAndFragment() throws URISyntaxException {
90 String file = "/file";
91 String expected = "http://" + XNF_ADDRESS + ":" + PORT + file + "?" + ANOTHER_TOKEN + "=" + ANOTHER_DATA + "&"
92 + ANOTHER_TOKEN + "=" + ANOTHER_DATA + "&" + ANOTHER_TOKEN + "=" + ANOTHER_DATA + "#" + FRAGMENT;
93 assertEquals(expected,
94 HttpUtils.prepareUri("http", fileServerDataWithJWTTokenLongQueryAndFragment(), file, 443));
98 void prepareUri_verifyUriWithoutTokenAndWithoutFragment() throws URISyntaxException {
99 String file = "/file";
100 String expected = "http://" + XNF_ADDRESS + ":" + PORT + file;
101 assertEquals(expected, HttpUtils.prepareUri("http", fileServerDataNoTokenNoFragment(), file, 443));
104 private List<NameValuePair> validTokenSingleQueryData() throws URISyntaxException {
105 String query = "?" + ACCESS_TOKEN + "=" + JWT_PASSWORD;
106 return new URIBuilder(query).getQueryParams();
109 private List<NameValuePair> validTokenDoubleQueryData() throws URISyntaxException {
110 StringBuilder doubleQuery = new StringBuilder();
111 doubleQuery.append("?" + ANOTHER_TOKEN + "=" + ANOTHER_DATA + "&");
112 doubleQuery.append(ACCESS_TOKEN + "=" + JWT_PASSWORD);
113 return new URIBuilder(doubleQuery.toString()).getQueryParams();
116 private List<NameValuePair> validQueryNoToken() throws URISyntaxException {
117 String query = "?" + ANOTHER_TOKEN + "=" + JWT_PASSWORD;
118 return new URIBuilder(query).getQueryParams();
121 private List<NameValuePair> queryDataDoubleToken() throws URISyntaxException {
122 StringBuilder doubleToken = new StringBuilder();
123 doubleToken.append("?" + ACCESS_TOKEN + "=" + JWT_PASSWORD + "&");
124 doubleToken.append(ACCESS_TOKEN + "=" + JWT_PASSWORD + "&");
125 doubleToken.append(ANOTHER_TOKEN + "=" + ANOTHER_DATA);
126 return new URIBuilder(doubleToken.toString()).getQueryParams();
129 private FileServerData fileServerDataWithJWTToken() throws URISyntaxException {
130 String query = "?" + ACCESS_TOKEN + "=" + JWT_PASSWORD;
132 return FileServerData.builder().serverAddress(XNF_ADDRESS).userId("").password("").port(PORT)
133 .queryParameters(new URIBuilder(query).getQueryParams()).build();
136 private FileServerData fileServerDataWithJWTTokenLongQueryAndFragment() throws URISyntaxException {
137 StringBuilder query = new StringBuilder();
138 query.append("?" + ANOTHER_TOKEN + "=" + ANOTHER_DATA + "&");
139 query.append(ANOTHER_TOKEN + "=" + ANOTHER_DATA + "&");
140 query.append(ACCESS_TOKEN + "=" + JWT_PASSWORD + "&");
141 query.append(ANOTHER_TOKEN + "=" + ANOTHER_DATA);
143 return FileServerData.builder().serverAddress(XNF_ADDRESS).userId("").password("").port(PORT)
144 .queryParameters(new URIBuilder(query.toString()).getQueryParams()).uriRawFragment(FRAGMENT).build();
147 private FileServerData fileServerDataQueryWithoutToken() throws URISyntaxException {
148 StringBuilder query = new StringBuilder();
149 query.append("?" + ANOTHER_TOKEN + "=" + ANOTHER_DATA);
151 return FileServerData.builder().serverAddress(XNF_ADDRESS).userId("").password("").port(PORT)
152 .queryParameters(new URIBuilder(query.toString()).getQueryParams()).build();
155 private FileServerData fileServerDataNoTokenNoFragment() throws URISyntaxException {
156 return FileServerData.builder().serverAddress(XNF_ADDRESS).userId("").password("").port(PORT)
157 .queryParameters(new URIBuilder("").getQueryParams()).uriRawFragment("").build();