From e81dffcb93e0f7036f8a50b0db3a38f3480de704 Mon Sep 17 00:00:00 2001 From: Kiran Godishala <53332225+kirangodishala@users.noreply.github.com> Date: Wed, 12 Feb 2025 22:27:34 +0530 Subject: [PATCH] refactor(retrofit2): add more details to the SpinnakerConversionException's message (#1226) * refactor(test): flip the arguments of assertions for readability * feat(retrofit2): add more details to the SpinnakerConversionException's message --- ...rorHandlingExecutorCallAdapterFactory.java | 2 +- .../SpinnakerRetrofit2ErrorHandleTest.java | 5 ++++- .../retrofit/Retrofit2ServiceFactoryTest.java | 19 +++++++++++-------- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/kork-retrofit/src/main/java/com/netflix/spinnaker/kork/retrofit/ErrorHandlingExecutorCallAdapterFactory.java b/kork-retrofit/src/main/java/com/netflix/spinnaker/kork/retrofit/ErrorHandlingExecutorCallAdapterFactory.java index ec3aec12a..d912ae711 100644 --- a/kork-retrofit/src/main/java/com/netflix/spinnaker/kork/retrofit/ErrorHandlingExecutorCallAdapterFactory.java +++ b/kork-retrofit/src/main/java/com/netflix/spinnaker/kork/retrofit/ErrorHandlingExecutorCallAdapterFactory.java @@ -153,7 +153,7 @@ public Response execute() { } } catch (JsonProcessingException jpe) { throw new SpinnakerConversionException( - "Failed to process response body", jpe, delegate.request()); + "Failed to process response body: " + jpe.getMessage(), jpe, delegate.request()); } catch (IOException e) { throw new SpinnakerNetworkException(e, delegate.request()); } catch (Exception e) { diff --git a/kork-retrofit/src/test/java/com/netflix/spinnaker/kork/retrofit/exceptions/SpinnakerRetrofit2ErrorHandleTest.java b/kork-retrofit/src/test/java/com/netflix/spinnaker/kork/retrofit/exceptions/SpinnakerRetrofit2ErrorHandleTest.java index bc294dc48..8463c7926 100644 --- a/kork-retrofit/src/test/java/com/netflix/spinnaker/kork/retrofit/exceptions/SpinnakerRetrofit2ErrorHandleTest.java +++ b/kork-retrofit/src/test/java/com/netflix/spinnaker/kork/retrofit/exceptions/SpinnakerRetrofit2ErrorHandleTest.java @@ -213,7 +213,10 @@ void testSpinnakerConversionException() { () -> retrofit2Service.getRetrofit2().execute(), SpinnakerConversionException.class); assertThat(spinnakerConversionException.getRetryable()).isNotNull(); assertThat(spinnakerConversionException.getRetryable()).isFalse(); - assertThat(spinnakerConversionException).hasMessage("Failed to process response body"); + assertThat(spinnakerConversionException) + .hasMessage( + "Failed to process response body: Cannot deserialize value of type `java.lang.String` from Object value (token `JsonToken.START_OBJECT`)\n" + + " at [Source: (okhttp3.ResponseBody$BomAwareReader); line: 1, column: 1]"); assertThat(spinnakerConversionException.getUrl()) .isEqualTo(mockWebServer.url("/retrofit2").toString()); } diff --git a/kork-retrofit2/src/test/java/com/netflix/spinnaker/kork/retrofit/Retrofit2ServiceFactoryTest.java b/kork-retrofit2/src/test/java/com/netflix/spinnaker/kork/retrofit/Retrofit2ServiceFactoryTest.java index bdf5c0337..7916e5c47 100644 --- a/kork-retrofit2/src/test/java/com/netflix/spinnaker/kork/retrofit/Retrofit2ServiceFactoryTest.java +++ b/kork-retrofit2/src/test/java/com/netflix/spinnaker/kork/retrofit/Retrofit2ServiceFactoryTest.java @@ -102,7 +102,7 @@ void testRetrofit2Client() { serviceClientProvider.getService(Retrofit2TestService.class, serviceEndpoint); Map response = Retrofit2SyncCall.execute(retrofit2TestService.getSomething()); - assertEquals(response.get("message"), "success"); + assertEquals("success", response.get("message")); } @Test @@ -120,9 +120,9 @@ void testRetrofit2ClientWithResponse() { serviceClientProvider.getService(Retrofit2TestService.class, serviceEndpoint); Response> response = Retrofit2SyncCall.executeCall(retrofit2TestService.getSomething()); - assertEquals(response.code(), 200); - assertEquals(response.headers().get("Content-Type"), "application/json"); - assertEquals(response.body().get("message"), "success"); + assertEquals(200, response.code()); + assertEquals("application/json", response.headers().get("Content-Type")); + assertEquals("success", response.body().get("message")); } @Test @@ -175,10 +175,10 @@ void testRetrofit2Client_withHttpException() { assertThrows( SpinnakerHttpException.class, () -> Retrofit2SyncCall.executeCall(retrofit2TestService.getSomething())); - assertEquals(exception.getResponseCode(), 400); + assertEquals(400, exception.getResponseCode()); assertEquals( - exception.getMessage(), - "Status: 400, Method: GET, URL: http://localhost:" + port + "/test, Message: error"); + "Status: 400, Method: GET, URL: http://localhost:" + port + "/test, Message: error", + exception.getMessage()); } @Test @@ -200,7 +200,10 @@ void testRetrofit2Client_withConversionException() { assertThrows( SpinnakerConversionException.class, () -> Retrofit2SyncCall.executeCall(retrofit2TestService.getSomething())); - assertEquals(exception.getMessage(), "Failed to process response body"); + assertEquals( + "Failed to process response body: Unexpected end-of-input: was expecting closing quote for a string value\n" + + " at [Source: (okhttp3.ResponseBody$BomAwareReader); line: 1, column: 29]", + exception.getMessage()); } @Configuration