Consider DataFetcherExceptionResolver in GraphQTest
Prior to this commit, `@GraphQlTest` slice tests would only consider JsonComponent, RuntimeWiringConfigurer, Converter and GenericConverter beans. But DataFetcherExceptionResolver, Instrumentation and GraphQlSourceBuilderCustomizer are used in setting up the GraphQL source. This commit ensures that the `GraphQlTypeExcludeFilter` considers those bean types. Closes gh-30078
This commit is contained in:
committed by
Brian Clozel
parent
087e853c5d
commit
4388910435
@@ -17,17 +17,35 @@
|
||||
package org.springframework.boot.test.autoconfigure.graphql;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
import com.fasterxml.jackson.databind.module.SimpleModule;
|
||||
import graphql.ExecutionResult;
|
||||
import graphql.GraphQLError;
|
||||
import graphql.execution.instrumentation.ExecutionStrategyInstrumentationContext;
|
||||
import graphql.execution.instrumentation.Instrumentation;
|
||||
import graphql.execution.instrumentation.InstrumentationContext;
|
||||
import graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters;
|
||||
import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters;
|
||||
import graphql.execution.instrumentation.parameters.InstrumentationExecutionStrategyParameters;
|
||||
import graphql.execution.instrumentation.parameters.InstrumentationFieldFetchParameters;
|
||||
import graphql.execution.instrumentation.parameters.InstrumentationFieldParameters;
|
||||
import graphql.execution.instrumentation.parameters.InstrumentationValidationParameters;
|
||||
import graphql.language.Document;
|
||||
import graphql.schema.DataFetchingEnvironment;
|
||||
import graphql.schema.idl.RuntimeWiring;
|
||||
import graphql.validation.ValidationError;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import reactor.core.publisher.Mono;
|
||||
|
||||
import org.springframework.boot.autoconfigure.graphql.GraphQlSourceBuilderCustomizer;
|
||||
import org.springframework.context.annotation.ComponentScan;
|
||||
import org.springframework.context.annotation.FilterType;
|
||||
import org.springframework.core.type.classreading.MetadataReader;
|
||||
import org.springframework.core.type.classreading.MetadataReaderFactory;
|
||||
import org.springframework.core.type.classreading.SimpleMetadataReaderFactory;
|
||||
import org.springframework.graphql.execution.DataFetcherExceptionResolver;
|
||||
import org.springframework.graphql.execution.GraphQlSource.Builder;
|
||||
import org.springframework.graphql.execution.RuntimeWiringConfigurer;
|
||||
import org.springframework.graphql.web.WebInput;
|
||||
import org.springframework.graphql.web.WebInterceptor;
|
||||
@@ -58,6 +76,9 @@ class GraphQlTypeExcludeFilterTests {
|
||||
assertThat(excludes(filter, ExampleRepository.class)).isTrue();
|
||||
assertThat(excludes(filter, ExampleWebInterceptor.class)).isTrue();
|
||||
assertThat(excludes(filter, ExampleModule.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleDataFetcherExceptionResolver.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleInstrumentation.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleGraphQlSourceBuilderCustomizer.class)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -70,6 +91,9 @@ class GraphQlTypeExcludeFilterTests {
|
||||
assertThat(excludes(filter, ExampleRepository.class)).isTrue();
|
||||
assertThat(excludes(filter, ExampleWebInterceptor.class)).isTrue();
|
||||
assertThat(excludes(filter, ExampleModule.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleDataFetcherExceptionResolver.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleInstrumentation.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleGraphQlSourceBuilderCustomizer.class)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -82,6 +106,9 @@ class GraphQlTypeExcludeFilterTests {
|
||||
assertThat(excludes(filter, ExampleRepository.class)).isTrue();
|
||||
assertThat(excludes(filter, ExampleWebInterceptor.class)).isTrue();
|
||||
assertThat(excludes(filter, ExampleModule.class)).isTrue();
|
||||
assertThat(excludes(filter, ExampleDataFetcherExceptionResolver.class)).isTrue();
|
||||
assertThat(excludes(filter, ExampleInstrumentation.class)).isTrue();
|
||||
assertThat(excludes(filter, ExampleGraphQlSourceBuilderCustomizer.class)).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -94,6 +121,9 @@ class GraphQlTypeExcludeFilterTests {
|
||||
assertThat(excludes(filter, ExampleRepository.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleWebInterceptor.class)).isTrue();
|
||||
assertThat(excludes(filter, ExampleModule.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleDataFetcherExceptionResolver.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleInstrumentation.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleGraphQlSourceBuilderCustomizer.class)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -106,6 +136,9 @@ class GraphQlTypeExcludeFilterTests {
|
||||
assertThat(excludes(filter, ExampleRepository.class)).isTrue();
|
||||
assertThat(excludes(filter, ExampleWebInterceptor.class)).isTrue();
|
||||
assertThat(excludes(filter, ExampleModule.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleDataFetcherExceptionResolver.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleInstrumentation.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleGraphQlSourceBuilderCustomizer.class)).isFalse();
|
||||
}
|
||||
|
||||
private boolean excludes(GraphQlTypeExcludeFilter filter, Class<?> type) throws IOException {
|
||||
@@ -181,4 +214,64 @@ class GraphQlTypeExcludeFilterTests {
|
||||
|
||||
}
|
||||
|
||||
static class ExampleDataFetcherExceptionResolver implements DataFetcherExceptionResolver {
|
||||
|
||||
@Override
|
||||
public Mono<List<GraphQLError>> resolveException(Throwable exception, DataFetchingEnvironment environment) {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static class ExampleInstrumentation implements Instrumentation {
|
||||
|
||||
@Override
|
||||
public InstrumentationContext<ExecutionResult> beginExecution(InstrumentationExecutionParameters parameters) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public InstrumentationContext<Document> beginParse(InstrumentationExecutionParameters parameters) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public InstrumentationContext<List<ValidationError>> beginValidation(
|
||||
InstrumentationValidationParameters parameters) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public InstrumentationContext<ExecutionResult> beginExecuteOperation(
|
||||
InstrumentationExecuteOperationParameters parameters) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExecutionStrategyInstrumentationContext beginExecutionStrategy(
|
||||
InstrumentationExecutionStrategyParameters parameters) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public InstrumentationContext<ExecutionResult> beginField(InstrumentationFieldParameters parameters) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public InstrumentationContext<Object> beginFieldFetch(InstrumentationFieldFetchParameters parameters) {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static class ExampleGraphQlSourceBuilderCustomizer implements GraphQlSourceBuilderCustomizer {
|
||||
|
||||
@Override
|
||||
public void customize(Builder builder) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user