update MM agent API
[dmaap/messagerouter/messageservice.git] / src / test / java / org / onap / dmaap / service / MMRestServiceTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP Policy Engine
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
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
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=========================================================
19  */
20
21  package org.onap.dmaap.service;
22
23 import static org.junit.Assert.assertTrue;
24 import static org.junit.Assert.fail;
25 import static org.mockito.Matchers.anyString;
26
27 import java.io.ByteArrayInputStream;
28 import java.io.FileInputStream;
29
30 //import static org.mockito.Matchers.anyString;
31 //import static org.mockito.Mockito.when;
32
33 import java.io.IOException;
34 import java.io.InputStream;
35
36 import javax.servlet.ServletOutputStream;
37 import javax.servlet.http.HttpServletRequest;
38 import javax.servlet.http.HttpServletResponse;
39
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;
55
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;
79
80 //@RunWith(MockitoJUnitRunner.class)
81 @RunWith(PowerMockRunner.class)
82 @PrepareForTest({ PropertiesMapBean.class, AJSCPropertiesMap.class })
83 public class MMRestServiceTest {
84
85         @InjectMocks
86         MMRestService mmRestService;
87
88         @Mock
89         private MMService mmservice;
90
91         @Mock
92         CreateMirrorMaker cMirroMaker;
93
94         @Mock
95         UpdateMirrorMaker uMirroMaker;
96
97         private TopicRestService service = new TopicRestService();
98         @Mock
99         private DMaaPErrorMessages errorMessages;
100
101         @Mock
102         DMaaPContext dmaapContext;
103
104         @Mock
105         ConfigurationReader configReader;
106
107         @Mock
108         ServletOutputStream oStream;
109
110         @Mock
111         DMaaPAuthenticator<NsaSimpleApiKey> dmaaPAuthenticator;
112
113         @Mock
114         MirrorMaker mMaker;
115
116         @Mock
117         DMaaPAAFAuthenticator dmaapAAFauthenticator;
118
119         @Mock
120         DMaaPAAFAuthenticatorImpl impl;
121
122         @Mock
123         NsaApiKey user;
124
125         @Mock
126         NsaSimpleApiKey nsaSimpleApiKey;
127
128         @Mock
129         HttpServletRequest httpServReq;
130
131         @Mock
132         HttpServletResponse httpServRes;
133
134         @Mock
135         InputStream iStream;
136
137         @Mock
138         DMaaPKafkaMetaBroker dmaapKafkaMetaBroker;
139
140         @Mock
141         Topic createdTopic;
142
143         @Mock
144         NsaAcl nsaAcl;
145
146         @Mock
147         JSONObject jsonObj;
148
149         @Mock
150         JSONArray jsonArray;
151
152         @Before
153         public void setUp()  {
154
155                 MockitoAnnotations.initMocks(this);
156         }
157
158         @After
159         public void tearDown()  {
160         }
161
162         @Test
163         public void testCallCreateMirrorMaker()  {
164                 prepareForTestCommon();
165
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());
171                 try {
172                         mmRestService.callCreateMirrorMaker(inputSteam);
173                 } catch (Exception e) {
174                         assertTrue(true);
175                 }
176                 
177
178         }
179         @Test
180         public void testCallCreateMirrorMaker_error4()  {
181                 try {
182                         prepareForTestCommon();
183                 } catch (Exception e) {
184                         
185                 }
186
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());
192                 try {
193                         mmRestService.callCreateMirrorMaker(inputSteam);
194                 } catch (Exception e) {
195                         assertTrue(true);
196                 }
197                 
198
199         }
200         @Test
201         public void testCallCreateMirrorMaker_3()  {
202                 prepareForTestCommon();
203
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());
209         assertTrue(true);
210
211         }
212         @Test
213         public void testCallCreateMirrorMaker_error2()  {
214                 prepareForTestCommon();
215
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());
221                 try {
222                         mmRestService.callCreateMirrorMaker(inputSteam);
223                 } catch (Exception e) {
224                         assertTrue(true);
225                 }
226                 
227
228         }
229         
230         @Test
231         public void testCallCreateMirrorMaker_error1()  {
232                 prepareForTestCommon();
233
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());
239                 try {
240                         mmRestService.callCreateMirrorMaker(inputSteam);
241                 } catch (Exception e) {
242                         assertTrue(true);
243                 }
244                 
245
246         }
247
248         @Test
249         public void testCallListAllMirrorMaker()  {
250                 prepareForTestCommon();
251
252                 String sampleJson = "{ messageID:\"test\", createMirrorMaker: {   name:\"test\",   consumer:\"test\",  producer:\"test\",  whitelist:\"test\",status:\"test\" }}";
253                 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
254                 try {
255                         mmRestService.callListAllMirrorMaker(inputSteam);
256                 } catch (Exception e) {
257                         assertTrue(true);
258                 }
259                 
260         }
261
262         @Test
263         public void testCallUpdateMirrorMaker()  {
264                 prepareForTestCommon();
265
266                 String sampleJson = "{ messageID:\"test\", updateMirrorMaker: {   name:\"test\",   consumer:\"test\",  producer:\"test\"}}";
267                 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
268                 try {
269                         mmRestService.callUpdateMirrorMaker(inputSteam);
270                 } catch (Exception e) {
271                         assertTrue(true);
272                 }
273                 
274         }
275         
276         @Test
277         public void testCallUpdateMirrorMaker_error1()  {
278                 prepareForTestCommon();
279
280                 String sampleJson = "{ messageID:\"test@1\", updateMirrorMaker: {   name:\"test\",   consumer:\"test\",  producer:\"test\"}}";
281                 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
282                 try {
283                         mmRestService.callUpdateMirrorMaker(inputSteam);
284                 } catch (Exception e) {
285                         assertTrue(true);
286                 }
287                 
288         }
289         @Test
290         public void testCallUpdateMirrorMaker_error2()  {
291                 prepareForTestCommon();
292
293                 String sampleJson = "{ messageID:\"test\", updateMirrorMaker: {   name:\"\",   consumer:\"test\",  producer:\"test\"}}";
294                 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
295                 try {
296                         mmRestService.callUpdateMirrorMaker(inputSteam);
297                 } catch (Exception e) {
298                         assertTrue(true);
299                 }
300                 
301         }
302         @Test
303         public void testCallUpdateMirrorMaker_error3() {
304                 prepareForTestCommon();
305
306                 String sampleJson = "{ messageID:\"test\", updateMirrorMaker: {   name:\"test\",   consumer:\"test\",  producer:\"test\",  whitelist:\"test\",status:\"test\"}}";
307                 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
308                 try {
309                         mmRestService.callUpdateMirrorMaker(inputSteam);
310                 } catch (Exception e) {
311                         assertTrue(true);
312                 }
313                 
314         }
315         @Test
316         public void testCallUpdateMirrorMaker_error4()  {
317                 prepareForTestCommon();
318
319                 String sampleJson = "{ messageID:\"test\"}}";
320                 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
321                 try {
322                         mmRestService.callUpdateMirrorMaker(inputSteam);
323                 } catch (Exception e) {
324                         assertTrue(true);
325                 }
326                 
327         }
328
329         @Test
330         public void testCallDeleteMirrorMaker()  {
331                 prepareForTestCommon();
332
333                 String sampleJson = "{ messageID:\"test\", deleteMirrorMaker: {   name:\"test\",   consumer:\"test\",  producer:\"test\",  whitelist:\"test\",status:\"test\" }}";
334                 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
335                 try {
336                         mmRestService.callDeleteMirrorMaker(inputSteam);
337                 } catch (JSONException e) {
338                         assertTrue(true);
339                 } catch (Exception e) {
340                         assertTrue(true);
341                 }
342                 
343         }
344
345         @Test
346         public void testListWhiteList()  {
347                 prepareForTestCommon();
348
349                 String sampleJson = "{ name:\"test\", namespace:\"test\"}}";
350                 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
351                 try {
352                         mmRestService.listWhiteList(inputSteam);
353                 } catch (Exception e) {
354                         assertTrue(true);
355                 }
356                 
357         }
358
359         @Test
360         public void testCreateWhiteList()  {
361                 prepareForTestCommon();
362                 String sampleJson = "{ name:\"test\", namespace:\"test\",   whitelistTopicName:\"test\"}}";
363                 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
364
365                 try {
366                         mmRestService.createWhiteList(inputSteam);
367                 } catch (Exception e) {
368                         assertTrue(true);
369                 }
370                 
371         }
372
373         @Test
374         public void testDeleteWhiteList()  {
375                 prepareForTestCommon();
376
377                 String sampleJson = "{ name:\"test\", namespace:\"test\",   whitelistTopicName:\"test\"}}";
378                 InputStream inputSteam = new ByteArrayInputStream(sampleJson.getBytes());
379                 try {
380                         mmRestService.deleteWhiteList(inputSteam);
381                 } catch (Exception e) {
382                         assertTrue(true);
383                 }
384                 
385         }
386
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);
392
393                 PowerMockito.mockStatic(AJSCPropertiesMap.class);
394
395                 assertTrue(true);
396
397                 PowerMockito.when(AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop, "msgRtr.mirrormakeradmin.aaf"))
398                                 .thenReturn("admin");
399                 PowerMockito
400                                 .when(AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop, "msgRtr.mirrormakeruser.aaf.create"))
401                                 .thenReturn("aafcreate");
402
403                 PowerMockito.when(AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop, "msgRtr.mirrormakeruser.aaf"))
404                                 .thenReturn("admin");
405
406                 PowerMockito.when(AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop, "msgRtr.mirrormaker.timeout"))
407                                 .thenReturn("100");
408
409                 PowerMockito.when(AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop, "msgRtr.mirrormaker.topic"))
410                                 .thenReturn("mirrormaker.topic");
411
412                 PowerMockito
413                                 .when(AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop, "msgRtr.mirrormaker.consumergroup"))
414                                 .thenReturn("mirrormaker.consumergroup");
415
416                 PowerMockito.when(AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop, "msgRtr.mirrormaker.consumerid"))
417                                 .thenReturn("mirrormaker.consumerid");
418
419                 PowerMockito.when(dmaapContext.getRequest()).thenReturn(httpServReq);
420
421                 PowerMockito.when(httpServReq.isUserInRole("admin")).thenReturn(true);
422
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"))
429                                 .thenReturn(true);
430
431                 PowerMockito.when(cMirroMaker.getCreateMirrorMaker()).thenReturn(mMaker);
432
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");
437
438                 PowerMockito.when(dmaapContext.getResponse()).thenReturn(httpServRes);
439                 PowerMockito.when(configReader.getfMetaBroker()).thenReturn(dmaapKafkaMetaBroker);
440                 PowerMockito.when(httpServReq.getMethod()).thenReturn("HEAD");
441
442                 try {
443                         PowerMockito.when(dmaapKafkaMetaBroker.getTopic(anyString())).thenReturn(null);
444                 } catch (ConfigDbException e) {
445                         
446                 }
447         }
448
449 }