Skip to content

Commit 0a2645e

Browse files
author
Vladimir Kotal
committed
add tests
1 parent b0a23e7 commit 0a2645e

File tree

2 files changed

+52
-4
lines changed

2 files changed

+52
-4
lines changed

opengrok-web/src/main/java/org/opengrok/web/api/v1/filter/IncomingFilter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ public void filter(final ContainerRequestContext context) {
9999
if (request.isSecure()) {
100100
String authHeader;
101101
if ((authHeader = request.getHeader(HttpHeaders.AUTHORIZATION)) != null) {
102-
if (RuntimeEnvironment.getInstance().getTokens().contains(authHeader)) {
102+
if (RuntimeEnvironment.getInstance().getAuthenticationTokens().contains(authHeader)) {
103103
logger.log(Level.FINEST, "allowing request to {0} based on authentication header", path);
104104
return;
105105
}

opengrok-web/src/test/java/org/opengrok/web/api/v1/filter/LocalhostFilterTest.java renamed to opengrok-web/src/test/java/org/opengrok/web/api/v1/filter/IncomingFilterTest.java

Lines changed: 51 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,24 +24,63 @@
2424

2525
import org.junit.Test;
2626
import org.mockito.ArgumentCaptor;
27+
import org.opengrok.indexer.configuration.RuntimeEnvironment;
2728

2829
import javax.servlet.http.HttpServletRequest;
2930
import javax.ws.rs.container.ContainerRequestContext;
31+
import javax.ws.rs.core.HttpHeaders;
3032
import javax.ws.rs.core.Response;
3133
import javax.ws.rs.core.UriInfo;
3234

3335
import java.lang.reflect.Field;
36+
import java.util.HashSet;
37+
import java.util.Map;
38+
import java.util.Set;
39+
import java.util.TreeMap;
3440

3541
import static org.junit.Assert.assertEquals;
3642
import static org.mockito.Mockito.mock;
3743
import static org.mockito.Mockito.never;
3844
import static org.mockito.Mockito.verify;
3945
import static org.mockito.Mockito.when;
4046

41-
public class LocalhostFilterTest {
47+
public class IncomingFilterTest {
48+
@Test
49+
public void nonLocalhostTestWithValidToken() throws Exception {
50+
nonLocalhostTestWithToken(true);
51+
}
52+
53+
@Test
54+
public void nonLocalhostTestWithInvalidToken() throws Exception {
55+
nonLocalhostTestWithToken(false);
56+
}
57+
58+
private void nonLocalhostTestWithToken(boolean allowed) throws Exception {
59+
String allowedToken = "foo";
60+
61+
Set<String> tokens = new HashSet<>();
62+
tokens.add(allowedToken);
63+
RuntimeEnvironment.getInstance().setAuthenticationTokens(tokens);
64+
65+
Map<String, String> headers = new TreeMap<>();
66+
headers.put(HttpHeaders.AUTHORIZATION, allowed ? allowedToken : allowedToken + "_");
67+
IncomingFilter filter = mockWithRemoteAddress("192.168.1.1", headers, true);
68+
69+
ContainerRequestContext context = mockContainerRequestContext("test");
70+
71+
ArgumentCaptor<Response> captor = ArgumentCaptor.forClass(Response.class);
72+
73+
filter.filter(context);
74+
75+
if (allowed) {
76+
verify(context, never()).abortWith(captor.capture());
77+
} else {
78+
verify(context).abortWith(captor.capture());
79+
}
80+
}
4281

4382
@Test
44-
public void nonLocalhostTest() throws Exception {
83+
public void nonLocalhostTestWithoutToken() throws Exception {
4584
IncomingFilter filter = mockWithRemoteAddress("192.168.1.1");
4685

4786
ContainerRequestContext context = mockContainerRequestContext("test");
@@ -55,18 +94,27 @@ public void nonLocalhostTest() throws Exception {
5594
assertEquals(Response.Status.UNAUTHORIZED.getStatusCode(), captor.getValue().getStatus());
5695
}
5796

58-
private IncomingFilter mockWithRemoteAddress(final String remoteAddr) throws Exception {
97+
private IncomingFilter mockWithRemoteAddress(final String remoteAddr, Map<String, String> headers, boolean secure)
98+
throws Exception {
5999
IncomingFilter filter = new IncomingFilter();
60100
filter.init();
61101

62102
HttpServletRequest request = mock(HttpServletRequest.class);
103+
for (String name : headers.keySet()) {
104+
when(request.getHeader(name)).thenReturn(headers.get(name));
105+
}
106+
when(request.isSecure()).thenReturn(secure);
63107
when(request.getRemoteAddr()).thenReturn(remoteAddr);
64108

65109
setHttpRequest(filter, request);
66110

67111
return filter;
68112
}
69113

114+
private IncomingFilter mockWithRemoteAddress(final String remoteAddr) throws Exception {
115+
return mockWithRemoteAddress(remoteAddr, new TreeMap<>(), false);
116+
}
117+
70118
private void setHttpRequest(final IncomingFilter filter, final HttpServletRequest request) throws Exception {
71119
Field f = IncomingFilter.class.getDeclaredField("request");
72120
f.setAccessible(true);

0 commit comments

Comments
 (0)