@@ -31,11 +31,12 @@ import io.mockk.spyk
31
31
import io.mockk.verify
32
32
import org.assertj.core.api.Assertions.assertThat
33
33
import org.junit.jupiter.api.Test
34
+ import org.junit.jupiter.api.assertAll
34
35
import org.slf4j.Logger
35
36
import org.slf4j.event.Level
36
37
import org.slf4j.spi.NOPLoggingEventBuilder
37
38
import org.springframework.security.access.AccessDeniedException
38
- import java.lang.IllegalStateException
39
+ import java.lang.reflect.InvocationTargetException
39
40
import java.util.concurrent.CompletionException
40
41
41
42
class DefaultDataFetcherExceptionHandlerTest {
@@ -245,4 +246,23 @@ class DefaultDataFetcherExceptionHandlerTest {
245
246
verify { loggerMock.atLevel(Level .ERROR ) }
246
247
confirmVerified(loggerMock)
247
248
}
249
+
250
+ @Test
251
+ fun `unwraps the invocation target exception` () {
252
+ val invocation = InvocationTargetException (IllegalStateException (" I'm illegal!" ), " Target invocation happened" )
253
+
254
+ val params =
255
+ DataFetcherExceptionHandlerParameters
256
+ .newExceptionParameters()
257
+ .exception(invocation)
258
+ .dataFetchingEnvironment(environment)
259
+ .build()
260
+
261
+ val result = DefaultDataFetcherExceptionHandler ().handleException(params).get()
262
+
263
+ assertAll(
264
+ { assertThat(result.errors.size).isEqualTo(1 ) },
265
+ { assertThat(result.errors[0 ].message).containsSubsequence(" java.lang.IllegalStateException: I'm illegal!" ) },
266
+ )
267
+ }
248
268
}
0 commit comments