58d1d11b171e54a55f8c61f0a6d2423dbd0c7ec7
[music.git] / src / test / java / org / onap / music / unittests / TstRestMusicAdminAPI.java
1 /*
2  * ============LICENSE_START========================================== org.onap.music
3  * =================================================================== Copyright (c) 2017 AT&T
4  * Intellectual Property ===================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
6  * in compliance with the License. You may obtain a copy of the License at
7  * 
8  * http://www.apache.org/licenses/LICENSE-2.0
9  * 
10  * Unless required by applicable law or agreed to in writing, software distributed under the License
11  * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
12  * or implied. See the License for the specific language governing permissions and limitations under
13  * the License.
14  * 
15  * ============LICENSE_END=============================================
16  * ====================================================================
17  */
18
19 package org.onap.music.unittests;
20
21 import static org.junit.Assert.assertEquals;
22 import static org.junit.Assert.assertFalse;
23 import static org.junit.Assert.assertNotEquals;
24 import static org.junit.Assert.assertNotNull;
25 import static org.junit.Assert.assertTrue;
26
27
28 import java.util.HashMap;
29 import java.util.List;
30 import java.util.Map;
31 import java.util.UUID;
32
33 import javax.servlet.http.HttpServletResponse;
34 import javax.ws.rs.core.MultivaluedMap;
35 import javax.ws.rs.core.Response;
36 import javax.ws.rs.core.UriInfo;
37
38 import org.apache.curator.test.TestingServer;
39 import org.junit.AfterClass;
40 import org.junit.BeforeClass;
41 import org.junit.FixMethodOrder;
42 import org.junit.Ignore;
43 import org.junit.Test;
44 import org.junit.runner.RunWith;
45 import org.junit.runners.MethodSorters;
46 import org.mindrot.jbcrypt.BCrypt;
47 import org.mockito.InjectMocks;
48 import org.mockito.Mock;
49 import org.mockito.Mockito;
50 import org.mockito.MockitoAnnotations;
51 import org.onap.music.authentication.MusicAuthentication;
52 import org.onap.music.conductor.conditionals.JsonConditional;
53 import org.onap.music.conductor.conditionals.RestMusicConditionalAPI;
54 import org.onap.music.datastore.MusicDataStoreHandle;
55 import org.onap.music.datastore.PreparedQueryObject;
56 import org.onap.music.datastore.jsonobjects.JsonDelete;
57 import org.onap.music.datastore.jsonobjects.JsonInsert;
58 import org.onap.music.datastore.jsonobjects.JsonKeySpace;
59 import org.onap.music.datastore.jsonobjects.JsonLeasedLock;
60 import org.onap.music.datastore.jsonobjects.JsonOnboard;
61 import org.onap.music.datastore.jsonobjects.JsonTable;
62 import org.onap.music.main.MusicCore;
63 import org.onap.music.main.MusicUtil;
64 import org.onap.music.rest.RestMusicAdminAPI;
65 import org.onap.music.rest.RestMusicHealthCheckAPI;
66
67 import com.datastax.driver.core.DataType;
68 import com.datastax.driver.core.ResultSet;
69 import com.datastax.driver.core.Row;
70 import com.sun.jersey.core.util.Base64;
71
72 public class TstRestMusicAdminAPI {
73
74     RestMusicAdminAPI admin = new RestMusicAdminAPI();
75     static PreparedQueryObject testObject;
76
77     @Mock
78     HttpServletResponse http;
79
80     @Mock
81     UriInfo info;
82     
83     static String appName = "TestApp";
84     static String userId = "TestUser";
85     static String password = "TestPassword";
86     static String adminName = "username";
87     static String adminPassword = "password";
88     static String adminAuthData = adminName +":"+adminPassword;
89     static String wrongAdminAuthData = adminName+"123"+":"+adminPassword;
90     static String authData = userId+":"+password;
91     static String wrongAuthData = userId+":"+"pass";
92     static String authorization = new String(Base64.encode(authData.getBytes()));
93     static String wrongAuthorization = new String(Base64.encode(wrongAuthData.getBytes()));
94     static String adminAuthorization = new String(Base64.encode(adminAuthData.getBytes()));
95     static String worngAdminAuthorization = new String(Base64.encode(wrongAdminAuthData.getBytes()));
96     
97     static boolean isAAF = false;
98     static UUID uuid = UUID.fromString("abc66ccc-d857-4e90-b1e5-df98a3d40ce6");
99     static String keyspaceName = "testCassa";
100     static String tableName = "employees";
101     static String tableNameConditional = "Conductor";
102     static String xLatestVersion = "X-latestVersion";
103     static String onboardUUID = null;
104     static String lockId = null;
105     static String lockName = "testCassa.employees.sample3";
106
107     @BeforeClass
108     public static void init() throws Exception {
109                 System.out.println("Testing RestMusicAdmin class");
110                 //PowerMockito.mockStatic(MusicAuthentication.class);
111         try {
112                 //MusicDataStoreHandle.mDstoreHandle = CassandraCQL.connectToEmbeddedCassandra();
113                 } catch (Exception e) {
114                         e.printStackTrace();
115                         throw new Exception("Unable to initialize before TestRestMusicData test class. " + e.getMessage());
116                 }
117     }
118
119     @AfterClass
120     public static void tearDownAfterClass() throws Exception {
121         testObject = new PreparedQueryObject();
122         testObject.appendQueryString("DROP KEYSPACE IF EXISTS " + keyspaceName);
123         MusicCore.eventualPut(testObject);
124     }    
125
126     @Ignore
127     @Test
128     public void test6_onboard() throws Exception {
129         System.out.println("Testing application onboarding");
130                 
131         JsonOnboard jsonOnboard = new JsonOnboard();
132         jsonOnboard.setAppname("TestApp2");
133         jsonOnboard.setIsAAF("false"); jsonOnboard.setUserId("TestUser2");
134         jsonOnboard.setPassword("TestPassword2");
135
136         Response response = admin.onboardAppWithMusic(jsonOnboard,adminAuthorization);
137         System.out.println("Status: " + response.getStatus() + ". Entity " + response.getEntity());
138         /*resultMap.containsKey("success"); onboardUUID =
139                         resultMap.get("Generated AID").toString();
140         assertEquals("Your application TestApp2 has been onboarded with MUSIC.",
141                         resultMap.get("Success")); */
142         assertEquals(200, response.getStatus());
143     }
144     
145     @Test
146     public void test6_onboardCantReachAAF() throws Exception {
147         System.out.println("Testing application onboarding without reaching aaf");        
148         JsonOnboard jsonOnboard = new JsonOnboard();
149         jsonOnboard.setAppname("TestApp2");
150         jsonOnboard.setIsAAF("false"); jsonOnboard.setUserId("TestUser2");
151         jsonOnboard.setPassword("TestPassword2");
152
153         Response response = admin.onboardAppWithMusic(jsonOnboard,adminAuthorization);
154         System.out.println("Status: " + response.getStatus() + ". Entity " + response.getEntity());
155         //TODO FIX when we can authenticate
156         assertEquals(401, response.getStatus());
157     }
158
159     @Ignore
160         @Test
161     public void test6_onboard_duplicate() throws Exception {
162         JsonOnboard jsonOnboard = new JsonOnboard();
163         jsonOnboard.setAppname("TestApp2");
164         jsonOnboard.setIsAAF("false");
165         jsonOnboard.setUserId("TestUser2");
166         jsonOnboard.setPassword("TestPassword2");
167         Response response = admin.onboardAppWithMusic(jsonOnboard,adminAuthorization);
168         assertEquals(204, response.getStatus());
169     }
170
171     // Missing appname
172         @Ignore
173     @Test
174     public void test6_onboard1() throws Exception {
175         JsonOnboard jsonOnboard = new JsonOnboard();
176         jsonOnboard.setIsAAF("false");
177         jsonOnboard.setUserId("TestUser2");
178         jsonOnboard.setPassword("TestPassword2");
179         Map<String, Object> resultMap = (Map<String, Object>) admin.onboardAppWithMusic(jsonOnboard,adminAuthorization).getEntity();
180 //        assertTrue(resultMap.containsKey("error"));
181         //System.out.println("--->" + resultMap.toString());
182         //assertEquals("Unauthorized: Please check the request parameters. Some of the required values appName(ns), userId, password, isAAF are missing.", resultMap.get("Exception"));
183     }
184
185
186     @Test
187     public void test7_onboardSearch() throws Exception {
188         System.out.println("Testing application onboarding search w/o reaching aaf");        
189         JsonOnboard jsonOnboard = new JsonOnboard();
190         jsonOnboard.setAppname("TestApp2");
191         jsonOnboard.setIsAAF("false");
192         jsonOnboard.setAid(onboardUUID);
193         Response response = admin.getOnboardedInfoSearch(jsonOnboard,adminAuthorization);
194         System.out.println("Status: " + response.getStatus() + ". Entity " + response.getEntity());
195         //TODO FIX when we can authenticate
196         assertEquals(401, response.getStatus());
197     }
198
199     // Missing appname
200     @Ignore
201     @Test
202     public void test7_onboardSearch1() throws Exception {
203         JsonOnboard jsonOnboard = new JsonOnboard();
204         jsonOnboard.setIsAAF("false");
205         jsonOnboard.setAid(onboardUUID);
206         Map<String, Object> resultMap = (Map<String, Object>) admin.getOnboardedInfoSearch(jsonOnboard,adminAuthorization).getEntity();
207         System.out.println("--->" + resultMap.toString());
208         resultMap.containsKey("success");
209         assertEquals(null, resultMap.get(onboardUUID));
210     }
211     
212     @Ignore
213     @Test
214     public void test7_onboardSearch_empty() throws Exception {
215         JsonOnboard jsonOnboard = new JsonOnboard();
216         Response response =  admin.getOnboardedInfoSearch(jsonOnboard,adminAuthorization);
217       //  assertEquals(400, response.getStatus());
218     }
219
220     @Ignore
221     @Test
222     public void test7_onboardSearch_invalidAid() throws Exception {
223         JsonOnboard jsonOnboard = new JsonOnboard();
224         jsonOnboard.setAppname("TestApp2");
225         jsonOnboard.setIsAAF("false");
226         jsonOnboard.setAid("abc66ccc-d857-4e90-b1e5-df98a3d40ce6");
227         Response response = admin.getOnboardedInfoSearch(jsonOnboard,adminAuthorization);
228        // assertEquals(400, response.getStatus());
229     }
230
231     @Ignore
232     @Test
233     public void test8_onboardUpdate() throws Exception {
234         JsonOnboard jsonOnboard = new JsonOnboard();
235         jsonOnboard.setIsAAF("false");
236         jsonOnboard.setUserId("TestUser3");
237         jsonOnboard.setPassword("TestPassword3");
238         jsonOnboard.setAid(onboardUUID);
239         Map<String, Object> resultMap = (Map<String, Object>) admin.updateOnboardApp(jsonOnboard,adminAuthorization).getEntity();
240         System.out.println("--->" + resultMap.toString());
241         resultMap.containsKey("success");
242         assertNotNull(resultMap);
243     }
244     
245     @Test
246     public void test8_onboardUpdateNoAAF() throws Exception {
247         System.out.println("Testing update application onboarding search w/o reaching aaf");
248         JsonOnboard jsonOnboard = new JsonOnboard();
249         jsonOnboard.setIsAAF("false");
250         jsonOnboard.setUserId("TestUser3");
251         jsonOnboard.setPassword("TestPassword3");
252         jsonOnboard.setAid(onboardUUID);
253         Response response = admin.updateOnboardApp(jsonOnboard,adminAuthorization);
254         
255         System.out.println("Status: " + response.getStatus() + ". Entity " + response.getEntity());
256         assertEquals(401, response.getStatus());
257     }
258
259     // Aid null
260     @Ignore
261     @Test
262     public void test8_onboardUpdate1() throws Exception {
263         JsonOnboard jsonOnboard = new JsonOnboard();
264         jsonOnboard.setIsAAF("false");
265         jsonOnboard.setUserId("TestUser3");
266         jsonOnboard.setPassword("TestPassword3");
267         Map<String, Object> resultMap = (Map<String, Object>) admin.updateOnboardApp(jsonOnboard,adminAuthorization).getEntity();
268         System.out.println("--->" + resultMap.toString());
269         assertNotNull(resultMap);
270     }
271
272     // Appname not null
273     @Ignore
274     @Test
275     public void test8_onboardUpdate2() throws Exception {
276         JsonOnboard jsonOnboard = new JsonOnboard();
277         jsonOnboard.setAppname("TestApp2");
278         jsonOnboard.setIsAAF("false");
279         jsonOnboard.setUserId("TestUser3");
280         jsonOnboard.setPassword("TestPassword3");
281         jsonOnboard.setAid(onboardUUID);
282         Map<String, Object> resultMap = (Map<String, Object>) admin.updateOnboardApp(jsonOnboard,adminAuthorization).getEntity();
283         assertNotNull(resultMap);
284     }
285
286     // All null
287     @Ignore
288     @Test
289     public void test8_onboardUpdate3() throws Exception {
290         JsonOnboard jsonOnboard = new JsonOnboard();
291         jsonOnboard.setAid(onboardUUID);
292         Map<String, Object> resultMap = (Map<String, Object>) admin.updateOnboardApp(jsonOnboard,adminAuthorization).getEntity();
293         assertNotNull(resultMap);
294     }
295
296     @Ignore
297     @Test
298     public void test9_onboardDelete() throws Exception {
299         JsonOnboard jsonOnboard = new JsonOnboard();
300         jsonOnboard.setAppname("TestApp2");
301         jsonOnboard.setAid(onboardUUID);
302         Map<String, Object> resultMap = (Map<String, Object>) admin.deleteOnboardApp(jsonOnboard,adminAuthorization).getEntity();
303         resultMap.containsKey("success");
304         assertNotNull(resultMap);
305     }
306     
307     @Test
308     public void test9_onboardDeleteNoAAF() throws Exception {
309         System.out.println("Testing onboard delete without aaf");
310         JsonOnboard jsonOnboard = new JsonOnboard();
311         jsonOnboard.setAppname("TestApp2");
312         jsonOnboard.setAid(onboardUUID);
313         Response response = admin.deleteOnboardApp(jsonOnboard,adminAuthorization);
314         
315         System.out.println("Status: " + response.getStatus() + ". Entity " + response.getEntity());
316         assertEquals(401, response.getStatus());
317     }
318
319     @Ignore
320     @Test
321     public void test9_onboardDelete1() throws Exception {
322         JsonOnboard jsonOnboard = new JsonOnboard();
323         Map<String, Object> resultMap = (Map<String, Object>) admin.deleteOnboardApp(jsonOnboard,adminAuthorization).getEntity();
324         assertNotNull(resultMap);
325     }
326    
327 }