2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
6 * Modifications Copyright (C) 2019 Nordix Foundation.
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 * ============LICENSE_END=========================================================
22 package org.onap.policy.aai;
24 import static org.junit.Assert.assertNotNull;
25 import static org.junit.Assert.assertNull;
26 import static org.mockito.ArgumentMatchers.anyMap;
27 import static org.mockito.ArgumentMatchers.anyString;
28 import static org.mockito.ArgumentMatchers.eq;
29 import static org.mockito.ArgumentMatchers.isNull;
30 import static org.mockito.ArgumentMatchers.startsWith;
31 import static org.mockito.Mockito.mock;
32 import static org.mockito.Mockito.when;
35 import java.io.IOException;
36 import java.nio.file.Files;
37 import java.util.HashMap;
39 import java.util.UUID;
40 import org.junit.Before;
41 import org.junit.Test;
42 import org.onap.policy.aai.util.Serialization;
43 import org.onap.policy.rest.RestManager;
44 import org.onap.policy.rest.RestManager.Pair;
46 public class AaiManagerTest {
47 private static final String VSERVER_NAME = "vserverName";
48 private static final String CQ_QUERY_URL = "http://testing.cq.query";
49 private static final String WITCH = "Witch";
50 private static final String DOROTHY = "Dorothy";
51 private static final String SOME_URL = "http://somewhere.over.the.rainbow";
52 private static final String ANOTHER_URL = "http://somewhere.under.the.rainbow";
53 RestManager restManagerMock;
54 UUID aaiNqRequestUuid = UUID.randomUUID();
55 Pair<Integer, String> httpResponseOk;
56 Pair<Integer, String> httpResponseErr0;
57 Pair<Integer, String> httpResponseErr1;
58 Pair<Integer, String> httpResponseWait;
59 Pair<Integer, String> httpTenantResponseOk;
60 Pair<Integer, String> httpCqResponseOk;
62 private static final String TENANT_RESPONSE_SAMPLE =
63 "src/test/resources/org/onap/policy/aai/AaiTenantResponse.json";
70 * @throws Exception if error occurs
73 public void beforeTestAaiManager() throws Exception {
74 restManagerMock = mock(RestManager.class);
76 Map<String, String> expectedHeaders = new HashMap<>();
77 expectedHeaders.put("X-FromAppId", "POLICY");
78 expectedHeaders.put("X-TransactionId", aaiNqRequestUuid.toString());
79 expectedHeaders.put("Accept", "application/json");
81 String aaiCqResponse = new AaiCqResponseTest().getAaiCqResponse();
82 String tenantResponse = this.getTenantQueryResponse();
83 httpCqResponseOk = restManagerMock.new Pair<>(200, aaiCqResponse);
84 httpTenantResponseOk = restManagerMock.new Pair<>(200, tenantResponse);
85 AaiNqResponse aaiNqResponse = new AaiNqResponseTest().getAaiNqResponse();
86 httpResponseOk = restManagerMock.new Pair<>(200, Serialization.gsonPretty.toJson(aaiNqResponse));
87 httpResponseErr0 = restManagerMock.new Pair<>(200, null);
88 httpResponseErr1 = restManagerMock.new Pair<>(200, "{");
89 httpResponseWait = restManagerMock.new Pair<>(503, null);
95 public void testAaiCqResponse() {
96 AaiManager aaiManager = new AaiManager(restManagerMock);
97 assertNotNull(aaiManager);
99 UUID vserverNameRequestId = UUID.randomUUID();
101 when(restManagerMock.put(startsWith(CQ_QUERY_URL), eq("Foo"), eq("Bar"), anyMap(), anyString(),
102 anyString())).thenReturn(httpCqResponseOk);
104 when(restManagerMock.get(startsWith(CQ_QUERY_URL), eq("Foo"), eq("Bar"), anyMap()))
105 .thenReturn(httpTenantResponseOk);
107 AaiCqResponse aaiCqResponse =
108 aaiManager.getCustomQueryResponse(CQ_QUERY_URL, "Foo", "Bar", vserverNameRequestId, "Foo");
109 assertNotNull(aaiCqResponse);
111 when(restManagerMock.put(eq(""), eq("Foo"), eq("Bar"), anyMap(), anyString(), anyString()))
112 .thenReturn(httpResponseErr0);
114 when(restManagerMock.get(eq("/aai/v11/query?format=resource"), eq("Foo"), eq("Bar"), anyMap()))
115 .thenReturn(httpResponseErr0);
117 AaiCqResponse aaiCqResponseNull =
118 aaiManager.getCustomQueryResponse("", "Foo", "Bar", vserverNameRequestId, "Foo");
119 assertNull(aaiCqResponseNull);
122 when(restManagerMock.put(eq("Error"), eq("Foo"), eq("Bar"), anyMap(), anyString(), anyString()))
123 .thenReturn(httpResponseErr1);
125 when(restManagerMock.get(eq("Error/aai/v11/query?format=resource"), eq("Foo"), eq("Bar"), anyMap()))
126 .thenReturn(httpResponseErr1);
128 AaiCqResponse aaiCqResponseErr =
129 aaiManager.getCustomQueryResponse("Error", "Foo", "Bar", vserverNameRequestId, "Foo");
130 assertNull(aaiCqResponseErr);
133 private String getTenantQueryResponse() throws IOException {
134 String responseString = "";
135 responseString = new String(Files.readAllBytes(new File(TENANT_RESPONSE_SAMPLE).toPath()));
136 return responseString;
140 public void testAaiManagerAaiNqRequest() {
142 AaiManager aaiManager = new AaiManager(restManagerMock);
143 assertNotNull(aaiManager);
145 UUID aaiNqUuid = UUID.randomUUID();
147 AaiNqQueryParameters aaiNqQueryParameters = new AaiNqQueryParameters();
148 AaiNqNamedQuery aaiNqNamedQuery = new AaiNqNamedQuery();
149 aaiNqNamedQuery.setNamedQueryUuid(aaiNqUuid);
150 aaiNqQueryParameters.setNamedQuery(aaiNqNamedQuery);
152 AaiNqRequest aaiNqRequest = new AaiNqRequest();
153 aaiNqRequest.setQueryParameters(aaiNqQueryParameters);
155 when(restManagerMock.post(startsWith(SOME_URL), eq(DOROTHY), eq("Gale"), anyMap(),
156 anyString(), anyString())).thenReturn(httpResponseOk);
158 AaiNqResponse aaiNqOkResponse = aaiManager.postQuery(SOME_URL, DOROTHY, "Gale",
159 aaiNqRequest, aaiNqRequestUuid);
160 assertNotNull(aaiNqOkResponse);
162 when(restManagerMock.post(isNull(), eq(DOROTHY), anyString(), anyMap(), anyString(), anyString()))
165 AaiNqResponse aaiNqNullResponse = aaiManager.postQuery(null, DOROTHY, "Gale", null, aaiNqRequestUuid);
166 assertNull(aaiNqNullResponse);
168 when(restManagerMock.post(startsWith(SOME_URL), eq(WITCH), eq("West"), anyMap(),
169 anyString(), anyString())).thenReturn(httpResponseErr0);
171 AaiNqResponse aaiNqNotOkResponse0 = aaiManager.postQuery(SOME_URL, WITCH, "West",
172 aaiNqRequest, aaiNqRequestUuid);
173 assertNull(aaiNqNotOkResponse0);
175 when(restManagerMock.post(startsWith(ANOTHER_URL), eq(WITCH), eq("West"), anyMap(),
176 anyString(), anyString())).thenReturn(httpResponseErr1);
178 AaiNqResponse aaiNqNotOkResponse1 = aaiManager.postQuery(ANOTHER_URL, WITCH, "West",
179 aaiNqRequest, aaiNqRequestUuid);
180 assertNull(aaiNqNotOkResponse1);
184 public void testAaiManagerQueryByVserverName() {
185 AaiManager aaiManager = new AaiManager(restManagerMock);
186 assertNotNull(aaiManager);
188 UUID vserverNameRequestId = UUID.randomUUID();
190 when(restManagerMock.get(startsWith(SOME_URL), eq(DOROTHY), eq("Gale"), anyMap()))
191 .thenReturn(httpResponseOk);
193 AaiGetVserverResponse vserverResponse = aaiManager.getQueryByVserverName(SOME_URL,
194 DOROTHY, "Gale", vserverNameRequestId, VSERVER_NAME);
195 assertNotNull(vserverResponse);
197 AaiGetVserverResponse vserverNullResponse =
198 aaiManager.getQueryByVserverName(null, DOROTHY, "Gale", vserverNameRequestId, VSERVER_NAME);
199 assertNull(vserverNullResponse);
201 when(restManagerMock.get(startsWith(ANOTHER_URL), eq(WITCH), eq("West"), anyMap()))
202 .thenReturn(httpResponseErr0);
204 AaiGetVserverResponse vserverNotOkResponse0 = aaiManager.getQueryByVserverName(
205 ANOTHER_URL, WITCH, "West", vserverNameRequestId, VSERVER_NAME);
206 assertNull(vserverNotOkResponse0);
210 public void testAaiManagerQueryByVnfId() {
211 AaiManager aaiManager = new AaiManager(restManagerMock);
212 assertNotNull(aaiManager);
214 UUID vserverNameRequestId = UUID.randomUUID();
216 when(restManagerMock.get(startsWith(SOME_URL), eq(DOROTHY), eq("Gale"), anyMap()))
217 .thenReturn(httpResponseOk);
219 AaiGetVnfResponse vnfResponse = aaiManager.getQueryByVnfId(SOME_URL, DOROTHY,
220 "Gale", vserverNameRequestId, "vnfID");
221 assertNotNull(vnfResponse);
225 public void testAaiManagerQueryByVnfName() {
226 AaiManager aaiManager = new AaiManager(restManagerMock);
227 assertNotNull(aaiManager);
229 UUID vserverNameRequestId = UUID.randomUUID();
231 when(restManagerMock.get(startsWith(SOME_URL), eq(DOROTHY), eq("Gale"), anyMap()))
232 .thenReturn(httpResponseOk);
234 AaiGetVnfResponse vnfResponse = aaiManager.getQueryByVnfId(SOME_URL, DOROTHY,
235 "Gale", vserverNameRequestId, "vnfName");
236 assertNotNull(vnfResponse);