e8dd0735dc86e39576796870e4c05beaaad33df4
[dmaap/messagerouter/dmaapclient.git] / src / test / java / org / onap / dmaap / mr / tools / TopicCommandTest.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.mr.tools;
22
23 import static org.junit.Assert.assertTrue;
24
25 import java.io.IOException;
26 import java.io.PrintStream;
27 import java.util.Arrays;
28 import java.util.Iterator;
29 import java.util.List;
30
31 import org.junit.After;
32 import org.junit.Before;
33 import org.junit.Test;
34 import org.junit.runner.RunWith;
35 import org.mockito.InjectMocks;
36 import org.mockito.Mock;
37 import org.mockito.MockitoAnnotations;
38 import org.powermock.api.mockito.PowerMockito;
39 import org.powermock.core.classloader.annotations.PrepareForTest;
40 import org.powermock.modules.junit4.PowerMockRunner;
41
42 import com.att.nsa.apiClient.http.HttpException;
43 import com.att.nsa.apiClient.http.HttpObjectNotFoundException;
44 import com.att.nsa.cmdtool.CommandNotReadyException;
45 import org.onap.dmaap.mr.client.MRClientFactory;
46 import org.onap.dmaap.mr.client.MRTopicManager.TopicInfo;
47 import org.onap.dmaap.mr.client.MRTopicManager;
48
49 @RunWith(PowerMockRunner.class)
50 @PrepareForTest({ MRClientFactory.class })
51 public class TopicCommandTest {
52         @InjectMocks
53         private TopicCommand command;
54         @Mock
55         private MRTopicManager tm;
56         @Mock
57         private TopicInfo ti;
58         @Mock
59         private PrintStream printStream;
60
61         @Before
62         public void setUp() throws Exception {
63
64                 MockitoAnnotations.initMocks(this);
65                 PowerMockito.mockStatic(MRClientFactory.class);
66                 PowerMockito.when(MRClientFactory.createTopicManager(Arrays.asList("localhost"), null, null)).thenReturn(tm);
67                 PowerMockito.when(tm.getTopicMetadata("testtopic")).thenReturn(ti);
68
69         }
70
71         @After
72         public void tearDown() throws Exception {
73
74         }
75
76         @Test
77         public void testGetMatches() {
78
79                 command.getMatches();
80                 assertTrue(true);
81
82         }
83
84         @Test
85         public void testCheckReady() {
86
87                 try {
88                         command.checkReady(new MRCommandContext());
89                 } catch (CommandNotReadyException e) {
90                         // TODO Auto-generated catch block
91                         e.printStackTrace();
92                 }
93                 assertTrue(true);
94
95         }
96
97         @Test
98         public void testExecute() {
99
100                 String[] parts1 = { "create", "testtopic", "1", "1" };
101                 String[] parts2 = { "grant", "write", "read", "1" };
102                 String[] parts3 = { "revoke", "write", "read", "1" };
103                 String[] parts4 = { "list", "testtopic", "1", "1" };
104                 List<String[]> parts = Arrays.asList(parts1, parts2, parts3, parts4);
105                 for (Iterator iterator = parts.iterator(); iterator.hasNext();) {
106                         String[] part = (String[]) iterator.next();
107
108                         try {
109                                 command.execute(part, new MRCommandContext(), printStream);
110                         } catch (CommandNotReadyException e) {
111                                 // TODO Auto-generated catch block
112                                 e.printStackTrace();
113                         }
114                         assertTrue(true);
115
116                 }
117
118         }
119
120         @Test
121         public void testExecute_error() {
122
123                 String[] parts1 = { "create", "testtopic", "1", "1" };
124                 String[] parts2 = { "grant", "write", "read", "1" };
125                 String[] parts3 = { "revoke", "write", "read", "1" };
126                 String[] parts4 = { "list", "testtopic", "1", "1" };
127                 List<String[]> parts = Arrays.asList(parts1, parts2, parts3, parts4);
128                 for (Iterator iterator = parts.iterator(); iterator.hasNext();) {
129                         String[] part = (String[]) iterator.next();
130
131                         try {
132                                 command.execute(part, new MRCommandContext(), printStream);
133                         } catch (CommandNotReadyException e) {
134                                 // TODO Auto-generated catch block
135                                 e.printStackTrace();
136                         }
137                         assertTrue(true);
138
139                 }
140
141         }
142
143         @Test
144         public void testExecute_error_1() throws com.att.nsa.apiClient.http.HttpException, IOException {
145                 PowerMockito.when(tm.getTopicMetadata("testtopic")).thenThrow(new IOException("error"));
146                 PowerMockito.doThrow(new IOException()).when(tm).createTopic("testtopic", "", 1, 1);
147                 PowerMockito.doThrow(new IOException()).when(tm).revokeProducer("read", "1");
148                 String[] parts1 = { "create", "testtopic", "1", "1" };
149                 String[] parts2 = { "grant", "read", "read", "1" };
150                 String[] parts3 = { "revoke", "write", "read", "1" };
151                 String[] parts4 = { "list", "testtopic", "1", "1" };
152                 List<String[]> parts = Arrays.asList(parts1, parts2, parts3, parts4);
153                 for (Iterator iterator = parts.iterator(); iterator.hasNext();) {
154                         String[] part = (String[]) iterator.next();
155
156                         try {
157                                 command.execute(part, new MRCommandContext(), printStream);
158                         } catch (CommandNotReadyException e) {
159                                 // TODO Auto-generated catch block
160                                 e.printStackTrace();
161                         }
162                         assertTrue(true);
163
164                 }
165
166         }
167
168         @Test
169         public void testExecute_error_2() throws com.att.nsa.apiClient.http.HttpException, IOException {
170                 PowerMockito.when(tm.getTopicMetadata("testtopic")).thenThrow(new HttpObjectNotFoundException("error"));
171                 PowerMockito.doThrow(new HttpException(500, "error")).when(tm).createTopic("testtopic", "", 1, 1);
172                 PowerMockito.doThrow(new HttpException(500, "error")).when(tm).revokeConsumer("read", "1");
173                 PowerMockito.doThrow(new HttpException(500, "error")).when(tm).allowConsumer("read", "1");
174                 String[] parts1 = { "create", "testtopic", "1", "1" };
175                 String[] parts2 = { "grant", "write", "write", "1" };
176                 String[] parts3 = { "revoke", "read", "read", "1" };
177                 String[] parts4 = { "list", "testtopic", "1", "1" };
178                 List<String[]> parts = Arrays.asList(parts1, parts2, parts3, parts4);
179                 for (Iterator iterator = parts.iterator(); iterator.hasNext();) {
180                         String[] part = (String[]) iterator.next();
181
182                         try {
183                                 command.execute(part, new MRCommandContext(), printStream);
184                         } catch (CommandNotReadyException e) {
185                                 // TODO Auto-generated catch block
186                                 e.printStackTrace();
187                         }
188                         assertTrue(true);
189
190                 }
191
192         }
193
194         @Test
195         public void testExecute_error_3() throws com.att.nsa.apiClient.http.HttpException, IOException {
196                 PowerMockito.doThrow(new HttpException(500, "error")).when(tm).createTopic("testtopic", "", 1, 1);
197                 PowerMockito.doThrow(new HttpException(500, "error")).when(tm).allowProducer("read", "1");
198                 String[] parts1 = { "create", "testtopic", "1a", "1a" };
199                 String[] parts2 = { "grant", "write", "read", "1" };
200                 List<String[]> parts = Arrays.asList(parts1, parts2);
201                 for (Iterator iterator = parts.iterator(); iterator.hasNext();) {
202                         String[] part = (String[]) iterator.next();
203
204                         try {
205                                 command.execute(part, new MRCommandContext(), printStream);
206                         } catch (CommandNotReadyException e) {
207                                 // TODO Auto-generated catch block
208                                 e.printStackTrace();
209                         }
210                         assertTrue(true);
211
212                 }
213
214         }
215
216         @Test
217         public void testDisplayHelp() {
218
219                 command.displayHelp(printStream);
220                 assertTrue(true);
221
222         }
223
224 }