|
19 | 19 |
|
20 | 20 | import static java.util.Arrays.asList; |
21 | 21 | import static java.util.Collections.emptyList; |
| 22 | +import static java.util.Collections.emptySet; |
22 | 23 | import static java.util.Collections.singletonList; |
23 | 24 | import static org.junit.Assert.assertEquals; |
24 | 25 |
|
|
27 | 28 | import java.util.HashMap; |
28 | 29 | import java.util.HashSet; |
29 | 30 | import java.util.List; |
| 31 | +import java.util.Locale; |
30 | 32 | import java.util.Set; |
31 | 33 |
|
32 | 34 | import org.apache.knox.gateway.plang.AbstractSyntaxTree; |
33 | 35 | import org.apache.knox.gateway.plang.Parser; |
| 36 | +import org.easymock.EasyMock; |
34 | 37 | import org.junit.Test; |
35 | 38 |
|
| 39 | +import javax.servlet.ServletRequest; |
| 40 | +import javax.servlet.http.HttpServletRequest; |
| 41 | + |
36 | 42 | @SuppressWarnings("PMD.NonStaticInitializer") |
37 | 43 | public class VirtualGroupMapperTest { |
38 | 44 | private Parser parser = new Parser(); |
@@ -117,8 +123,37 @@ public void testMatchGroup() { |
117 | 123 | assertEquals(0, virtualGroups("user4", emptyList()).size()); |
118 | 124 | } |
119 | 125 |
|
| 126 | + @Test |
| 127 | + public void testRequestParameterContainsParam() { |
| 128 | + testRequestParameter(true); |
| 129 | + } |
| 130 | + |
| 131 | + @Test |
| 132 | + public void testRequestParameterNotContainsParam() { |
| 133 | + testRequestParameter(false); |
| 134 | + } |
| 135 | + |
| 136 | + private void testRequestParameter(boolean containsParam) { |
| 137 | + final String groupName = "non_rejected_request"; |
| 138 | + final String requestParamName = "impala.doas.user"; |
| 139 | + mapper = new VirtualGroupMapper(new HashMap<String, AbstractSyntaxTree>(){{ |
| 140 | + put(groupName, parser.parse(String.format(Locale.US, "(= (strlen (request-parameter '%s')) 0)", requestParamName))); |
| 141 | + }}); |
| 142 | + final HttpServletRequest request = EasyMock.createNiceMock(HttpServletRequest.class); |
| 143 | + if (containsParam) { |
| 144 | + EasyMock.expect(request.getParameter(requestParamName)).andReturn("impala").anyTimes(); |
| 145 | + } |
| 146 | + EasyMock.replay(request); |
| 147 | + final Set<String> expectedGroups = containsParam ? emptySet() : setOf(groupName); |
| 148 | + assertEquals(expectedGroups, virtualGroups("user1", emptyList(), request)); |
| 149 | + } |
| 150 | + |
120 | 151 | private Set<String> virtualGroups(String user1, List<String> ldapGroups) { |
121 | | - return mapper.mapGroups(user1, new HashSet<>(ldapGroups), null); |
| 152 | + return virtualGroups(user1, ldapGroups, null); |
| 153 | + } |
| 154 | + |
| 155 | + private Set<String> virtualGroups(String user1, List<String> ldapGroups, ServletRequest request) { |
| 156 | + return mapper.mapGroups(user1, new HashSet<>(ldapGroups), request); |
122 | 157 | } |
123 | 158 |
|
124 | 159 | private static Set<String> setOf(String... strings) { |
|
0 commit comments