package io.dropwizard.auth; import io.dropwizard.auth.principal.NullPrincipal; import org.junit.Test; import javax.ws.rs.container.ContainerRequestContext; import javax.ws.rs.core.Cookie; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.core.Request; import javax.ws.rs.core.Response; import javax.ws.rs.core.SecurityContext; import javax.ws.rs.core.UriInfo; import java.io.IOException; import java.io.InputStream; import java.net.URI; import java.security.Principal; import java.util.Collection; import java.util.Date; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Optional; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; public class AuthFilterTest { @Test public void isSecureShouldStayTheSame() throws Exception { ContainerRequestContext requestContext = new FakeSecureRequestContext(); new SimpleAuthFilter().filter(requestContext); assertTrue(requestContext.getSecurityContext().isSecure()); } static class SimpleAuthFilter extends AuthFilter<String, Principal> { SimpleAuthFilter() { authenticator = credentials -> Optional.of(new NullPrincipal()); authorizer = new PermitAllAuthorizer<>(); } @Override public void filter(ContainerRequestContext requestContext) throws IOException { authenticate(requestContext, "some-password", "SOME_SCHEME"); } } static class FakeSecureRequestContext implements ContainerRequestContext { private SecurityContext securityContext; FakeSecureRequestContext() { securityContext = mock(SecurityContext.class); when(securityContext.isSecure()).thenReturn(true); } @Override public SecurityContext getSecurityContext() { return securityContext; } @Override public void setSecurityContext(SecurityContext context) { this.securityContext = context; } @Override public Object getProperty(String name) { throw new UnsupportedOperationException(); } @Override public Collection<String> getPropertyNames() { throw new UnsupportedOperationException(); } @Override public void setProperty(String name, Object object) { throw new UnsupportedOperationException(); } @Override public void removeProperty(String name) { throw new UnsupportedOperationException(); } @Override public UriInfo getUriInfo() { throw new UnsupportedOperationException(); } @Override public void setRequestUri(URI requestUri) { throw new UnsupportedOperationException(); } @Override public void setRequestUri(URI baseUri, URI requestUri) { throw new UnsupportedOperationException(); } @Override public Request getRequest() { throw new UnsupportedOperationException(); } @Override public String getMethod() { throw new UnsupportedOperationException(); } @Override public void setMethod(String method) { throw new UnsupportedOperationException(); } @Override public MultivaluedMap<String, String> getHeaders() { throw new UnsupportedOperationException(); } @Override public String getHeaderString(String name) { throw new UnsupportedOperationException(); } @Override public Date getDate() { throw new UnsupportedOperationException(); } @Override public Locale getLanguage() { throw new UnsupportedOperationException(); } @Override public int getLength() { throw new UnsupportedOperationException(); } @Override public MediaType getMediaType() { throw new UnsupportedOperationException(); } @Override public List<MediaType> getAcceptableMediaTypes() { throw new UnsupportedOperationException(); } @Override public List<Locale> getAcceptableLanguages() { throw new UnsupportedOperationException(); } @Override public Map<String, Cookie> getCookies() { throw new UnsupportedOperationException(); } @Override public boolean hasEntity() { throw new UnsupportedOperationException(); } @Override public InputStream getEntityStream() { throw new UnsupportedOperationException(); } @Override public void setEntityStream(InputStream input) { throw new UnsupportedOperationException(); } @Override public void abortWith(Response response) { throw new UnsupportedOperationException(); } } }