Search in sources :

Example 86 with HttpServletResponse

use of jakarta.servlet.http.HttpServletResponse in project spring-security by spring-projects.

the class LazyCsrfTokenRepository method getResponse.

private HttpServletResponse getResponse(HttpServletRequest request) {
    HttpServletResponse response = (HttpServletResponse) request.getAttribute(HTTP_RESPONSE_ATTR);
    Assert.notNull(response, () -> "The HttpServletRequest attribute must contain an HttpServletResponse " + "for the attribute " + HTTP_RESPONSE_ATTR);
    return response;
}
Also used : HttpServletResponse(jakarta.servlet.http.HttpServletResponse)

Example 87 with HttpServletResponse

use of jakarta.servlet.http.HttpServletResponse in project spring-security by spring-projects.

the class HttpSessionRequestCacheTests method getRequestCustomNoClassCastException.

// SEC-2246
@Test
public void getRequestCustomNoClassCastException() {
    MockHttpServletRequest request = new MockHttpServletRequest("POST", "/destination");
    MockHttpServletResponse response = new MockHttpServletResponse();
    HttpSessionRequestCache cache = new HttpSessionRequestCache() {

        @Override
        public void saveRequest(HttpServletRequest request, HttpServletResponse response) {
            request.getSession().setAttribute(SAVED_REQUEST, new CustomSavedRequest(new DefaultSavedRequest(request, new PortResolverImpl())));
        }
    };
    cache.saveRequest(request, response);
    cache.saveRequest(request, response);
    assertThat(cache.getRequest(request, response)).isInstanceOf(CustomSavedRequest.class);
}
Also used : HttpServletRequest(jakarta.servlet.http.HttpServletRequest) MockHttpServletRequest(org.springframework.mock.web.MockHttpServletRequest) PortResolverImpl(org.springframework.security.web.PortResolverImpl) MockHttpServletRequest(org.springframework.mock.web.MockHttpServletRequest) HttpServletResponse(jakarta.servlet.http.HttpServletResponse) MockHttpServletResponse(org.springframework.mock.web.MockHttpServletResponse) MockHttpServletResponse(org.springframework.mock.web.MockHttpServletResponse) Test(org.junit.jupiter.api.Test)

Example 88 with HttpServletResponse

use of jakarta.servlet.http.HttpServletResponse in project spring-security by spring-projects.

the class RequestWrapperTests method resetWhenForward.

@Test
public void resetWhenForward() throws Exception {
    String denormalizedPath = testPaths.keySet().iterator().next();
    String forwardPath = "/forward/path";
    HttpServletRequest mockRequest = mock(HttpServletRequest.class);
    HttpServletResponse mockResponse = mock(HttpServletResponse.class);
    RequestDispatcher mockDispatcher = mock(RequestDispatcher.class);
    given(mockRequest.getServletPath()).willReturn("");
    given(mockRequest.getPathInfo()).willReturn(denormalizedPath);
    given(mockRequest.getRequestDispatcher(forwardPath)).willReturn(mockDispatcher);
    RequestWrapper wrapper = new RequestWrapper(mockRequest);
    RequestDispatcher dispatcher = wrapper.getRequestDispatcher(forwardPath);
    dispatcher.forward(mockRequest, mockResponse);
    verify(mockRequest).getRequestDispatcher(forwardPath);
    verify(mockDispatcher).forward(mockRequest, mockResponse);
    assertThat(wrapper.getPathInfo()).isEqualTo(denormalizedPath);
    verify(mockRequest, times(2)).getPathInfo();
    // validate wrapper.getServletPath() delegates to the mock
    wrapper.getServletPath();
    verify(mockRequest, times(2)).getServletPath();
    verifyNoMoreInteractions(mockRequest, mockResponse, mockDispatcher);
}
Also used : HttpServletRequest(jakarta.servlet.http.HttpServletRequest) MockHttpServletRequest(org.springframework.mock.web.MockHttpServletRequest) HttpServletResponse(jakarta.servlet.http.HttpServletResponse) RequestDispatcher(jakarta.servlet.RequestDispatcher) Test(org.junit.jupiter.api.Test)

