diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/graphql/tester/GraphQlTesterAutoConfiguration.java b/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/graphql/tester/GraphQlTesterAutoConfiguration.java index 1532f8f9427..196491299a1 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/graphql/tester/GraphQlTesterAutoConfiguration.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/graphql/tester/GraphQlTesterAutoConfiguration.java @@ -16,17 +16,23 @@ package org.springframework.boot.test.autoconfigure.graphql.tester; +import com.fasterxml.jackson.databind.ObjectMapper; import graphql.GraphQL; +import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.graphql.GraphQlAutoConfiguration; +import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.graphql.ExecutionGraphQlService; import org.springframework.graphql.test.tester.ExecutionGraphQlServiceTester; import org.springframework.graphql.test.tester.GraphQlTester; +import org.springframework.http.MediaType; +import org.springframework.http.codec.json.Jackson2JsonDecoder; +import org.springframework.http.codec.json.Jackson2JsonEncoder; /** * Auto-configuration for {@link GraphQlTester}. @@ -34,15 +40,23 @@ import org.springframework.graphql.test.tester.GraphQlTester; * @author Brian Clozel * @since 2.7.0 */ -@AutoConfiguration(after = GraphQlAutoConfiguration.class) +@AutoConfiguration(after = { JacksonAutoConfiguration.class, GraphQlAutoConfiguration.class }) @ConditionalOnClass({ GraphQL.class, GraphQlTester.class }) public class GraphQlTesterAutoConfiguration { @Bean @ConditionalOnBean(ExecutionGraphQlService.class) @ConditionalOnMissingBean - public ExecutionGraphQlServiceTester graphQlTester(ExecutionGraphQlService graphQlService) { - return ExecutionGraphQlServiceTester.create(graphQlService); + public ExecutionGraphQlServiceTester graphQlTester(ExecutionGraphQlService graphQlService, + ObjectProvider objectMapperProvider) { + ExecutionGraphQlServiceTester.Builder builder = ExecutionGraphQlServiceTester.builder(graphQlService); + objectMapperProvider.ifAvailable(objectMapper -> { + final MediaType[] mediaTypes = new MediaType[] { MediaType.APPLICATION_JSON, + MediaType.APPLICATION_GRAPHQL }; + builder.encoder(new Jackson2JsonEncoder(objectMapper, mediaTypes)); + builder.decoder(new Jackson2JsonDecoder(objectMapper, mediaTypes)); + }); + return builder.build(); } } diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/graphql/tester/GraphQlTesterAutoConfigurationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/graphql/tester/GraphQlTesterAutoConfigurationTests.java index e33ee5e5807..97085390092 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/graphql/tester/GraphQlTesterAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/graphql/tester/GraphQlTesterAutoConfigurationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2021 the original author or authors. + * Copyright 2012-2022 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. @@ -19,6 +19,7 @@ package org.springframework.boot.test.autoconfigure.graphql.tester; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; +import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -35,8 +36,8 @@ import static org.mockito.Mockito.mock; */ class GraphQlTesterAutoConfigurationTests { - private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() - .withConfiguration(AutoConfigurations.of(GraphQlTesterAutoConfiguration.class)); + private final ApplicationContextRunner contextRunner = new ApplicationContextRunner().withConfiguration( + AutoConfigurations.of(JacksonAutoConfiguration.class, GraphQlTesterAutoConfiguration.class)); @Test void shouldNotContributeTesterIfGraphQlServiceNotPresent() {