|
|
|
@ -1,5 +1,5 @@
|
|
|
|
|
/*
|
|
|
|
|
* Copyright 2012-2020 the original author or authors.
|
|
|
|
|
* Copyright 2012-2021 the original author or authors.
|
|
|
|
|
*
|
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
|
* you may not use this file except in compliance with the License.
|
|
|
|
@ -17,6 +17,7 @@
|
|
|
|
|
package org.springframework.boot.autoconfigure.web.reactive.error;
|
|
|
|
|
|
|
|
|
|
import java.util.Collections;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
@ -28,9 +29,12 @@ import org.springframework.boot.web.reactive.context.AnnotationConfigReactiveWeb
|
|
|
|
|
import org.springframework.boot.web.reactive.error.ErrorAttributes;
|
|
|
|
|
import org.springframework.context.ApplicationContext;
|
|
|
|
|
import org.springframework.http.MediaType;
|
|
|
|
|
import org.springframework.http.codec.HttpMessageReader;
|
|
|
|
|
import org.springframework.http.codec.ServerCodecConfigurer;
|
|
|
|
|
import org.springframework.mock.http.server.reactive.MockServerHttpRequest;
|
|
|
|
|
import org.springframework.mock.web.server.MockServerWebExchange;
|
|
|
|
|
import org.springframework.test.util.ReflectionTestUtils;
|
|
|
|
|
import org.springframework.web.reactive.function.server.ServerRequest;
|
|
|
|
|
import org.springframework.web.reactive.result.view.View;
|
|
|
|
|
import org.springframework.web.reactive.result.view.ViewResolver;
|
|
|
|
|
import org.springframework.web.server.ServerWebExchange;
|
|
|
|
@ -42,7 +46,7 @@ import static org.mockito.BDDMockito.given;
|
|
|
|
|
import static org.mockito.Mockito.mock;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Tests for {@link AbstractErrorWebExceptionHandler}.
|
|
|
|
|
* Tests for {@link DefaultErrorWebExceptionHandler}.
|
|
|
|
|
*
|
|
|
|
|
* @author Phillip Webb
|
|
|
|
|
* @author Madhura Bhave
|
|
|
|
@ -62,10 +66,10 @@ class DefaultErrorWebExceptionHandlerTests {
|
|
|
|
|
@Test
|
|
|
|
|
void nonStandardErrorStatusCodeShouldNotFail() {
|
|
|
|
|
ErrorAttributes errorAttributes = mock(ErrorAttributes.class);
|
|
|
|
|
given(errorAttributes.getErrorAttributes(any(), any())).willReturn(getErrorAttributes());
|
|
|
|
|
Resources resourceProperties = new Resources();
|
|
|
|
|
ErrorProperties errorProperties = new ErrorProperties();
|
|
|
|
|
ApplicationContext context = new AnnotationConfigReactiveWebApplicationContext();
|
|
|
|
|
given(errorAttributes.getErrorAttributes(any(), any())).willReturn(getErrorAttributes());
|
|
|
|
|
DefaultErrorWebExceptionHandler exceptionHandler = new DefaultErrorWebExceptionHandler(errorAttributes,
|
|
|
|
|
resourceProperties, errorProperties, context);
|
|
|
|
|
setupViewResolver(exceptionHandler);
|
|
|
|
@ -86,4 +90,20 @@ class DefaultErrorWebExceptionHandlerTests {
|
|
|
|
|
exceptionHandler.setViewResolvers(Collections.singletonList(viewResolver));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
void acceptsTextHtmlShouldNotConsiderMediaAllEvenWithQuality() {
|
|
|
|
|
ErrorAttributes errorAttributes = mock(ErrorAttributes.class);
|
|
|
|
|
Resources resourceProperties = new Resources();
|
|
|
|
|
ErrorProperties errorProperties = new ErrorProperties();
|
|
|
|
|
ApplicationContext context = new AnnotationConfigReactiveWebApplicationContext();
|
|
|
|
|
DefaultErrorWebExceptionHandler exceptionHandler = new DefaultErrorWebExceptionHandler(errorAttributes,
|
|
|
|
|
resourceProperties, errorProperties, context);
|
|
|
|
|
MediaType allWithQuality = new MediaType(MediaType.ALL.getType(), MediaType.ALL.getSubtype(), 0.9);
|
|
|
|
|
MockServerWebExchange exchange = MockServerWebExchange
|
|
|
|
|
.from(MockServerHttpRequest.get("/test").accept(allWithQuality));
|
|
|
|
|
List<HttpMessageReader<?>> readers = ServerCodecConfigurer.create().getReaders();
|
|
|
|
|
ServerRequest request = ServerRequest.create(exchange, readers);
|
|
|
|
|
assertThat(exceptionHandler.acceptsTextHtml().test(request)).isFalse();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|