HttpStatusServerAccessDeniedHandler use injected HttpStatus

Fixes: gh-5078
This commit is contained in:
Rob Winch 2018-03-07 12:28:45 -06:00
parent ca93b34f56
commit 9f23212e43
2 changed files with 13 additions and 2 deletions

View File

@ -46,7 +46,7 @@ public class HttpStatusServerAccessDeniedHandler implements ServerAccessDeniedHa
public Mono<Void> handle(ServerWebExchange exchange, AccessDeniedException e) {
return Mono.defer(() -> Mono.just(exchange.getResponse()))
.flatMap(response -> {
response.setStatusCode(HttpStatus.FORBIDDEN);
response.setStatusCode(this.httpStatus);
response.getHeaders().setContentType(MediaType.TEXT_PLAIN);
DataBufferFactory dataBufferFactory = response.bufferFactory();
DataBuffer buffer = dataBufferFactory.wrap(e.getMessage().getBytes(

View File

@ -38,7 +38,7 @@ import static org.mockito.Mockito.verifyZeroInteractions;
public class HttpStatusServerAccessDeniedHandlerTests {
@Mock
private ServerWebExchange exchange;
private final HttpStatus httpStatus = HttpStatus.FORBIDDEN;
private HttpStatus httpStatus = HttpStatus.FORBIDDEN;
private HttpStatusServerAccessDeniedHandler handler = new HttpStatusServerAccessDeniedHandler(this.httpStatus);
private AccessDeniedException exception = new AccessDeniedException("Forbidden");
@ -63,4 +63,15 @@ public class HttpStatusServerAccessDeniedHandlerTests {
assertThat(this.exchange.getResponse().getStatusCode()).isEqualTo(this.httpStatus);
}
@Test
public void commenceWhenCustomStatusSubscribeThenStatusSet() {
this.httpStatus = HttpStatus.NOT_FOUND;
this.handler = new HttpStatusServerAccessDeniedHandler(this.httpStatus);
this.exchange = MockServerWebExchange.from(MockServerHttpRequest.get("/").build());
this.handler.handle(this.exchange, this.exception).block();
assertThat(this.exchange.getResponse().getStatusCode()).isEqualTo(this.httpStatus);
}
}