aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/java/org/onap/music/authentication/AuthUtil.java20
-rwxr-xr-xsrc/main/java/org/onap/music/main/MusicUtil.java30
-rw-r--r--src/test/java/org/onap/music/unittests/MusicUtilTest.java9
-rw-r--r--src/test/java/org/onap/music/unittests/authentication/AuthUtilTest.java123
4 files changed, 141 insertions, 41 deletions
diff --git a/src/main/java/org/onap/music/authentication/AuthUtil.java b/src/main/java/org/onap/music/authentication/AuthUtil.java
index 999acc75..51e3dac0 100644
--- a/src/main/java/org/onap/music/authentication/AuthUtil.java
+++ b/src/main/java/org/onap/music/authentication/AuthUtil.java
@@ -134,7 +134,11 @@ public class AuthUtil {
*/
public static boolean isAccessAllowed(ServletRequest request, String nameSpace) throws Exception {
- if (nameSpace.isEmpty()) {
+ if (request==null) {
+ throw new Exception("Request cannot be null");
+ }
+
+ if (nameSpace==null || nameSpace.isEmpty()) {
throw new Exception("NameSpace not Declared!");
}
@@ -143,9 +147,7 @@ public class AuthUtil {
//logger.info(EELFLoggerDelegate.applicationLogger,
// "AAFPermission of the requested MechId for all the namespaces: " + aafPermsList);
- String requestUri = null;
logger.debug(EELFLoggerDelegate.applicationLogger, "Requested nameSpace: " + nameSpace);
- HttpServletRequest httpRequest = null;
List<AAFPermission> aafPermsFinalList = filterNameSpacesAAFPermissions(nameSpace, aafPermsList);
@@ -154,10 +156,8 @@ public class AuthUtil {
"AuthUtil list of AAFPermission for the specific namespace ::::::::::::::::::::::::::::::::::::::::::::"
+ aafPermsFinalList);
- if (null != request) {
- httpRequest = (HttpServletRequest) request;
- requestUri = httpRequest.getRequestURI().substring(httpRequest.getContextPath().length() + 1);
- }
+ HttpServletRequest httpRequest = (HttpServletRequest) request;
+ String requestUri = httpRequest.getRequestURI().substring(httpRequest.getContextPath().length() + 1);
logger.debug(EELFLoggerDelegate.applicationLogger,
"AuthUtil requestUri ::::::::::::::::::::::::::::::::::::::::::::" + requestUri);
@@ -222,10 +222,8 @@ public class AuthUtil {
String[] subPath = null;
//String type = null;
//type = keyArray[0];
- String instance = null;
- instance = keyArray[1];
- String action = null;
- action = keyArray[2];
+ String instance = keyArray[1];
+ String action = keyArray[2];
//if the instance & action both are * , then allow
if ("*".equalsIgnoreCase(instance) && "*".equalsIgnoreCase(action)) {
diff --git a/src/main/java/org/onap/music/main/MusicUtil.java b/src/main/java/org/onap/music/main/MusicUtil.java
index 17e3fcf6..9ffa2503 100755
--- a/src/main/java/org/onap/music/main/MusicUtil.java
+++ b/src/main/java/org/onap/music/main/MusicUtil.java
@@ -653,36 +653,6 @@ public class MusicUtil {
public static ConsistencyLevel getConsistencyLevel(String consistency) {
return consistencyName.get(consistency.toUpperCase());
- }
-
- public static void loadProperties() throws Exception {
- Properties prop = new Properties();
- InputStream input = null;
- try {
- // load the properties file
- input = MusicUtil.class.getClassLoader().getResourceAsStream("music.properties");
- prop.load(input);
- } catch (Exception ex) {
- logger.error(EELFLoggerDelegate.errorLogger, "Unable to find properties file.", ex);
- throw new Exception();
- } finally {
- if (input != null) {
- try {
- input.close();
- } catch (IOException e) {
- e.printStackTrace();
- logger.error(EELFLoggerDelegate.errorLogger, e);
- }
- }
- }
- // get the property value and return it
- MusicUtil.setMyCassaHost(prop.getProperty("cassandra.host"));
- MusicUtil.setCassName(prop.getProperty("cassandra.user"));
- MusicUtil.setCassPwd(prop.getProperty("cassandra.password"));
- MusicUtil.setCassandraPort(Integer.parseInt(prop.getProperty("cassandra.port")));
- MusicUtil.setNotifyTimeOut(Integer.parseInt(prop.getProperty("notify.timeout")));
- MusicUtil.setNotifyInterval(Integer.parseInt(prop.getProperty("notify.interval")));
- MusicUtil.setCacheObjectMaxLife(Integer.parseInt(prop.getProperty("cacheobject.maxlife")));
}
public static void setNotifyInterval(int notifyinterval) {
diff --git a/src/test/java/org/onap/music/unittests/MusicUtilTest.java b/src/test/java/org/onap/music/unittests/MusicUtilTest.java
index 2b6e0f5a..930959ba 100644
--- a/src/test/java/org/onap/music/unittests/MusicUtilTest.java
+++ b/src/test/java/org/onap/music/unittests/MusicUtilTest.java
@@ -33,6 +33,8 @@ import java.util.UUID;
import org.junit.Test;
import org.onap.music.datastore.PreparedQueryObject;
import org.onap.music.main.MusicUtil;
+import org.onap.music.main.PropertiesLoader;
+import org.springframework.test.context.TestPropertySource;
import com.datastax.driver.core.DataType;
public class MusicUtilTest {
@@ -294,4 +296,11 @@ public class MusicUtilTest {
MusicUtil.setMessageIdRequired("msgIdRequired");
assertEquals("msgIdRequired", MusicUtil.getMessageIdRequired());
}
+
+ @Test
+ public void testLoadProperties() {
+ PropertiesLoader pl = new PropertiesLoader();
+ pl.loadProperties();
+ }
+
}
diff --git a/src/test/java/org/onap/music/unittests/authentication/AuthUtilTest.java b/src/test/java/org/onap/music/unittests/authentication/AuthUtilTest.java
new file mode 100644
index 00000000..b578bd66
--- /dev/null
+++ b/src/test/java/org/onap/music/unittests/authentication/AuthUtilTest.java
@@ -0,0 +1,123 @@
+/*
+ * ============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.authentication;
+
+import static org.junit.Assert.*;
+import java.util.ArrayList;
+import java.util.List;
+import javax.servlet.ServletRequest;
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.onap.aaf.cadi.CadiWrap;
+import org.onap.aaf.cadi.Permission;
+import org.onap.aaf.cadi.aaf.AAFPermission;
+import org.onap.music.authentication.AuthUtil;
+
+public class AuthUtilTest {
+
+ @Test
+ public void testGetAAFPermissions() {
+ CadiWrap cw = Mockito.mock(CadiWrap.class);
+ List<Permission> permList = new ArrayList<Permission>();
+ Permission perm1 = Mockito.mock(AAFPermission.class);
+ permList.add(perm1);
+ Mockito.when(cw.getPermissions(Mockito.any())).thenReturn(permList);
+
+ List<AAFPermission> returnedPerm = AuthUtil.getAAFPermissions(cw);
+
+ assertEquals(perm1, returnedPerm.get(0));
+ }
+
+ @Test
+ public void testDecodeFunctionCode() throws Exception {
+ String toDecode = "some%2dthing.something.%2a";
+ String decoded = AuthUtil.decodeFunctionCode(toDecode);
+
+ assertEquals("some-thing.something.*", decoded);
+ }
+
+ @Test
+ public void testIsAccessAllowed() throws Exception {
+ System.out.println("Request perms");
+ assertTrue(AuthUtil.isAccessAllowed(createRequest("*", "*"), "testns"));
+ }
+
+ @Test
+ public void testIsAccessNotAllowed() throws Exception {
+ System.out.println("Request to write when have read perms");
+ assertFalse(AuthUtil.isAccessAllowed(createRequest("POST", "GET"), "testns"));
+ }
+
+ @Test
+ public void testIsAccessAllowedNullRequest() {
+ try {
+ assertFalse(AuthUtil.isAccessAllowed(null, "namespace"));
+ fail("Should throw exception");
+ } catch (Exception e) {
+ }
+ }
+
+ @Test
+ public void testIsAccessAllowedNullNamespace() {
+ try {
+ assertFalse(AuthUtil.isAccessAllowed(createRequest(), null));
+ fail("Should throw exception");
+ } catch (Exception e) {
+ }
+ }
+
+ @Test
+ public void testIsAccessAllowedEmptyNamespace() {
+ try {
+ assertFalse(AuthUtil.isAccessAllowed(createRequest(), ""));
+ fail("Should throw exception");
+ } catch (Exception e) {
+ }
+ }
+
+ /**
+ *
+ * @param permRequested 'PUT', 'POST', 'GET', or 'DELETE'
+ * @param permGranted '*' or 'GET'
+ * @return
+ */
+ private ServletRequest createRequest(String permRequested, String permGranted) {
+ CadiWrap cw = Mockito.mock(CadiWrap.class);
+ List<Permission> permList = new ArrayList<Permission>();
+ AAFPermission perm1 = Mockito.mock(AAFPermission.class);
+ Mockito.when(perm1.getType()).thenReturn("testns");
+ Mockito.when(perm1.getKey()).thenReturn("org.onap.music.api.user.access|testns|" + permGranted);
+
+ permList.add(perm1);
+ Mockito.when(cw.getPermissions(Mockito.any())).thenReturn(permList);
+ Mockito.when(cw.getRequestURI()).thenReturn("/v2/locks/create/testns.MyTable.Field1");
+ Mockito.when(cw.getContextPath()).thenReturn("/v2/locks/create");
+ Mockito.when(cw.getMethod()).thenReturn(permRequested);
+
+ return cw;
+ }
+
+ private ServletRequest createRequest() {
+ return createRequest("POST","*");
+ }
+}