2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.onap.dmaap.service;
23 import static org.junit.Assert.assertTrue;
24 import static org.junit.Assert.fail;
25 import static org.mockito.Matchers.anyString;
27 import java.io.ByteArrayInputStream;
28 import java.io.FileInputStream;
30 //import static org.mockito.Matchers.anyString;
31 //import static org.mockito.Mockito.when;
33 import java.io.IOException;
34 import java.io.InputStream;
36 import javax.servlet.ServletOutputStream;
37 import javax.servlet.http.HttpServletRequest;
38 import javax.servlet.http.HttpServletResponse;
40 import org.apache.commons.io.IOUtils;
41 import org.json.JSONArray;
42 import org.json.JSONException;
43 import org.json.JSONObject;
44 import org.junit.After;
45 import org.junit.Assert;
46 import org.junit.Before;
47 import org.junit.Test;
48 import org.junit.runner.RunWith;
49 import org.mockito.InjectMocks;
50 import org.mockito.Mock;
51 import org.mockito.MockitoAnnotations;
52 import org.powermock.api.mockito.PowerMockito;
53 import org.powermock.core.classloader.annotations.PrepareForTest;
54 import org.powermock.modules.junit4.PowerMockRunner;
56 import com.att.ajsc.beans.PropertiesMapBean;
57 import com.att.ajsc.filemonitor.AJSCPropertiesMap;
58 import org.onap.dmaap.dmf.mr.CambriaApiException;
59 import org.onap.dmaap.dmf.mr.beans.DMaaPContext;
60 import org.onap.dmaap.dmf.mr.beans.DMaaPKafkaMetaBroker;
61 import org.onap.dmaap.dmf.mr.constants.CambriaConstants;
62 import org.onap.dmaap.dmf.mr.exception.DMaaPAccessDeniedException;
63 import org.onap.dmaap.dmf.mr.exception.DMaaPErrorMessages;
64 import org.onap.dmaap.dmf.mr.metabroker.Broker.TopicExistsException;
65 import org.onap.dmaap.dmf.mr.metabroker.Topic;
66 import org.onap.dmaap.dmf.mr.security.DMaaPAAFAuthenticator;
67 import org.onap.dmaap.dmf.mr.security.DMaaPAAFAuthenticatorImpl;
68 import org.onap.dmaap.dmf.mr.security.DMaaPAuthenticator;
69 import org.onap.dmaap.dmf.mr.service.MMService;
70 import org.onap.dmaap.dmf.mr.utils.ConfigurationReader;
71 import com.att.nsa.configs.ConfigDbException;
72 import org.onap.dmaap.mmagent.CreateMirrorMaker;
73 import org.onap.dmaap.mmagent.MirrorMaker;
74 import org.onap.dmaap.mmagent.UpdateMirrorMaker;
75 import com.att.nsa.security.NsaAcl;
76 import com.att.nsa.security.NsaApiKey;
77 import com.att.nsa.security.db.simple.NsaSimpleApiKey;
78 import com.google.gson.Gson;
80 //@RunWith(MockitoJUnitRunner.class)
81 @RunWith(PowerMockRunner.class)
82 @PrepareForTest({ PropertiesMapBean.class, AJSCPropertiesMap.class })
83 public class MMRestServiceTest {
86 MMRestService mmRestService;
89 private MMService mmservice;
92 CreateMirrorMaker cMirroMaker;
95 UpdateMirrorMaker uMirroMaker;
97 private TopicRestService service = new TopicRestService();
99 private DMaaPErrorMessages errorMessages;
102 DMaaPContext dmaapContext;
105 ConfigurationReader configReader;
108 ServletOutputStream oStream;
111 DMaaPAuthenticator<NsaSimpleApiKey> dmaaPAuthenticator;
117 DMaaPAAFAuthenticator dmaapAAFauthenticator;
120 DMaaPAAFAuthenticatorImpl impl;
126 NsaSimpleApiKey nsaSimpleApiKey;
129 HttpServletRequest httpServReq;
132 HttpServletResponse httpServRes;
138 DMaaPKafkaMetaBroker dmaapKafkaMetaBroker;
153 public void setUp() {
155 MockitoAnnotations.initMocks(this);
159 public void tearDown() {
163 public void testCallCreateMirrorMaker() {
164 prepareForTestCommon();
166 // String sampleJson = ""{ messageID:\"test\", createMirrorMaker: {
167 // name:\"test\", consumer:\"test\", producer:\"test\",
168 // whitelist:\"test\",status:\"test\" }}";
169 String sampleJson = "{ messageID:\"test\", createMirrorMaker: { name:\"test\", consumer:\"test\", producer:\"test\"}}";
170 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
172 mmRestService.callCreateMirrorMaker(inputSteam);
173 } catch (Exception e) {
180 public void testCallCreateMirrorMaker_error4() {
182 prepareForTestCommon();
183 } catch (Exception e) {
187 // String sampleJson = ""{ messageID:\"test\", createMirrorMaker: {
188 // name:\"test\", consumer:\"test\", producer:\"test\",
189 // whitelist:\"test\",status:\"test\" }}";
190 String sampleJson = "{ messageID:\"test\", createMirrorMaker: { name:\"test\", consumer:\"test\", producer:\"test\"}}";
191 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
193 mmRestService.callCreateMirrorMaker(inputSteam);
194 } catch (Exception e) {
201 public void testCallCreateMirrorMaker_3() {
202 prepareForTestCommon();
204 // String sampleJson = ""{ messageID:\"test\", createMirrorMaker: {
205 // name:\"test\", consumer:\"test\", producer:\"test\",
206 // whitelist:\"test\",status:\"test\" }}";
207 String sampleJson = "{ messageID:\"test\", createMirrorMaker: { name:\"\", consumer:\"test\", producer:\"test\"}}";
208 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
213 public void testCallCreateMirrorMaker_error2() {
214 prepareForTestCommon();
216 // String sampleJson = ""{ messageID:\"test\", createMirrorMaker: {
217 // name:\"test\", consumer:\"test\", producer:\"test\",
218 // whitelist:\"test\",status:\"test\" }}";
219 String sampleJson = "{ messageID:\"test\", createMirrorMaker: { name:\"test\", consumer:\"test\", producer:\"test\",whitelist:\"test\"}}";
220 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
222 mmRestService.callCreateMirrorMaker(inputSteam);
223 } catch (Exception e) {
231 public void testCallCreateMirrorMaker_error1() {
232 prepareForTestCommon();
234 // String sampleJson = ""{ messageID:\"test\", createMirrorMaker: {
235 // name:\"test\", consumer:\"test\", producer:\"test\",
236 // whitelist:\"test\",status:\"test\" }}";
237 String sampleJson = "{ messageID:\"test\"}";
238 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
240 mmRestService.callCreateMirrorMaker(inputSteam);
241 } catch (Exception e) {
249 public void testCallListAllMirrorMaker() {
250 prepareForTestCommon();
252 String sampleJson = "{ messageID:\"test\", createMirrorMaker: { name:\"test\", consumer:\"test\", producer:\"test\", whitelist:\"test\",status:\"test\" }}";
253 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
255 mmRestService.callListAllMirrorMaker(inputSteam);
256 } catch (Exception e) {
263 public void testCallUpdateMirrorMaker() {
264 prepareForTestCommon();
266 String sampleJson = "{ messageID:\"test\", updateMirrorMaker: { name:\"test\", consumer:\"test\", producer:\"test\"}}";
267 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
269 mmRestService.callUpdateMirrorMaker(inputSteam);
270 } catch (Exception e) {
277 public void testCallUpdateMirrorMaker_error1() {
278 prepareForTestCommon();
280 String sampleJson = "{ messageID:\"test@1\", updateMirrorMaker: { name:\"test\", consumer:\"test\", producer:\"test\"}}";
281 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
283 mmRestService.callUpdateMirrorMaker(inputSteam);
284 } catch (Exception e) {
290 public void testCallUpdateMirrorMaker_error2() {
291 prepareForTestCommon();
293 String sampleJson = "{ messageID:\"test\", updateMirrorMaker: { name:\"\", consumer:\"test\", producer:\"test\"}}";
294 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
296 mmRestService.callUpdateMirrorMaker(inputSteam);
297 } catch (Exception e) {
303 public void testCallUpdateMirrorMaker_error3() {
304 prepareForTestCommon();
306 String sampleJson = "{ messageID:\"test\", updateMirrorMaker: { name:\"test\", consumer:\"test\", producer:\"test\", whitelist:\"test\",status:\"test\"}}";
307 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
309 mmRestService.callUpdateMirrorMaker(inputSteam);
310 } catch (Exception e) {
316 public void testCallUpdateMirrorMaker_error4() {
317 prepareForTestCommon();
319 String sampleJson = "{ messageID:\"test\"}}";
320 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
322 mmRestService.callUpdateMirrorMaker(inputSteam);
323 } catch (Exception e) {
330 public void testCallDeleteMirrorMaker() {
331 prepareForTestCommon();
333 String sampleJson = "{ messageID:\"test\", deleteMirrorMaker: { name:\"test\", consumer:\"test\", producer:\"test\", whitelist:\"test\",status:\"test\" }}";
334 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
336 mmRestService.callDeleteMirrorMaker(inputSteam);
337 } catch (JSONException e) {
339 } catch (Exception e) {
346 public void testListWhiteList() {
347 prepareForTestCommon();
349 String sampleJson = "{ name:\"test\", namespace:\"test\"}}";
350 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
352 mmRestService.listWhiteList(inputSteam);
353 } catch (Exception e) {
360 public void testCreateWhiteList() {
361 prepareForTestCommon();
362 String sampleJson = "{ name:\"test\", namespace:\"test\", whitelistTopicName:\"test\"}}";
363 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
366 mmRestService.createWhiteList(inputSteam);
367 } catch (Exception e) {
374 public void testDeleteWhiteList() {
375 prepareForTestCommon();
377 String sampleJson = "{ name:\"test\", namespace:\"test\", whitelistTopicName:\"test\"}}";
378 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
380 mmRestService.deleteWhiteList(inputSteam);
381 } catch (Exception e) {
387 private void prepareForTestCommon() {
388 Assert.assertNotNull(mmRestService);
389 PowerMockito.when(dmaapContext.getRequest()).thenReturn(httpServReq);
390 PowerMockito.when(dmaapAAFauthenticator.aafAuthentication(httpServReq, "admin")).thenReturn(true);
391 PowerMockito.when(httpServReq.isUserInRole("admin")).thenReturn(true);
393 PowerMockito.mockStatic(AJSCPropertiesMap.class);
397 PowerMockito.when(AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop, "msgRtr.mirrormakeradmin.aaf"))
398 .thenReturn("admin");
400 .when(AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop, "msgRtr.mirrormakeruser.aaf.create"))
401 .thenReturn("aafcreate");
403 PowerMockito.when(AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop, "msgRtr.mirrormakeruser.aaf"))
404 .thenReturn("admin");
406 PowerMockito.when(AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop, "msgRtr.mirrormaker.timeout"))
409 PowerMockito.when(AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop, "msgRtr.mirrormaker.topic"))
410 .thenReturn("mirrormaker.topic");
413 .when(AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop, "msgRtr.mirrormaker.consumergroup"))
414 .thenReturn("mirrormaker.consumergroup");
416 PowerMockito.when(AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop, "msgRtr.mirrormaker.consumerid"))
417 .thenReturn("mirrormaker.consumerid");
419 PowerMockito.when(dmaapContext.getRequest()).thenReturn(httpServReq);
421 PowerMockito.when(httpServReq.isUserInRole("admin")).thenReturn(true);
423 // PowerMockito.when(httpServReq.getHeader("Authorization")).thenReturn("Admin");
424 PowerMockito.when(dmaapAAFauthenticator.aafAuthentication(httpServReq, "admin.aaf")).thenReturn(true);
425 PowerMockito.when(dmaapAAFauthenticator.aafAuthentication(httpServReq, "admin")).thenReturn(true);
426 PowerMockito.when(httpServReq.getHeader("Authorization")).thenReturn("Admin");
427 PowerMockito.when(dmaapAAFauthenticator.aafAuthentication(httpServReq, "admin")).thenReturn(true);
428 PowerMockito.when(dmaapAAFauthenticator.aafAuthentication(httpServReq, "aafcreatetest|create"))
431 PowerMockito.when(cMirroMaker.getCreateMirrorMaker()).thenReturn(mMaker);
433 PowerMockito.when(mMaker.getName()).thenReturn("mirroMakerName");
434 PowerMockito.when(dmaapContext.getConfigReader()).thenReturn(configReader);
435 PowerMockito.when(dmaapContext.getRequest()).thenReturn(httpServReq);
436 PowerMockito.when(httpServReq.getHeader("Authorization")).thenReturn("Authorization");
438 PowerMockito.when(dmaapContext.getResponse()).thenReturn(httpServRes);
439 PowerMockito.when(configReader.getfMetaBroker()).thenReturn(dmaapKafkaMetaBroker);
440 PowerMockito.when(httpServReq.getMethod()).thenReturn("HEAD");
443 PowerMockito.when(dmaapKafkaMetaBroker.getTopic(anyString())).thenReturn(null);
444 } catch (ConfigDbException e) {