summaryrefslogtreecommitdiffstats
path: root/security-util-lib/src/test/java/org/onap/sdc/security/filters/RestrictionAccessFilterTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'security-util-lib/src/test/java/org/onap/sdc/security/filters/RestrictionAccessFilterTest.java')
-rw-r--r--security-util-lib/src/test/java/org/onap/sdc/security/filters/RestrictionAccessFilterTest.java207
1 files changed, 207 insertions, 0 deletions
diff --git a/security-util-lib/src/test/java/org/onap/sdc/security/filters/RestrictionAccessFilterTest.java b/security-util-lib/src/test/java/org/onap/sdc/security/filters/RestrictionAccessFilterTest.java
new file mode 100644
index 0000000..20f0d05
--- /dev/null
+++ b/security-util-lib/src/test/java/org/onap/sdc/security/filters/RestrictionAccessFilterTest.java
@@ -0,0 +1,207 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.sdc.security.filters;
+
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+import org.onap.sdc.security.*;
+
+import javax.servlet.http.Cookie;
+import java.io.IOException;
+import java.security.InvalidParameterException;
+import java.util.HashSet;
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.*;
+
+@RunWith(MockitoJUnitRunner.class)
+public class RestrictionAccessFilterTest {
+
+ private static final String jsonResponseFromPortal = "{\"orgId\":null,\"managerId\":null,\"firstName\":\"NAME\",\"middleInitial\":null,\"lastName\":\"FAMILY\",\"phone\":null,\"email\":\"abc123@test.com\",\"hrid\":null,\"orgUserId\":\"abc123\",\"orgCode\":null,\"orgManagerUserId\":null,\"jobTitle\":null," +
+ "\"loginId\":\"abc123\",\"active\":true,\"roles\":[%s]}";
+ private static final String rolesJson = "{\"id\":\"1234\",\"name\":\"designer\",\"roleFunctions\":[\"read\",\"write\"]}";
+
+ private static final String userId = "abc123";
+
+ @Mock
+ private CloseableHttpClient httpClient;
+ @Mock
+ private ISessionValidationFilterConfiguration configuration;
+ @Mock
+ private ISessionValidationCookieConfiguration cookieConfig;
+ @Mock
+ private IUsersThreadLocalHolder threadLocalUtils;
+ @Mock
+ private AuthenticationCookie authenticationCookie;
+ @Mock
+ private PortalClient portalClient;
+
+ private RestrictionAccessFilter filter;
+
+ @Before
+ public void setUp() {
+ mockCreateFilter(configuration, threadLocalUtils, portalClient);
+ assertNotNull(filter);
+ }
+
+ private void mockCreateFilter(ISessionValidationFilterConfiguration sessionConfig, IUsersThreadLocalHolder threadLocalUtils, PortalClient portalClient) {
+ filter = new RestrictionAccessFilter(sessionConfig, threadLocalUtils, portalClient);
+ }
+
+// @Test(expected = InvalidParameterException.class)
+// public void filterConfigurationObjectCreationFailedWhenPropertyIsNotSet() {
+// when(configuration.getAuthCookie()).thenReturn(cookieConfig);
+// when(cookieConfig.getRedirectURL()).thenReturn("does_not_exist");
+// filter = new RestrictionAccessFilter(configuration, portalClient, threadLocalUtils);
+// }
+
+ @Test (expected = RedirectException.class)
+ public void authorizeUserOnSessionExpirationWhenUsersDifferent() throws RedirectException {
+ Cookie[] cookies = new Cookie [1] ;
+ cookies[0] = new Cookie(RestrictionAccessFilter.CSP_USER_ID, "user1");
+ filter.authorizeUserOnSessionExpiration(authenticationCookie, cookies);
+ }
+
+ @Test (expected = RedirectException.class)
+ public void authorizeUserOnSessionExpirationWhenUserRolesDifferent() throws RedirectException, IOException {
+ when(authenticationCookie.getUserID()).thenReturn(userId);
+ RestrictionAccessFilter spyFilter2 = spy(filter);
+ HashSet<String> roles = new HashSet<>();
+ roles.add("b");
+ Cookie[] cookies = new Cookie [] {new Cookie(RestrictionAccessFilter.CSP_USER_ID, userId)};
+ when(authenticationCookie.getRoles()).thenReturn(roles);
+ spyFilter2.authorizeUserOnSessionExpiration(authenticationCookie, cookies);
+ }
+
+ @Test (expected = RedirectException.class)
+ public void authorizeUserOnSessionExpirationWhenUserRolesDisappearInCookie() throws RedirectException, IOException {
+ when(authenticationCookie.getUserID()).thenReturn(userId);
+ RestrictionAccessFilter spyFilter2 = spy(filter);
+ HashSet<String> roles = new HashSet<>();
+ Cookie[] cookies = new Cookie [] {new Cookie(RestrictionAccessFilter.CSP_USER_ID, userId)};
+ when(authenticationCookie.getRoles()).thenReturn(roles);
+ spyFilter2.authorizeUserOnSessionExpiration(authenticationCookie, cookies);
+ }
+
+ @Test (expected = RedirectException.class)
+ public void authorizeUserOnSessionExpirationWhenUserRolesRetrievedFromPortalAndMatch() throws RedirectException, IOException {
+ when(authenticationCookie.getUserID()).thenReturn(userId);
+ PortalClient spyFilter = spy(portalClient);
+ RestrictionAccessFilter spyFilter2 = spy(filter);
+ HashSet<String> roles = new HashSet<>();
+ roles.add("DESIGNER");
+
+ when(authenticationCookie.getRoles()).thenReturn(roles);
+ Cookie[] cookies = new Cookie [] {new Cookie(RestrictionAccessFilter.CSP_USER_ID, userId)};
+ spyFilter2.authorizeUserOnSessionExpiration(authenticationCookie, cookies);
+
+ }
+
+ @Test (expected = RedirectException.class)
+ public void authorizeUserOnSessionExpirationWhenUserRolesRetrievedFromPortalAndEmpty() throws RedirectException, IOException {
+ HashSet<String> roles = new HashSet<>();
+ roles.add("b");
+ when(authenticationCookie.getUserID()).thenReturn(userId);
+ when(authenticationCookie.getRoles()).thenReturn(roles);
+ PortalClient spyFilter = spy(portalClient);
+ RestrictionAccessFilter spyFilter2 = spy(filter);
+
+ Cookie[] cookies = new Cookie [] {new Cookie(RestrictionAccessFilter.CSP_USER_ID, userId)};
+ spyFilter2.authorizeUserOnSessionExpiration(authenticationCookie, cookies);
+ }
+
+ @Test (expected = RedirectException.class)
+ public void authorizeUserOnSessionExpirationWhenUserRolesCantBeRetrievedFromPortal() throws RedirectException, IOException {
+ HashSet<String> roles = new HashSet<>();
+ roles.add("b");
+ when(authenticationCookie.getUserID()).thenReturn(userId);
+ when(authenticationCookie.getRoles()).thenReturn(roles);
+ RestrictionAccessFilter spyFilter2 = spy(filter);
+
+ Cookie[] cookies = new Cookie [] {new Cookie(RestrictionAccessFilter.CSP_USER_ID, userId)};
+ spyFilter2.authorizeUserOnSessionExpiration(authenticationCookie, cookies);
+ }
+
+// @Test (expected = RedirectException.class)
+// public void authorizeUserOnSessionExpirationWhenHttpRequestFailed() throws RedirectException, IOException, RestrictionAccessFilterException {
+// HashSet<String> roles = new HashSet<>();
+// roles.add("b");
+// when(authenticationCookie.getUserID()).thenReturn(userId);
+// when(authenticationCookie.getRoles()).thenReturn(roles);
+//// PortalClient spyFilter = spy(portalClient);
+// RestrictionAccessFilter spyFilter2 = spy(filter);
+//// when(spyFilter.fetchUserRolesFromPortal()*/
+// doThrow(IOException.class).when(portalClient).fetchUserRolesFromPortal(eq(userId));
+// Cookie[] cookies = new Cookie [] {new Cookie(RestrictionAccessFilter.CSP_USER_ID, userId)};
+// spyFilter2.authorizeUserOnSessionExpiration(authenticationCookie, cookies);
+// }
+
+ @Test (expected = RedirectException.class)
+ public void authorizeUserOnSessionExpirationWhenCspUserCookieIsNull() throws RedirectException, IOException {
+ when(authenticationCookie.getUserID()).thenReturn(userId);
+
+ Cookie[] cookies = new Cookie [] {new Cookie(RestrictionAccessFilter.CSP_USER_ID, null)};
+ filter.authorizeUserOnSessionExpiration(authenticationCookie, cookies);
+ }
+
+ @Test (expected = RedirectException.class)
+ public void authorizeUserOnSessionExpirationWhenCookieNotFound() throws RedirectException, IOException {
+ assertNotNull(filter);
+ Cookie[] cookies = new Cookie [] {new Cookie("someCookie", userId)};
+ filter.authorizeUserOnSessionExpiration(authenticationCookie, cookies);
+ }
+
+ @Test
+ public void getCspUserIdWhenMoreThanOneUserIdExists() throws RedirectException {
+ Cookie[] cookies = new Cookie [] {
+ new Cookie(RestrictionAccessFilter.CSP_USER_ID, userId),
+ new Cookie(RestrictionAccessFilter.CSP_USER_ID, "other")};
+ assertEquals(userId, filter.getCookieValue(cookies, RestrictionAccessFilter.CSP_USER_ID));
+ }
+
+ @Test()
+ public void getCspUserIdWhenUserIdIsNull() throws RedirectException {
+ Cookie[] cookies = new Cookie [] {new Cookie(RestrictionAccessFilter.CSP_USER_ID, null)} ;
+ assertNull(filter.getCookieValue(cookies, RestrictionAccessFilter.CSP_USER_ID));
+ }
+
+ @Test(expected=RedirectException.class)
+ public void getCspUserIdWhenUserIdCookieNotFound() throws RedirectException {
+ Cookie[] cookies = new Cookie [] {new Cookie("someName", "someValue")} ;
+ filter.getCookieValue(cookies, RestrictionAccessFilter.CSP_USER_ID);
+ }
+
+ @Test(expected=RedirectException.class)
+ public void getCspUserIdWhenNoCookiesFound() throws RedirectException {
+ Cookie[] cookies = new Cookie [] {};
+ filter.getCookieValue(cookies, RestrictionAccessFilter.CSP_USER_ID);
+ }
+
+ @Test(expected=RedirectException.class)
+ public void getCspUserIdWhenCookiesNull() throws RedirectException {
+ filter.getCookieValue(null, RestrictionAccessFilter.CSP_USER_ID);
+ }
+
+
+}