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.assertEquals;
25 import static org.junit.Assert.assertNotNull;
26 import static org.junit.Assert.assertNull;
27 import static org.mockito.ArgumentMatchers.anyMap;
28 import static org.mockito.ArgumentMatchers.anyString;
29 import static org.mockito.ArgumentMatchers.contains;
30 import static org.mockito.ArgumentMatchers.eq;
31 import static org.mockito.ArgumentMatchers.isNull;
32 import static org.mockito.ArgumentMatchers.startsWith;
33 import static org.mockito.Mockito.mock;
34 import static org.mockito.Mockito.when;
37 import java.io.IOException;
38 import java.nio.file.Files;
40 import java.util.UUID;
41 import org.junit.Before;
42 import org.junit.Test;
43 import org.onap.policy.aai.util.Serialization;
44 import org.onap.policy.rest.RestManager;
45 import org.onap.policy.rest.RestManager.Pair;
47 public class AaiManagerTest {
48 private static final String VSERVER_NAME = "vserverName";
49 private static final String CQ_QUERY_URL = "http://testing.cq.query";
50 private static final String WITCH = "Witch";
51 private static final String DOROTHY = "Dorothy";
52 private static final String SOME_URL = "http://somewhere.over.the.rainbow";
53 private static final String ANOTHER_URL = "http://somewhere.under.the.rainbow";
54 private static final String TENANT_RESPONSE_SAMPLE =
55 "src/test/resources/org/onap/policy/aai/AaiTenantResponse.json";
57 private RestManager restManagerMock;
58 private UUID aaiNqRequestUuid = UUID.randomUUID();
59 private Pair<Integer, String> httpResponseOk;
60 private Pair<Integer, String> httpResponseErr0;
61 private Pair<Integer, String> httpResponseErr1;
62 private Pair<Integer, String> httpResponseWait;
63 private Pair<Integer, String> httpTenantResponseOk;
64 private Pair<Integer, String> httpCqResponseOk;
69 * @throws Exception if error occurs
72 public void beforeTestAaiManager() throws Exception {
73 restManagerMock = mock(RestManager.class);
75 String aaiCqResponse = new AaiCqResponseTest().getAaiCqResponse();
76 String tenantResponse = this.getTenantQueryResponse();
77 httpCqResponseOk = restManagerMock.new Pair<>(200, aaiCqResponse);
78 httpTenantResponseOk = restManagerMock.new Pair<>(200, tenantResponse);
79 AaiNqResponse aaiNqResponse = new AaiNqResponseTest().getAaiNqResponse();
80 httpResponseOk = restManagerMock.new Pair<>(200, Serialization.gsonPretty.toJson(aaiNqResponse));
81 httpResponseErr0 = restManagerMock.new Pair<>(200, null);
82 httpResponseErr1 = restManagerMock.new Pair<>(200, "{");
83 httpResponseWait = restManagerMock.new Pair<>(503, null);
89 public void testAaiCqResponse() {
90 AaiManager aaiManager = new AaiManager(restManagerMock);
91 assertNotNull(aaiManager);
93 UUID vserverNameRequestId = UUID.randomUUID();
95 when(restManagerMock.put(startsWith(CQ_QUERY_URL), eq("Foo"), eq("Bar"), anyMap(), anyString(),
96 anyString())).thenReturn(httpCqResponseOk);
98 when(restManagerMock.get(startsWith(CQ_QUERY_URL), eq("Foo"), eq("Bar"), anyMap()))
99 .thenReturn(httpTenantResponseOk);
101 AaiCqResponse aaiCqResponse =
102 aaiManager.getCustomQueryResponse(CQ_QUERY_URL, "Foo", "Bar", vserverNameRequestId, "Foo");
103 assertNotNull(aaiCqResponse);
105 when(restManagerMock.put(eq(""), eq("Foo"), eq("Bar"), anyMap(), anyString(), anyString()))
106 .thenReturn(httpResponseErr0);
108 when(restManagerMock.get(eq("/aai/v11/query?format=resource"), eq("Foo"), eq("Bar"), anyMap()))
109 .thenReturn(httpResponseErr0);
111 AaiCqResponse aaiCqResponseNull =
112 aaiManager.getCustomQueryResponse("", "Foo", "Bar", vserverNameRequestId, "Foo");
113 assertNull(aaiCqResponseNull);
116 when(restManagerMock.put(eq("Error"), eq("Foo"), eq("Bar"), anyMap(), anyString(), anyString()))
117 .thenReturn(httpResponseErr1);
119 when(restManagerMock.get(eq("Error/aai/v11/query?format=resource"), eq("Foo"), eq("Bar"), anyMap()))
120 .thenReturn(httpResponseErr1);
122 AaiCqResponse aaiCqResponseErr =
123 aaiManager.getCustomQueryResponse("Error", "Foo", "Bar", vserverNameRequestId, "Foo");
124 assertNull(aaiCqResponseErr);
127 private String getTenantQueryResponse() throws IOException {
128 String responseString = "";
129 responseString = new String(Files.readAllBytes(new File(TENANT_RESPONSE_SAMPLE).toPath()));
130 return responseString;
134 public void testAaiManagerAaiNqRequest() {
136 AaiManager aaiManager = new AaiManager(restManagerMock);
137 assertNotNull(aaiManager);
139 UUID aaiNqUuid = UUID.randomUUID();
141 AaiNqQueryParameters aaiNqQueryParameters = new AaiNqQueryParameters();
142 AaiNqNamedQuery aaiNqNamedQuery = new AaiNqNamedQuery();
143 aaiNqNamedQuery.setNamedQueryUuid(aaiNqUuid);
144 aaiNqQueryParameters.setNamedQuery(aaiNqNamedQuery);
146 AaiNqRequest aaiNqRequest = new AaiNqRequest();
147 aaiNqRequest.setQueryParameters(aaiNqQueryParameters);
149 when(restManagerMock.post(startsWith(SOME_URL), eq(DOROTHY), eq("Gale"), anyMap(),
150 anyString(), anyString())).thenReturn(httpResponseOk);
152 AaiNqResponse aaiNqOkResponse = aaiManager.postQuery(SOME_URL, DOROTHY, "Gale",
153 aaiNqRequest, aaiNqRequestUuid);
154 assertNotNull(aaiNqOkResponse);
156 when(restManagerMock.post(isNull(), eq(DOROTHY), anyString(), anyMap(), anyString(), anyString()))
159 AaiNqResponse aaiNqNullResponse = aaiManager.postQuery(null, DOROTHY, "Gale", null, aaiNqRequestUuid);
160 assertNull(aaiNqNullResponse);
162 when(restManagerMock.post(startsWith(SOME_URL), eq(WITCH), eq("West"), anyMap(),
163 anyString(), anyString())).thenReturn(httpResponseErr0);
165 AaiNqResponse aaiNqNotOkResponse0 = aaiManager.postQuery(SOME_URL, WITCH, "West",
166 aaiNqRequest, aaiNqRequestUuid);
167 assertNull(aaiNqNotOkResponse0);
169 when(restManagerMock.post(startsWith(ANOTHER_URL), eq(WITCH), eq("West"), anyMap(),
170 anyString(), anyString())).thenReturn(httpResponseErr1);
172 AaiNqResponse aaiNqNotOkResponse1 = aaiManager.postQuery(ANOTHER_URL, WITCH, "West",
173 aaiNqRequest, aaiNqRequestUuid);
174 assertNull(aaiNqNotOkResponse1);
178 public void testAaiManagerQueryByVserverName() {
179 AaiManager aaiManager = new AaiManager(restManagerMock);
180 assertNotNull(aaiManager);
182 UUID vserverNameRequestId = UUID.randomUUID();
184 when(restManagerMock.get(startsWith(SOME_URL), eq(DOROTHY), eq("Gale"), anyMap()))
185 .thenReturn(httpResponseOk);
187 AaiGetVserverResponse vserverResponse = aaiManager.getQueryByVserverName(SOME_URL,
188 DOROTHY, "Gale", vserverNameRequestId, VSERVER_NAME);
189 assertNotNull(vserverResponse);
191 AaiGetVserverResponse vserverNullResponse =
192 aaiManager.getQueryByVserverName(null, DOROTHY, "Gale", vserverNameRequestId, VSERVER_NAME);
193 assertNull(vserverNullResponse);
195 when(restManagerMock.get(startsWith(ANOTHER_URL), eq(WITCH), eq("West"), anyMap()))
196 .thenReturn(httpResponseErr0);
198 AaiGetVserverResponse vserverNotOkResponse0 = aaiManager.getQueryByVserverName(
199 ANOTHER_URL, WITCH, "West", vserverNameRequestId, VSERVER_NAME);
200 assertNull(vserverNotOkResponse0);
204 public void testAaiManagerQueryByVnfId() {
205 AaiManager aaiManager = new AaiManager(restManagerMock);
206 assertNotNull(aaiManager);
208 UUID vserverNameRequestId = UUID.randomUUID();
210 when(restManagerMock.get(startsWith(SOME_URL), eq(DOROTHY), eq("Gale"), anyMap()))
211 .thenReturn(httpResponseOk);
213 AaiGetVnfResponse vnfResponse = aaiManager.getQueryByVnfId(SOME_URL, DOROTHY,
214 "Gale", vserverNameRequestId, "vnfID");
215 assertNotNull(vnfResponse);
219 public void testAaiManagerQueryByVnfName() {
220 AaiManager aaiManager = new AaiManager(restManagerMock);
221 assertNotNull(aaiManager);
223 UUID vserverNameRequestId = UUID.randomUUID();
225 when(restManagerMock.get(startsWith(SOME_URL), eq(DOROTHY), eq("Gale"), anyMap()))
226 .thenReturn(httpResponseOk);
228 AaiGetVnfResponse vnfResponse = aaiManager.getQueryByVnfId(SOME_URL, DOROTHY,
229 "Gale", vserverNameRequestId, "vnfName");
230 assertNotNull(vnfResponse);
234 public void testAaiManagerGetPnf() {
235 AaiManager aaiManager = new AaiManager(restManagerMock);
236 assertNotNull(aaiManager);
237 String pnfName = "test-pnf";
238 String pnfResponse = "{\"pnf-name\":" + pnfName
239 + ",\"pnf-id\":\"123456\",\"in-maint\":false,\"ipaddress-v4-oam\":\"1.1.1.1\"}";
241 Pair<Integer, String> pnfHttpResponse = restManagerMock.new Pair<>(200, pnfResponse);
242 when(restManagerMock.get(contains(pnfName), eq(DOROTHY), eq("Gale"), anyMap()))
243 .thenReturn(pnfHttpResponse);
245 Map<String, String> pnfParams = aaiManager.getPnf(SOME_URL, DOROTHY, "Gale", UUID.randomUUID(), pnfName);
246 assertNotNull(pnfParams);
247 assertEquals(pnfName, pnfParams.get("pnf.pnf-name"));