aboutsummaryrefslogtreecommitdiffstats
path: root/src/test/java/org/onap/music/unittests/TstRestMusicAdminAPI.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/org/onap/music/unittests/TstRestMusicAdminAPI.java')
-rw-r--r--src/test/java/org/onap/music/unittests/TstRestMusicAdminAPI.java449
1 files changed, 449 insertions, 0 deletions
diff --git a/src/test/java/org/onap/music/unittests/TstRestMusicAdminAPI.java b/src/test/java/org/onap/music/unittests/TstRestMusicAdminAPI.java
new file mode 100644
index 00000000..02b7f3a4
--- /dev/null
+++ b/src/test/java/org/onap/music/unittests/TstRestMusicAdminAPI.java
@@ -0,0 +1,449 @@
+/*
+ * ============LICENSE_START==========================================
+ * org.onap.music
+ * ===================================================================
+ * Copyright (c) 2019 AT&T Intellectual Property
+ * ===================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ============LICENSE_END=============================================
+ * ====================================================================
+ */
+
+package org.onap.music.unittests;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Map;
+import java.util.UUID;
+
+import javax.ws.rs.core.Response;
+
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.internal.util.reflection.FieldSetter;
+import org.onap.music.authentication.MusicAAFAuthentication;
+import org.onap.music.datastore.PreparedQueryObject;
+import org.onap.music.datastore.jsonobjects.JsonOnboard;
+import org.onap.music.main.MusicCore;
+import org.onap.music.rest.RestMusicAdminAPI;
+import com.sun.jersey.core.util.Base64;
+
+public class TstRestMusicAdminAPI {
+
+ RestMusicAdminAPI admin = new RestMusicAdminAPI();
+ static PreparedQueryObject testObject;
+
+ @Mock
+ MusicAAFAuthentication authMock;
+
+ static String appName = "TestApp";
+ static String userId = "TestUser";
+ static String password = "TestPassword";
+ static String adminName = "username";
+ static String adminPassword = "password";
+ static String adminAuthData = adminName +":"+adminPassword;
+ static String wrongAdminAuthData = adminName+"123"+":"+adminPassword;
+ static String authData = userId+":"+password;
+ static String wrongAuthData = userId+":"+"pass";
+ static String authorization = new String(Base64.encode(authData.getBytes()));
+ static String wrongAuthorization = new String(Base64.encode(wrongAuthData.getBytes()));
+ static String adminAuthorization = new String(Base64.encode(adminAuthData.getBytes()));
+ static String wrongAdminAuthorization = new String(Base64.encode(wrongAdminAuthData.getBytes()));
+
+ static boolean isAAF = false;
+ static UUID uuid = UUID.fromString("abc66ccc-d857-4e90-b1e5-df98a3d40ce6");
+ static String keyspaceName = "testCassa";
+ static String tableName = "employees";
+ static String tableNameConditional = "Conductor";
+ static String xLatestVersion = "X-latestVersion";
+ static String onboardUUID = TestsUsingCassandra.onboardUUID;
+ static String lockId = null;
+ static String lockName = "testCassa.employees.sample3";
+
+ @BeforeClass
+ public static void init() throws Exception {
+ System.out.println("Testing RestMusicAdmin class");
+ //PowerMockito.mockStatic(MusicAuthentication.class);
+ try {
+ //MusicDataStoreHandle.mDstoreHandle = CassandraCQL.connectToEmbeddedCassandra();
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new Exception("Unable to initialize before TestRestMusicData test class. " + e.getMessage());
+ }
+ }
+
+ @Before
+ public void beforeEach() throws NoSuchFieldException {
+ authenticateAdminTrue();
+ }
+
+ @After
+ public void afterEach() {
+ testObject = new PreparedQueryObject();
+ testObject.appendQueryString("DELETE * FROM admin.keyspace_master;");
+ MusicCore.eventualPut(testObject);
+ }
+
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ testObject = new PreparedQueryObject();
+ testObject.appendQueryString("DROP KEYSPACE IF EXISTS " + keyspaceName);
+ MusicCore.eventualPut(testObject);
+ }
+
+ @Test
+ public void test6_onboard() throws Exception {
+ System.out.println("Testing application onboarding");
+
+ JsonOnboard jsonOnboard = new JsonOnboard();
+ jsonOnboard.setAppname("TestApp2");
+ jsonOnboard.setIsAAF("false"); jsonOnboard.setUserId("TestUser2");
+ jsonOnboard.setPassword("TestPassword2");
+
+ Response response = admin.onboardAppWithMusic(jsonOnboard,adminAuthorization);
+
+ System.out.println("Status: " + response.getStatus() + ". Entity " + response.getEntity());
+ assertEquals(200, response.getStatus());
+ }
+
+ @Test
+ public void test6_onboard_wrongCredentials() throws Exception {
+ System.out.println("Testing application onboarding wrong credentials");
+ JsonOnboard jsonOnboard = new JsonOnboard();
+ jsonOnboard.setAppname("TestApp2");
+ jsonOnboard.setIsAAF("false"); jsonOnboard.setUserId("TestUser2");
+ jsonOnboard.setPassword("TestPassword2");
+
+ Response response = admin.onboardAppWithMusic(jsonOnboard,wrongAdminAuthorization);
+ System.out.println("Status: " + response.getStatus() + ". Entity " + response.getEntity());
+ assertEquals(401, response.getStatus());
+ }
+
+ @Test
+ public void test6_onboard_duplicate() throws Exception {
+ System.out.println("Testing a duplicate onboarding call");
+
+ JsonOnboard jsonOnboard = new JsonOnboard();
+ jsonOnboard.setAppname("TestApp2");
+ jsonOnboard.setIsAAF("false");
+ jsonOnboard.setUserId("TestUser2");
+ jsonOnboard.setPassword("TestPassword2");
+ Response response = admin.onboardAppWithMusic(jsonOnboard,adminAuthorization);
+ System.out.println("Status: " + response.getStatus() + ". Entity " + response.getEntity());
+ assertEquals(200, response.getStatus());
+ }
+
+ // Missing appname
+ @Test
+ public void test6_onboard_noAppName() throws Exception {
+ System.out.println("Testing onboard missing app name");
+
+ JsonOnboard jsonOnboard = new JsonOnboard();
+ jsonOnboard.setIsAAF("false");
+ jsonOnboard.setUserId("TestUser2");
+ jsonOnboard.setPassword("TestPassword2");
+ Response response = admin.onboardAppWithMusic(jsonOnboard,adminAuthorization);
+ System.out.println("Status: " + response.getStatus() + ". Entity " + response.getEntity());
+
+ assertEquals(400, response.getStatus());
+ }
+
+
+ @Test
+ public void test7_onboardSearch_notOnboarded() throws Exception {
+ System.out.println("Testing application onboarding search for app that isn't onboarded");
+
+ JsonOnboard jsonOnboard = new JsonOnboard();
+ jsonOnboard.setAppname("TestApp2");
+ jsonOnboard.setIsAAF("false");
+ jsonOnboard.setAid(onboardUUID);
+ Response response = admin.getOnboardedInfoSearch(jsonOnboard,adminAuthorization);
+ System.out.println("Status: " + response.getStatus() + ". Entity " + response.getEntity());
+ //Application is not onboarded
+ assertEquals(400, response.getStatus());
+ }
+
+ @Test
+ public void test7_onboardSearch() throws Exception {
+ System.out.println("Testing application onboarding search no matching app");
+ onboardApp();
+
+ JsonOnboard jsonOnboard = new JsonOnboard();
+ jsonOnboard.setAppname("TestApp2");
+ jsonOnboard.setIsAAF("false");
+ jsonOnboard.setAid(onboardUUID);
+
+ Response response = admin.getOnboardedInfoSearch(jsonOnboard,adminAuthorization);
+ System.out.println("Status: " + response.getStatus() + ". Entity " + response.getEntity());
+
+ assertEquals(200, response.getStatus());
+ }
+
+ @Test
+ public void test7_onboardSearch_wrongCredentials() throws Exception {
+ System.out.println("Testing application onboarding search w/ wrong credentials");
+
+ JsonOnboard jsonOnboard = new JsonOnboard();
+ jsonOnboard.setAppname("TestApp2");
+ jsonOnboard.setIsAAF("false");
+ jsonOnboard.setAid(onboardUUID);
+ Response response = admin.getOnboardedInfoSearch(jsonOnboard,wrongAdminAuthorization);
+ System.out.println("Status: " + response.getStatus() + ". Entity " + response.getEntity());
+
+ assertEquals(401, response.getStatus());
+ }
+
+ // Missing appname
+ @Test
+ public void test7_onboardSearch_noAppName() throws Exception {
+ System.out.println("Testing application onboarding search w/o appname");
+ onboardApp();
+
+ JsonOnboard jsonOnboard = new JsonOnboard();
+ jsonOnboard.setIsAAF("false");
+ jsonOnboard.setAid(onboardUUID);
+ Response response = admin.getOnboardedInfoSearch(jsonOnboard,adminAuthorization);
+ System.out.println("Status: " + response.getStatus() + ". Entity " + response.getEntity());
+
+ assertEquals(200, response.getStatus());
+ }
+
+ @Test
+ public void test7_onboardSearch_empty() throws Exception {
+ System.out.println("Testing onboard search no app information");
+
+ JsonOnboard jsonOnboard = new JsonOnboard();
+ Response response = admin.getOnboardedInfoSearch(jsonOnboard,adminAuthorization);
+ System.out.println("Status: " + response.getStatus() + ". Entity " + response.getEntity());
+
+ assertEquals(400, response.getStatus());
+ }
+
+ @Test
+ public void test8_onboardUpdate() throws Exception {
+ System.out.println("Testing application onboarding update");
+ onboardApp();
+
+ JsonOnboard jsonOnboard = new JsonOnboard();
+ jsonOnboard.setIsAAF("false");
+ jsonOnboard.setUserId("TestUser3");
+ jsonOnboard.setPassword("TestPassword3");
+ jsonOnboard.setAid(onboardUUID);
+ Response response = admin.updateOnboardApp(jsonOnboard,adminAuthorization);
+ System.out.println("Status: " + response.getStatus() + ". Entity " + response.getEntity());
+
+ assertEquals(200, response.getStatus());
+ }
+
+ @Ignore //not working correctly
+ @Test
+ public void test8_onboardUpdate_withAppName() throws Exception {
+ System.out.println("Testing application onboarding update w appname");
+ onboardApp();
+
+ JsonOnboard jsonOnboard = new JsonOnboard();
+ jsonOnboard.setIsAAF("false");
+ jsonOnboard.setUserId("TestUser3");
+ jsonOnboard.setPassword("TestPassword3");
+ jsonOnboard.setAppname("TestApp2");
+ jsonOnboard.setAid(onboardUUID);
+ Response response = admin.updateOnboardApp(jsonOnboard,adminAuthorization);
+ System.out.println("Status: " + response.getStatus() + ". Entity " + response.getEntity());
+
+ assertEquals(200, response.getStatus());
+ }
+
+ @Test
+ public void test8_onboardUpdate_noUUID() throws Exception {
+ System.out.println("Testing application onboarding update null uuid");
+ onboardApp();
+
+ JsonOnboard jsonOnboard = new JsonOnboard();
+ jsonOnboard.setIsAAF("false");
+ jsonOnboard.setUserId("TestUser3");
+ jsonOnboard.setPassword("TestPassword3");
+ jsonOnboard.setAid(null);
+ Response response = admin.updateOnboardApp(jsonOnboard,adminAuthorization);
+ System.out.println("Status: " + response.getStatus() + ". Entity " + response.getEntity());
+
+ assertEquals(400, response.getStatus());
+ }
+
+ @Test
+ public void test8_onboardUpdate_wrongCredentialsNoAAF() throws Exception {
+ System.out.println("Testing update application onboarding search w/ wrong credentials");
+ JsonOnboard jsonOnboard = new JsonOnboard();
+ jsonOnboard.setIsAAF("false");
+ jsonOnboard.setUserId("TestUser3");
+ jsonOnboard.setPassword("TestPassword3");
+ jsonOnboard.setAid(onboardUUID);
+ Response response = admin.updateOnboardApp(jsonOnboard,wrongAdminAuthorization);
+
+ System.out.println("Status: " + response.getStatus() + ". Entity " + response.getEntity());
+ assertEquals(401, response.getStatus());
+ }
+
+ // All null
+ @Test
+ public void test8_onboardUpdate_noAppInfo() throws Exception {
+ System.out.println("Testing update application onboarding update no app information");
+ onboardApp();
+
+ JsonOnboard jsonOnboard = new JsonOnboard();
+ jsonOnboard.setAid(onboardUUID);
+ Response response = admin.updateOnboardApp(jsonOnboard,adminAuthorization);
+
+ System.out.println("Status: " + response.getStatus() + ". Entity " + response.getEntity());
+ assertEquals(400, response.getStatus());
+ }
+
+ @Test
+ public void test9_onboardDelete() throws Exception {
+ System.out.println("Testing update application onboarding delete");
+ onboardApp();
+
+ JsonOnboard jsonOnboard = new JsonOnboard();
+ jsonOnboard.setAppname("TestApp2");
+ jsonOnboard.setAid(onboardUUID);
+ Response response = admin.deleteOnboardApp(jsonOnboard,adminAuthorization);
+
+ //only 1 app matches keyspace
+ System.out.println("Status: " + response.getStatus() + ". Entity " + response.getEntity());
+ assertEquals(200, response.getStatus());
+ }
+
+ @Ignore //not working as expected
+ @Test
+ public void test9_onboardDelete_noAID() throws Exception {
+ System.out.println("Testing update application onboarding delete no AID");
+ onboardApp();
+
+ JsonOnboard jsonOnboard = new JsonOnboard();
+ jsonOnboard.setAppname("TestApp2");
+ jsonOnboard.setAid(null);
+ Response response = admin.deleteOnboardApp(jsonOnboard,adminAuthorization);
+
+ //only 1 app matches name
+ System.out.println("Status: " + response.getStatus() + ". Entity " + response.getEntity());
+ assertEquals(200, response.getStatus());
+ }
+
+ @Test
+ public void test9_onboardDelete_noAIDManyMatch() throws Exception {
+ System.out.println("Testing update application onboarding delete no AID many apps in namespace");
+ onboardApp();
+ onboardApp();
+
+ JsonOnboard jsonOnboard = new JsonOnboard();
+ jsonOnboard.setAppname("TestApp2");
+ jsonOnboard.setAid(null);
+ Response response = admin.deleteOnboardApp(jsonOnboard,adminAuthorization);
+
+ //multiple apps matches name
+ System.out.println("Status: " + response.getStatus() + ". Entity " + response.getEntity());
+ assertEquals(400, response.getStatus());
+ }
+
+ @Test
+ public void test9_onboardDelete_noAID_noApp() throws Exception {
+ System.out.println("Testing update application onboarding delete no AID, app not onboarded");
+
+ JsonOnboard jsonOnboard = new JsonOnboard();
+ jsonOnboard.setAppname("TestApp2");
+ jsonOnboard.setAid(null);
+ Response response = admin.deleteOnboardApp(jsonOnboard,adminAuthorization);
+
+ System.out.println("Status: " + response.getStatus() + ". Entity " + response.getEntity());
+ assertEquals(400, response.getStatus());
+ }
+
+ @Test
+ public void test9_onboardDelete_noAppToDelete() throws Exception {
+ System.out.println("Testing update application onboarding delete no app information");
+ onboardApp();
+
+ JsonOnboard jsonOnboard = new JsonOnboard();
+ jsonOnboard.setAppname(null);
+ jsonOnboard.setAid(null);
+ Response response = admin.deleteOnboardApp(jsonOnboard,adminAuthorization);
+
+ //only 1 app matches keyspace
+ System.out.println("Status: " + response.getStatus() + ". Entity " + response.getEntity());
+ assertEquals(400, response.getStatus());
+ }
+
+ @Test
+ public void test9_onboardDelete_wrongCredentials() throws Exception {
+ System.out.println("Testing onboard delete with wrong credentials");
+ JsonOnboard jsonOnboard = new JsonOnboard();
+ jsonOnboard.setAppname("TestApp2");
+ jsonOnboard.setAid(onboardUUID);
+ Response response = admin.deleteOnboardApp(jsonOnboard,wrongAdminAuthorization);
+
+ System.out.println("Status: " + response.getStatus() + ". Entity " + response.getEntity());
+ assertEquals(401, response.getStatus());
+ }
+
+ @Test
+ public void test10_delete() throws Exception {
+ System.out.println("Testing GUI delete call");
+ onboardApp();
+
+ assertTrue(admin.delete(adminAuthorization, onboardUUID));
+ }
+
+ @Test
+ public void test11_getAll() {
+ System.out.println("Testing GUI getall call");
+
+ System.out.println("admin.getall(adminAuthorization)");
+ }
+
+ /**
+ * Inject our mocked class and accept admin credentials
+ * @throws NoSuchFieldException
+ */
+ public void authenticateAdminTrue() throws NoSuchFieldException {
+ authMock = Mockito.mock(MusicAAFAuthentication.class);
+ FieldSetter.setField(admin, admin.getClass().getDeclaredField("authenticator"), authMock);
+
+ Mockito.when(authMock.authenticateAdmin(Mockito.matches(adminAuthorization))).thenReturn(true);
+ }
+
+ /**
+ * onboard the application and store generate uuid into {@link onboardUUID}
+ * @param onboard
+ * @throws Exception
+ */
+ public void onboardApp() throws Exception {
+ JsonOnboard jsonOnboard = new JsonOnboard();
+ jsonOnboard.setAppname("TestApp2");
+ jsonOnboard.setIsAAF("false");
+ jsonOnboard.setUserId("TestUser2");
+ jsonOnboard.setPassword("TestPassword2");
+
+ Response response = admin.onboardAppWithMusic(jsonOnboard,adminAuthorization);
+ Map<String, String> respMap = (Map<String, String>) response.getEntity();
+ onboardUUID = respMap.get("Generated AID");
+ }
+
+} \ No newline at end of file