Merge "Fix more sonar issues in models: yaml to dao"
[policy/models.git] / models-interactions / model-impl / aai / src / test / java / org / onap / policy / aai / AaiManagerTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * aai
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
11  *
12  *      http://www.apache.org/licenses/LICENSE-2.0
13  *
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=========================================================
20  */
21
22 package org.onap.policy.aai;
23
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;
33
34 import java.io.File;
35 import java.io.IOException;
36 import java.nio.file.Files;
37 import java.util.HashMap;
38 import java.util.Map;
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;
45
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;
61
62     private static final String TENANT_RESPONSE_SAMPLE =
63             "src/test/resources/org/onap/policy/aai/AaiTenantResponse.json";
64
65
66
67     /**
68      * Set up test cases.
69      *
70      * @throws Exception if error occurs
71      */
72     @Before
73     public void beforeTestAaiManager() throws Exception {
74         restManagerMock = mock(RestManager.class);
75
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");
80
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);
90
91     }
92
93
94     @Test
95     public void testAaiCqResponse() {
96         AaiManager aaiManager = new AaiManager(restManagerMock);
97         assertNotNull(aaiManager);
98
99         UUID vserverNameRequestId = UUID.randomUUID();
100
101         when(restManagerMock.put(startsWith(CQ_QUERY_URL), eq("Foo"), eq("Bar"), anyMap(), anyString(),
102                 anyString())).thenReturn(httpCqResponseOk);
103
104         when(restManagerMock.get(startsWith(CQ_QUERY_URL), eq("Foo"), eq("Bar"), anyMap()))
105                 .thenReturn(httpTenantResponseOk);
106
107         AaiCqResponse aaiCqResponse =
108                 aaiManager.getCustomQueryResponse(CQ_QUERY_URL, "Foo", "Bar", vserverNameRequestId, "Foo");
109         assertNotNull(aaiCqResponse);
110
111         when(restManagerMock.put(eq(""), eq("Foo"), eq("Bar"), anyMap(), anyString(), anyString()))
112                 .thenReturn(httpResponseErr0);
113
114         when(restManagerMock.get(eq("/aai/v11/query?format=resource"), eq("Foo"), eq("Bar"), anyMap()))
115                 .thenReturn(httpResponseErr0);
116
117         AaiCqResponse aaiCqResponseNull =
118                 aaiManager.getCustomQueryResponse("", "Foo", "Bar", vserverNameRequestId, "Foo");
119         assertNull(aaiCqResponseNull);
120
121
122         when(restManagerMock.put(eq("Error"), eq("Foo"), eq("Bar"), anyMap(), anyString(), anyString()))
123                 .thenReturn(httpResponseErr1);
124
125         when(restManagerMock.get(eq("Error/aai/v11/query?format=resource"), eq("Foo"), eq("Bar"), anyMap()))
126                 .thenReturn(httpResponseErr1);
127
128         AaiCqResponse aaiCqResponseErr =
129                 aaiManager.getCustomQueryResponse("Error", "Foo", "Bar", vserverNameRequestId, "Foo");
130         assertNull(aaiCqResponseErr);
131     }
132
133     private String getTenantQueryResponse() throws IOException {
134         String responseString = "";
135         responseString = new String(Files.readAllBytes(new File(TENANT_RESPONSE_SAMPLE).toPath()));
136         return responseString;
137     }
138
139     @Test
140     public void testAaiManagerAaiNqRequest() {
141
142         AaiManager aaiManager = new AaiManager(restManagerMock);
143         assertNotNull(aaiManager);
144
145         UUID aaiNqUuid = UUID.randomUUID();
146
147         AaiNqQueryParameters aaiNqQueryParameters = new AaiNqQueryParameters();
148         AaiNqNamedQuery aaiNqNamedQuery = new AaiNqNamedQuery();
149         aaiNqNamedQuery.setNamedQueryUuid(aaiNqUuid);
150         aaiNqQueryParameters.setNamedQuery(aaiNqNamedQuery);
151
152         AaiNqRequest aaiNqRequest = new AaiNqRequest();
153         aaiNqRequest.setQueryParameters(aaiNqQueryParameters);
154
155         when(restManagerMock.post(startsWith(SOME_URL), eq(DOROTHY), eq("Gale"), anyMap(),
156                 anyString(), anyString())).thenReturn(httpResponseOk);
157
158         AaiNqResponse aaiNqOkResponse = aaiManager.postQuery(SOME_URL, DOROTHY, "Gale",
159                 aaiNqRequest, aaiNqRequestUuid);
160         assertNotNull(aaiNqOkResponse);
161
162         when(restManagerMock.post(isNull(), eq(DOROTHY), anyString(), anyMap(), anyString(), anyString()))
163                 .thenReturn(null);
164
165         AaiNqResponse aaiNqNullResponse = aaiManager.postQuery(null, DOROTHY, "Gale", null, aaiNqRequestUuid);
166         assertNull(aaiNqNullResponse);
167
168         when(restManagerMock.post(startsWith(SOME_URL), eq(WITCH), eq("West"), anyMap(),
169                 anyString(), anyString())).thenReturn(httpResponseErr0);
170
171         AaiNqResponse aaiNqNotOkResponse0 = aaiManager.postQuery(SOME_URL, WITCH, "West",
172                 aaiNqRequest, aaiNqRequestUuid);
173         assertNull(aaiNqNotOkResponse0);
174
175         when(restManagerMock.post(startsWith(ANOTHER_URL), eq(WITCH), eq("West"), anyMap(),
176                 anyString(), anyString())).thenReturn(httpResponseErr1);
177
178         AaiNqResponse aaiNqNotOkResponse1 = aaiManager.postQuery(ANOTHER_URL, WITCH, "West",
179                 aaiNqRequest, aaiNqRequestUuid);
180         assertNull(aaiNqNotOkResponse1);
181     }
182
183     @Test
184     public void testAaiManagerQueryByVserverName() {
185         AaiManager aaiManager = new AaiManager(restManagerMock);
186         assertNotNull(aaiManager);
187
188         UUID vserverNameRequestId = UUID.randomUUID();
189
190         when(restManagerMock.get(startsWith(SOME_URL), eq(DOROTHY), eq("Gale"), anyMap()))
191                 .thenReturn(httpResponseOk);
192
193         AaiGetVserverResponse vserverResponse = aaiManager.getQueryByVserverName(SOME_URL,
194                 DOROTHY, "Gale", vserverNameRequestId, VSERVER_NAME);
195         assertNotNull(vserverResponse);
196
197         AaiGetVserverResponse vserverNullResponse =
198                 aaiManager.getQueryByVserverName(null, DOROTHY, "Gale", vserverNameRequestId, VSERVER_NAME);
199         assertNull(vserverNullResponse);
200
201         when(restManagerMock.get(startsWith(ANOTHER_URL), eq(WITCH), eq("West"), anyMap()))
202                 .thenReturn(httpResponseErr0);
203
204         AaiGetVserverResponse vserverNotOkResponse0 = aaiManager.getQueryByVserverName(
205                 ANOTHER_URL, WITCH, "West", vserverNameRequestId, VSERVER_NAME);
206         assertNull(vserverNotOkResponse0);
207     }
208
209     @Test
210     public void testAaiManagerQueryByVnfId() {
211         AaiManager aaiManager = new AaiManager(restManagerMock);
212         assertNotNull(aaiManager);
213
214         UUID vserverNameRequestId = UUID.randomUUID();
215
216         when(restManagerMock.get(startsWith(SOME_URL), eq(DOROTHY), eq("Gale"), anyMap()))
217                 .thenReturn(httpResponseOk);
218
219         AaiGetVnfResponse vnfResponse = aaiManager.getQueryByVnfId(SOME_URL, DOROTHY,
220                 "Gale", vserverNameRequestId, "vnfID");
221         assertNotNull(vnfResponse);
222     }
223
224     @Test
225     public void testAaiManagerQueryByVnfName() {
226         AaiManager aaiManager = new AaiManager(restManagerMock);
227         assertNotNull(aaiManager);
228
229         UUID vserverNameRequestId = UUID.randomUUID();
230
231         when(restManagerMock.get(startsWith(SOME_URL), eq(DOROTHY), eq("Gale"), anyMap()))
232                 .thenReturn(httpResponseOk);
233
234         AaiGetVnfResponse vnfResponse = aaiManager.getQueryByVnfId(SOME_URL, DOROTHY,
235                 "Gale", vserverNameRequestId, "vnfName");
236         assertNotNull(vnfResponse);
237     }
238 }