Example 89 with HttpServletResponse

use of jakarta.servlet.http.HttpServletResponse in project spring-framework by spring-projects.

the class ServletWebRequest method checkNotModified.

@Override
public boolean checkNotModified(@Nullable String etag, long lastModifiedTimestamp) {
    HttpServletResponse response = getResponse();
    if (this.notModified || (response != null && HttpStatus.OK.value() != response.getStatus())) {
        return this.notModified;
    }
    if (validateIfUnmodifiedSince(lastModifiedTimestamp)) {
        if (this.notModified && response != null) {
            response.setStatus(HttpStatus.PRECONDITION_FAILED.value());
        }
        return this.notModified;
    }
    boolean validated = validateIfNoneMatch(etag);
    if (!validated) {
        validateIfModifiedSince(lastModifiedTimestamp);
    }
    // Update response
    if (response != null) {
        boolean isHttpGetOrHead = SAFE_METHODS.contains(getRequest().getMethod());
        if (this.notModified) {
            response.setStatus(isHttpGetOrHead ? HttpStatus.NOT_MODIFIED.value() : HttpStatus.PRECONDITION_FAILED.value());
        }
        if (isHttpGetOrHead) {
            if (lastModifiedTimestamp > 0 && parseDateValue(response.getHeader(HttpHeaders.LAST_MODIFIED)) == -1) {
                response.setDateHeader(HttpHeaders.LAST_MODIFIED, lastModifiedTimestamp);
            }
            if (StringUtils.hasLength(etag) && response.getHeader(HttpHeaders.ETAG) == null) {
                response.setHeader(HttpHeaders.ETAG, padEtagIfNecessary(etag));
            }
        }
    }
    return this.notModified;
}
Also used : HttpServletResponse(jakarta.servlet.http.HttpServletResponse)

Example 90 with HttpServletResponse

use of jakarta.servlet.http.HttpServletResponse in project spring-framework by spring-projects.

the class JettyRequestUpgradeStrategy method upgrade.

