Caching util test cases
[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         //should be 401 error
197         assertEquals(204, response.getStatus());
198     }
199
200     // Missing appname
201     @Ignore
202     @Test
203     public void test7_onboardSearch1() throws Exception {
204         JsonOnboard jsonOnboard = new JsonOnboard();
205         jsonOnboard.setIsAAF("false");
206         jsonOnboard.setAid(onboardUUID);
207         Map<String, Object> resultMap = (Map<String, Object>) admin.getOnboardedInfoSearch(jsonOnboard,adminAuthorization).getEntity();
208         System.out.println("--->" + resultMap.toString());
209         resultMap.containsKey("success");
210         assertEquals(null, resultMap.get(onboardUUID));
211     }
212     
213     @Ignore
214     @Test
215     public void test7_onboardSearch_empty() throws Exception {
216         JsonOnboard jsonOnboard = new JsonOnboard();
217         Response response =  admin.getOnboardedInfoSearch(jsonOnboard,adminAuthorization);
218       //  assertEquals(400, response.getStatus());
219     }
220
221     @Ignore
222     @Test
223     public void test7_onboardSearch_invalidAid() throws Exception {
224         JsonOnboard jsonOnboard = new JsonOnboard();
225         jsonOnboard.setAppname("TestApp2");
226         jsonOnboard.setIsAAF("false");
227         jsonOnboard.setAid("abc66ccc-d857-4e90-b1e5-df98a3d40ce6");
228         Response response = admin.getOnboardedInfoSearch(jsonOnboard,adminAuthorization);
229        // assertEquals(400, response.getStatus());
230     }
231
232     @Ignore
233     @Test
234     public void test8_onboardUpdate() throws Exception {
235         JsonOnboard jsonOnboard = new JsonOnboard();
236         jsonOnboard.setIsAAF("false");
237         jsonOnboard.setUserId("TestUser3");
238         jsonOnboard.setPassword("TestPassword3");
239         jsonOnboard.setAid(onboardUUID);
240         Map<String, Object> resultMap = (Map<String, Object>) admin.updateOnboardApp(jsonOnboard,adminAuthorization).getEntity();
241         System.out.println("--->" + resultMap.toString());
242         resultMap.containsKey("success");
243         assertNotNull(resultMap);
244     }
245     
246     @Test
247     public void test8_onboardUpdateNoAAF() throws Exception {
248         System.out.println("Testing update application onboarding search w/o reaching aaf");
249         JsonOnboard jsonOnboard = new JsonOnboard();
250         jsonOnboard.setIsAAF("false");
251         jsonOnboard.setUserId("TestUser3");
252         jsonOnboard.setPassword("TestPassword3");
253         jsonOnboard.setAid(onboardUUID);
254         Response response = admin.updateOnboardApp(jsonOnboard,adminAuthorization);
255         
256         System.out.println("Status: " + response.getStatus() + ". Entity " + response.getEntity());
257         //Should be 401 error
258         assertEquals(204, response.getStatus());
259     }
260
261     // Aid null
262     @Ignore
263     @Test
264     public void test8_onboardUpdate1() throws Exception {
265         JsonOnboard jsonOnboard = new JsonOnboard();
266         jsonOnboard.setIsAAF("false");
267         jsonOnboard.setUserId("TestUser3");
268         jsonOnboard.setPassword("TestPassword3");
269         Map<String, Object> resultMap = (Map<String, Object>) admin.updateOnboardApp(jsonOnboard,adminAuthorization).getEntity();
270         System.out.println("--->" + resultMap.toString());
271         assertNotNull(resultMap);
272     }
273
274     // Appname not null
275     @Ignore
276     @Test
277     public void test8_onboardUpdate2() throws Exception {
278         JsonOnboard jsonOnboard = new JsonOnboard();
279         jsonOnboard.setAppname("TestApp2");
280         jsonOnboard.setIsAAF("false");
281         jsonOnboard.setUserId("TestUser3");
282         jsonOnboard.setPassword("TestPassword3");
283         jsonOnboard.setAid(onboardUUID);
284         Map<String, Object> resultMap = (Map<String, Object>) admin.updateOnboardApp(jsonOnboard,adminAuthorization).getEntity();
285         assertNotNull(resultMap);
286     }
287
288     // All null
289     @Ignore
290     @Test
291     public void test8_onboardUpdate3() throws Exception {
292         JsonOnboard jsonOnboard = new JsonOnboard();
293         jsonOnboard.setAid(onboardUUID);
294         Map<String, Object> resultMap = (Map<String, Object>) admin.updateOnboardApp(jsonOnboard,adminAuthorization).getEntity();
295         assertNotNull(resultMap);
296     }
297
298     @Test
299     public void test9_onboardDelete() throws Exception {
300         JsonOnboard jsonOnboard = new JsonOnboard();
301         jsonOnboard.setAppname("TestApp2");
302         jsonOnboard.setAid(onboardUUID);
303         Map<String, Object> resultMap = (Map<String, Object>) admin.deleteOnboardApp(jsonOnboard,adminAuthorization).getEntity();
304         resultMap.containsKey("success");
305         assertNotNull(resultMap);
306     }
307     
308     @Test
309     public void test9_onboardDeleteNoAAF() throws Exception {
310         System.out.println("Testing onboard delete without aaf");
311         JsonOnboard jsonOnboard = new JsonOnboard();
312         jsonOnboard.setAppname("TestApp2");
313         jsonOnboard.setAid(onboardUUID);
314         Response response = admin.deleteOnboardApp(jsonOnboard,adminAuthorization);
315         
316         System.out.println("Status: " + response.getStatus() + ". Entity " + response.getEntity());
317         //Should be 401 error
318         assertEquals(204, response.getStatus());
319     }
320
321     @Ignore
322     @Test
323     public void test9_onboardDelete1() throws Exception {
324         JsonOnboard jsonOnboard = new JsonOnboard();
325         Map<String, Object> resultMap = (Map<String, Object>) admin.deleteOnboardApp(jsonOnboard,adminAuthorization).getEntity();
326         assertNotNull(resultMap);
327     }
328    
329 }