2 * ============LICENSE_START=======================================================
\r
4 * ================================================================================
\r
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
\r
6 * ================================================================================
\r
7 * Licensed under the Apache License, Version 2.0 (the "License");
\r
8 * you may not use this file except in compliance with the License.
\r
9 * You may obtain a copy of the License at
\r
11 * http://www.apache.org/licenses/LICENSE-2.0
\r
13 * Unless required by applicable law or agreed to in writing, software
\r
14 * distributed under the License is distributed on an "AS IS" BASIS,
\r
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
16 * See the License for the specific language governing permissions and
\r
17 * limitations under the License.
\r
18 * ============LICENSE_END=========================================================
\r
21 package com.att.nsa.dmaap.service;
\r
23 import static org.junit.Assert.assertTrue;
\r
24 import static org.junit.Assert.fail;
\r
25 import static org.mockito.Matchers.anyString;
\r
27 import java.io.ByteArrayInputStream;
\r
28 import java.io.FileInputStream;
\r
30 //import static org.mockito.Matchers.anyString;
\r
31 //import static org.mockito.Mockito.when;
\r
33 import java.io.IOException;
\r
34 import java.io.InputStream;
\r
36 import javax.servlet.ServletOutputStream;
\r
37 import javax.servlet.http.HttpServletRequest;
\r
38 import javax.servlet.http.HttpServletResponse;
\r
40 import org.apache.commons.io.IOUtils;
\r
41 import org.json.JSONArray;
\r
42 import org.json.JSONException;
\r
43 import org.json.JSONObject;
\r
44 import org.junit.After;
\r
45 import org.junit.Assert;
\r
46 import org.junit.Before;
\r
47 import org.junit.Test;
\r
48 import org.junit.runner.RunWith;
\r
49 import org.mockito.InjectMocks;
\r
50 import org.mockito.Mock;
\r
51 import org.mockito.MockitoAnnotations;
\r
52 import org.powermock.api.mockito.PowerMockito;
\r
53 import org.powermock.core.classloader.annotations.PrepareForTest;
\r
54 import org.powermock.modules.junit4.PowerMockRunner;
\r
56 import com.att.ajsc.beans.PropertiesMapBean;
\r
57 import com.att.ajsc.filemonitor.AJSCPropertiesMap;
\r
58 import org.onap.dmaap.dmf.mr.CambriaApiException;
\r
59 import org.onap.dmaap.dmf.mr.beans.DMaaPContext;
\r
60 import org.onap.dmaap.dmf.mr.beans.DMaaPKafkaMetaBroker;
\r
61 import org.onap.dmaap.dmf.mr.constants.CambriaConstants;
\r
62 import org.onap.dmaap.dmf.mr.exception.DMaaPAccessDeniedException;
\r
63 import org.onap.dmaap.dmf.mr.exception.DMaaPErrorMessages;
\r
64 import org.onap.dmaap.dmf.mr.metabroker.Broker.TopicExistsException;
\r
65 import org.onap.dmaap.dmf.mr.metabroker.Topic;
\r
66 import org.onap.dmaap.dmf.mr.security.DMaaPAAFAuthenticator;
\r
67 import org.onap.dmaap.dmf.mr.security.DMaaPAAFAuthenticatorImpl;
\r
68 import org.onap.dmaap.dmf.mr.security.DMaaPAuthenticator;
\r
69 import org.onap.dmaap.dmf.mr.service.MMService;
\r
70 import org.onap.dmaap.dmf.mr.utils.ConfigurationReader;
\r
71 import com.att.nsa.configs.ConfigDbException;
\r
72 import com.att.nsa.dmaap.mmagent.CreateMirrorMaker;
\r
73 import com.att.nsa.dmaap.mmagent.MirrorMaker;
\r
74 import com.att.nsa.dmaap.mmagent.UpdateMirrorMaker;
\r
75 import com.att.nsa.security.NsaAcl;
\r
76 import com.att.nsa.security.NsaApiKey;
\r
77 import com.att.nsa.security.db.simple.NsaSimpleApiKey;
\r
78 import com.google.gson.Gson;
\r
80 //@RunWith(MockitoJUnitRunner.class)
\r
81 @RunWith(PowerMockRunner.class)
\r
82 @PrepareForTest({ PropertiesMapBean.class, AJSCPropertiesMap.class })
\r
83 public class MMRestServiceTest {
\r
86 MMRestService mmRestService;
\r
89 private MMService mmservice;
\r
92 CreateMirrorMaker cMirroMaker;
\r
95 UpdateMirrorMaker uMirroMaker;
\r
97 private TopicRestService service = new TopicRestService();
\r
99 private DMaaPErrorMessages errorMessages;
\r
102 DMaaPContext dmaapContext;
\r
105 ConfigurationReader configReader;
\r
108 ServletOutputStream oStream;
\r
111 DMaaPAuthenticator<NsaSimpleApiKey> dmaaPAuthenticator;
\r
114 MirrorMaker mMaker;
\r
117 DMaaPAAFAuthenticator dmaapAAFauthenticator;
\r
120 DMaaPAAFAuthenticatorImpl impl;
\r
126 NsaSimpleApiKey nsaSimpleApiKey;
\r
129 HttpServletRequest httpServReq;
\r
132 HttpServletResponse httpServRes;
\r
135 InputStream iStream;
\r
138 DMaaPKafkaMetaBroker dmaapKafkaMetaBroker;
\r
141 Topic createdTopic;
\r
147 JSONObject jsonObj;
\r
150 JSONArray jsonArray;
\r
153 public void setUp() throws Exception {
\r
155 MockitoAnnotations.initMocks(this);
\r
159 public void tearDown() throws Exception {
\r
163 public void testCallCreateMirrorMaker() throws Exception {
\r
164 prepareForTestCommon();
\r
166 // String sampleJson = ""{ messageID:\"test\", createMirrorMaker: {
\r
167 // name:\"test\", consumer:\"test\", producer:\"test\",
\r
168 // whitelist:\"test\",status:\"test\" }}";
\r
169 String sampleJson = "{ messageID:\"test\", createMirrorMaker: { name:\"test\", consumer:\"test\", producer:\"test\"}}";
\r
170 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
\r
171 mmRestService.callCreateMirrorMaker(inputSteam);
\r
176 public void testCallCreateMirrorMaker_error4() throws Exception {
\r
177 prepareForTestCommon();
\r
179 // String sampleJson = ""{ messageID:\"test\", createMirrorMaker: {
\r
180 // name:\"test\", consumer:\"test\", producer:\"test\",
\r
181 // whitelist:\"test\",status:\"test\" }}";
\r
182 String sampleJson = "{ messageID:\"test\", createMirrorMaker: { name:\"test@#\", consumer:\"test\", producer:\"test\"}}";
\r
183 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
\r
184 mmRestService.callCreateMirrorMaker(inputSteam);
\r
189 public void testCallCreateMirrorMaker_3() throws Exception {
\r
190 prepareForTestCommon();
\r
192 // String sampleJson = ""{ messageID:\"test\", createMirrorMaker: {
\r
193 // name:\"test\", consumer:\"test\", producer:\"test\",
\r
194 // whitelist:\"test\",status:\"test\" }}";
\r
195 String sampleJson = "{ messageID:\"test\", createMirrorMaker: { name:\"\", consumer:\"test\", producer:\"test\"}}";
\r
196 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
\r
197 mmRestService.callCreateMirrorMaker(inputSteam);
\r
202 public void testCallCreateMirrorMaker_error2() throws Exception {
\r
203 prepareForTestCommon();
\r
205 // String sampleJson = ""{ messageID:\"test\", createMirrorMaker: {
\r
206 // name:\"test\", consumer:\"test\", producer:\"test\",
\r
207 // whitelist:\"test\",status:\"test\" }}";
\r
208 String sampleJson = "{ messageID:\"test\", createMirrorMaker: { name:\"test\", consumer:\"test\", producer:\"test\",whitelist:\"test\"}}";
\r
209 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
\r
210 mmRestService.callCreateMirrorMaker(inputSteam);
\r
216 public void testCallCreateMirrorMaker_error1() throws Exception {
\r
217 prepareForTestCommon();
\r
219 // String sampleJson = ""{ messageID:\"test\", createMirrorMaker: {
\r
220 // name:\"test\", consumer:\"test\", producer:\"test\",
\r
221 // whitelist:\"test\",status:\"test\" }}";
\r
222 String sampleJson = "{ messageID:\"test\"}";
\r
223 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
\r
224 mmRestService.callCreateMirrorMaker(inputSteam);
\r
230 public void testCallListAllMirrorMaker() throws Exception {
\r
231 prepareForTestCommon();
\r
233 String sampleJson = "{ messageID:\"test\", createMirrorMaker: { name:\"test\", consumer:\"test\", producer:\"test\", whitelist:\"test\",status:\"test\" }}";
\r
234 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
\r
235 mmRestService.callListAllMirrorMaker(inputSteam);
\r
240 public void testCallUpdateMirrorMaker() throws Exception {
\r
241 prepareForTestCommon();
\r
243 String sampleJson = "{ messageID:\"test\", updateMirrorMaker: { name:\"test\", consumer:\"test\", producer:\"test\"}}";
\r
244 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
\r
245 mmRestService.callUpdateMirrorMaker(inputSteam);
\r
250 public void testCallUpdateMirrorMaker_error1() throws Exception {
\r
251 prepareForTestCommon();
\r
253 String sampleJson = "{ messageID:\"test@1\", updateMirrorMaker: { name:\"test\", consumer:\"test\", producer:\"test\"}}";
\r
254 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
\r
255 mmRestService.callUpdateMirrorMaker(inputSteam);
\r
259 public void testCallUpdateMirrorMaker_error2() throws Exception {
\r
260 prepareForTestCommon();
\r
262 String sampleJson = "{ messageID:\"test\", updateMirrorMaker: { name:\"\", consumer:\"test\", producer:\"test\"}}";
\r
263 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
\r
264 mmRestService.callUpdateMirrorMaker(inputSteam);
\r
268 public void testCallUpdateMirrorMaker_error3() throws Exception{
\r
269 prepareForTestCommon();
\r
271 String sampleJson = "{ messageID:\"test\", updateMirrorMaker: { name:\"test\", consumer:\"test\", producer:\"test\", whitelist:\"test\",status:\"test\"}}";
\r
272 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
\r
273 mmRestService.callUpdateMirrorMaker(inputSteam);
\r
277 public void testCallUpdateMirrorMaker_error4() throws Exception {
\r
278 prepareForTestCommon();
\r
280 String sampleJson = "{ messageID:\"test\"}}";
\r
281 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
\r
282 mmRestService.callUpdateMirrorMaker(inputSteam);
\r
287 public void testCallDeleteMirrorMaker() throws Exception {
\r
288 prepareForTestCommon();
\r
290 String sampleJson = "{ messageID:\"test\", deleteMirrorMaker: { name:\"test\", consumer:\"test\", producer:\"test\", whitelist:\"test\",status:\"test\" }}";
\r
291 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
\r
292 mmRestService.callDeleteMirrorMaker(inputSteam);
\r
297 public void testListWhiteList() throws Exception {
\r
298 prepareForTestCommon();
\r
300 String sampleJson = "{ name:\"test\", namespace:\"test\"}}";
\r
301 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
\r
302 mmRestService.listWhiteList(inputSteam);
\r
307 public void testCreateWhiteList() throws Exception {
\r
308 prepareForTestCommon();
\r
309 String sampleJson = "{ name:\"test\", namespace:\"test\", whitelistTopicName:\"test\"}}";
\r
310 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
\r
312 mmRestService.createWhiteList(inputSteam);
\r
317 public void testDeleteWhiteList() throws Exception {
\r
318 prepareForTestCommon();
\r
320 String sampleJson = "{ name:\"test\", namespace:\"test\", whitelistTopicName:\"test\"}}";
\r
321 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
\r
322 mmRestService.deleteWhiteList(inputSteam);
\r
326 private void prepareForTestCommon() throws Exception {
\r
327 Assert.assertNotNull(mmRestService);
\r
328 PowerMockito.when(dmaapContext.getRequest()).thenReturn(httpServReq);
\r
329 PowerMockito.when(dmaapAAFauthenticator.aafAuthentication(httpServReq, "admin")).thenReturn(true);
\r
330 PowerMockito.when(httpServReq.isUserInRole("admin")).thenReturn(true);
\r
332 PowerMockito.mockStatic(AJSCPropertiesMap.class);
\r
336 PowerMockito.when(AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop, "msgRtr.mirrormakeradmin.aaf"))
\r
337 .thenReturn("admin");
\r
339 .when(AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop, "msgRtr.mirrormakeruser.aaf.create"))
\r
340 .thenReturn("aafcreate");
\r
342 PowerMockito.when(AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop, "msgRtr.mirrormakeruser.aaf"))
\r
343 .thenReturn("admin");
\r
345 PowerMockito.when(AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop, "msgRtr.mirrormaker.timeout"))
\r
346 .thenReturn("100");
\r
348 PowerMockito.when(AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop, "msgRtr.mirrormaker.topic"))
\r
349 .thenReturn("mirrormaker.topic");
\r
352 .when(AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop, "msgRtr.mirrormaker.consumergroup"))
\r
353 .thenReturn("mirrormaker.consumergroup");
\r
355 PowerMockito.when(AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop, "msgRtr.mirrormaker.consumerid"))
\r
356 .thenReturn("mirrormaker.consumerid");
\r
358 PowerMockito.when(dmaapContext.getRequest()).thenReturn(httpServReq);
\r
360 PowerMockito.when(httpServReq.isUserInRole("admin")).thenReturn(true);
\r
362 // PowerMockito.when(httpServReq.getHeader("Authorization")).thenReturn("Admin");
\r
363 PowerMockito.when(dmaapAAFauthenticator.aafAuthentication(httpServReq, "admin.aaf")).thenReturn(true);
\r
364 PowerMockito.when(dmaapAAFauthenticator.aafAuthentication(httpServReq, "admin")).thenReturn(true);
\r
365 PowerMockito.when(httpServReq.getHeader("Authorization")).thenReturn("Admin");
\r
366 PowerMockito.when(dmaapAAFauthenticator.aafAuthentication(httpServReq, "admin")).thenReturn(true);
\r
367 PowerMockito.when(dmaapAAFauthenticator.aafAuthentication(httpServReq, "aafcreatetest|create"))
\r
370 PowerMockito.when(cMirroMaker.getCreateMirrorMaker()).thenReturn(mMaker);
\r
372 PowerMockito.when(mMaker.getName()).thenReturn("mirroMakerName");
\r
373 PowerMockito.when(dmaapContext.getConfigReader()).thenReturn(configReader);
\r
374 PowerMockito.when(dmaapContext.getRequest()).thenReturn(httpServReq);
\r
375 PowerMockito.when(httpServReq.getHeader("Authorization")).thenReturn("Authorization");
\r
377 PowerMockito.when(dmaapContext.getResponse()).thenReturn(httpServRes);
\r
378 PowerMockito.when(configReader.getfMetaBroker()).thenReturn(dmaapKafkaMetaBroker);
\r
379 PowerMockito.when(httpServReq.getMethod()).thenReturn("HEAD");
\r
381 PowerMockito.when(dmaapKafkaMetaBroker.getTopic(anyString())).thenReturn(null);
\r