@Override
public Mono<Void> upgrade(ServerWebExchange exchange, WebSocketHandler handler, @Nullable String subProtocol, Supplier<HandshakeInfo> handshakeInfoFactory) {
    ServerHttpRequest request = exchange.getRequest();
    ServerHttpResponse response = exchange.getResponse();
    HttpServletRequest servletRequest = ServerHttpRequestDecorator.getNativeRequest(request);
    HttpServletResponse servletResponse = ServerHttpResponseDecorator.getNativeResponse(response);
    ServletContext servletContext = servletRequest.getServletContext();
    HandshakeInfo handshakeInfo = handshakeInfoFactory.get();
    DataBufferFactory factory = response.bufferFactory();
    // Trigger WebFlux preCommit actions before upgrade
    return exchange.getResponse().setComplete().then(Mono.deferContextual(contextView -> {
        JettyWebSocketHandlerAdapter adapter = new JettyWebSocketHandlerAdapter(ContextWebSocketHandler.decorate(handler, contextView), session -> new JettyWebSocketSession(session, handshakeInfo, factory));
        JettyWebSocketCreator webSocketCreator = (upgradeRequest, upgradeResponse) -> {
            if (subProtocol != null) {
                upgradeResponse.setAcceptedSubProtocol(subProtocol);
            }
            return adapter;
        };
        JettyWebSocketServerContainer container = JettyWebSocketServerContainer.getContainer(servletContext);
        try {
            container.upgrade(webSocketCreator, servletRequest, servletResponse);
        } catch (Exception ex) {
            return Mono.error(ex);
        }
        return Mono.empty();
    }));
}
Also used : JettyWebSocketHandlerAdapter(org.springframework.web.reactive.socket.adapter.JettyWebSocketHandlerAdapter) HttpServletRequest(jakarta.servlet.http.HttpServletRequest) ServerHttpResponse(org.springframework.http.server.reactive.ServerHttpResponse) HandshakeInfo(org.springframework.web.reactive.socket.HandshakeInfo) RequestUpgradeStrategy(org.springframework.web.reactive.socket.server.RequestUpgradeStrategy) Mono(reactor.core.publisher.Mono) Supplier(java.util.function.Supplier) ServerWebExchange(org.springframework.web.server.ServerWebExchange) JettyWebSocketCreator(org.eclipse.jetty.websocket.server.JettyWebSocketCreator) JettyWebSocketServerContainer(org.eclipse.jetty.websocket.server.JettyWebSocketServerContainer) DataBufferFactory(org.springframework.core.io.buffer.DataBufferFactory) ServerHttpRequestDecorator(org.springframework.http.server.reactive.ServerHttpRequestDecorator) ServerHttpResponseDecorator(org.springframework.http.server.reactive.ServerHttpResponseDecorator) Nullable(org.springframework.lang.Nullable) WebSocketHandler(org.springframework.web.reactive.socket.WebSocketHandler) ContextWebSocketHandler(org.springframework.web.reactive.socket.adapter.ContextWebSocketHandler) ServletContext(jakarta.servlet.ServletContext) HttpServletResponse(jakarta.servlet.http.HttpServletResponse) ServerHttpRequest(org.springframework.http.server.reactive.ServerHttpRequest) JettyWebSocketSession(org.springframework.web.reactive.socket.adapter.JettyWebSocketSession) ServerHttpRequest(org.springframework.http.server.reactive.ServerHttpRequest) JettyWebSocketSession(org.springframework.web.reactive.socket.adapter.JettyWebSocketSession) HttpServletResponse(jakarta.servlet.http.HttpServletResponse) JettyWebSocketCreator(org.eclipse.jetty.websocket.server.JettyWebSocketCreator) ServerHttpResponse(org.springframework.http.server.reactive.ServerHttpResponse) JettyWebSocketHandlerAdapter(org.springframework.web.reactive.socket.adapter.JettyWebSocketHandlerAdapter) HttpServletRequest(jakarta.servlet.http.HttpServletRequest) JettyWebSocketServerContainer(org.eclipse.jetty.websocket.server.JettyWebSocketServerContainer) ServletContext(jakarta.servlet.ServletContext) DataBufferFactory(org.springframework.core.io.buffer.DataBufferFactory) HandshakeInfo(org.springframework.web.reactive.socket.HandshakeInfo)

Aggregations

HttpServletResponse (jakarta.servlet.http.HttpServletResponse)118 HttpServletRequest (jakarta.servlet.http.HttpServletRequest)76 Test (org.junit.jupiter.api.Test)47 MockHttpServletResponse (org.springframework.web.testfixture.servlet.MockHttpServletResponse)34 MockHttpServletRequest (org.springframework.web.testfixture.servlet.MockHttpServletRequest)31 FilterChain (jakarta.servlet.FilterChain)22 Assertions.assertThat (org.assertj.core.api.Assertions.assertThat)18 MockHttpServletRequest (org.springframework.mock.web.MockHttpServletRequest)16 MockHttpServletResponse (org.springframework.mock.web.MockHttpServletResponse)15 ServletException (jakarta.servlet.ServletException)14 StandardCharsets (java.nio.charset.StandardCharsets)14 HttpServlet (jakarta.servlet.http.HttpServlet)13 IOException (java.io.IOException)12 HashMap (java.util.HashMap)12 TomcatBaseTest (org.apache.catalina.startup.TomcatBaseTest)10 Test (org.junit.Test)10 Authentication (org.springframework.security.core.Authentication)10 FileCopyUtils (org.springframework.util.FileCopyUtils)9 BeforeEach (org.junit.jupiter.api.BeforeEach)8 Collections (java.util.Collections)7