KNOX-2342 - CommonIdentityAssertionFilter calling mapGroupPrincipals Twice - add testing
diff --git a/gateway-provider-identity-assertion-common/src/main/java/org/apache/knox/gateway/identityasserter/common/filter/CommonIdentityAssertionFilter.java b/gateway-provider-identity-assertion-common/src/main/java/org/apache/knox/gateway/identityasserter/common/filter/CommonIdentityAssertionFilter.java
index 7d66925..c3cea85 100644
--- a/gateway-provider-identity-assertion-common/src/main/java/org/apache/knox/gateway/identityasserter/common/filter/CommonIdentityAssertionFilter.java
+++ b/gateway-provider-identity-assertion-common/src/main/java/org/apache/knox/gateway/identityasserter/common/filter/CommonIdentityAssertionFilter.java
@@ -38,8 +38,8 @@
public class CommonIdentityAssertionFilter extends AbstractIdentityAssertionFilter {
private IdentityAsserterMessages LOG = MessagesFactory.get(IdentityAsserterMessages.class);
- private static final String GROUP_PRINCIPAL_MAPPING = "group.principal.mapping";
- private static final String PRINCIPAL_MAPPING = "principal.mapping";
+ public static final String GROUP_PRINCIPAL_MAPPING = "group.principal.mapping";
+ public static final String PRINCIPAL_MAPPING = "principal.mapping";
private SimplePrincipalMapper mapper = new SimplePrincipalMapper();
@Override
@@ -94,7 +94,7 @@
continueChainAsPrincipal(wrapper, response, chain, mappedPrincipalName, groups);
}
- private String[] combineGroupMappings(String[] mappedGroups, String[] groups) {
+ protected String[] combineGroupMappings(String[] mappedGroups, String[] groups) {
if (mappedGroups != null && groups != null) {
return ArrayUtils.addAll(mappedGroups, groups);
}
diff --git a/gateway-provider-identity-assertion-common/src/test/java/org/apache/knox/gateway/identityasserter/filter/CommonIdentityAssertionFilterTest.java b/gateway-provider-identity-assertion-common/src/test/java/org/apache/knox/gateway/identityasserter/filter/CommonIdentityAssertionFilterTest.java
index 15f41c0..ffc9975 100644
--- a/gateway-provider-identity-assertion-common/src/test/java/org/apache/knox/gateway/identityasserter/filter/CommonIdentityAssertionFilterTest.java
+++ b/gateway-provider-identity-assertion-common/src/test/java/org/apache/knox/gateway/identityasserter/filter/CommonIdentityAssertionFilterTest.java
@@ -41,13 +41,8 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
-/**
- * @author larry
- *
- */
public class CommonIdentityAssertionFilterTest {
private String username;
- private String[] mappedGroups;
private Filter filter;
@Before
@@ -61,21 +56,35 @@
@Override
public String[] mapGroupPrincipals(String principalName, Subject subject) {
- String[] groups = new String[2];
+ String[] groups = new String[4];
int i = 0;
for(GroupPrincipal p : subject.getPrincipals(GroupPrincipal.class)) {
groups[i] = p.getName().toUpperCase(Locale.ROOT);
i++;
}
- mappedGroups = groups;
return groups;
}
+
+ @Override
+ protected String[] combineGroupMappings(String[] mappedGroups, String[] groups) {
+ String[] combined = super.combineGroupMappings(mappedGroups, groups);
+ assertEquals("LARRY", username);
+ assertTrue("Should be greater than 2", combined.length > 2);
+ assertTrue(combined[0], combined[0].equalsIgnoreCase("EVERYONE"));
+ assertTrue(combined[1].equalsIgnoreCase("USERS") || combined[1].equalsIgnoreCase("ADMIN"));
+ assertTrue(combined[2], combined[2].equalsIgnoreCase("USERS") || combined[2].equalsIgnoreCase("ADMIN"));
+ return combined;
+ }
};
}
@Test
public void testSimpleFilter() throws ServletException, IOException {
FilterConfig config = EasyMock.createNiceMock( FilterConfig.class );
+ EasyMock.expect(config.getInitParameter(CommonIdentityAssertionFilter.GROUP_PRINCIPAL_MAPPING)).
+ andReturn("*=everyone;").once();
+ EasyMock.expect(config.getInitParameter(CommonIdentityAssertionFilter.PRINCIPAL_MAPPING)).
+ andReturn("ljm=lmccay;").once();
EasyMock.replay( config );
final HttpServletRequest request = EasyMock.createNiceMock( HttpServletRequest.class );
@@ -101,6 +110,7 @@
new PrivilegedExceptionAction<Object>() {
@Override
public Object run() throws Exception {
+ filter.init(config);
filter.doFilter(request, response, chain);
return null;
}
@@ -118,9 +128,5 @@
throw new ServletException(t);
}
}
- assertEquals("LARRY", username);
- assertEquals(mappedGroups.length, 2);
- assertTrue(mappedGroups[0].equals("USERS") || mappedGroups[0].equals("ADMIN"));
- assertTrue(mappedGroups[1], mappedGroups[1].equals("USERS") || mappedGroups[1].equals("ADMIN"));
}
}