diff --git a/extensions/data-transfer/portability-data-transfer-microsoft/src/main/java/org/datatransferproject/transfer/microsoft/MicrosoftApiResponse.java b/extensions/data-transfer/portability-data-transfer-microsoft/src/main/java/org/datatransferproject/transfer/microsoft/MicrosoftApiResponse.java index 1a77ca4a7..a2c0f5904 100644 --- a/extensions/data-transfer/portability-data-transfer-microsoft/src/main/java/org/datatransferproject/transfer/microsoft/MicrosoftApiResponse.java +++ b/extensions/data-transfer/portability-data-transfer-microsoft/src/main/java/org/datatransferproject/transfer/microsoft/MicrosoftApiResponse.java @@ -218,7 +218,7 @@ public MicrosoftApiResponse returnConvertDtpException(String message) private FatalState toFatalState() { checkState(isFatal(), "cannot explain fatal state when is apparently recoverable"); - if (httpStatus() == 403 && httpMessage().contains("Access Denied")) { + if (httpStatus() == 403 && bodyContains("accessDenied")) { return FatalState.FATAL_STATE_FATAL_PERMISSION_DENIED; } // Nit: we _could_ just parse the body into json properly and make sure the JSON body "message" diff --git a/extensions/data-transfer/portability-data-transfer-microsoft/src/test/java/org/datatransferproject/transfer/microsoft/MicrosoftApiResponseTest.java b/extensions/data-transfer/portability-data-transfer-microsoft/src/test/java/org/datatransferproject/transfer/microsoft/MicrosoftApiResponseTest.java index 61e281a72..99f30ab4b 100644 --- a/extensions/data-transfer/portability-data-transfer-microsoft/src/test/java/org/datatransferproject/transfer/microsoft/MicrosoftApiResponseTest.java +++ b/extensions/data-transfer/portability-data-transfer-microsoft/src/test/java/org/datatransferproject/transfer/microsoft/MicrosoftApiResponseTest.java @@ -37,7 +37,16 @@ public void testOkay() throws IOException { @Test public void testErrorPermission() throws IOException { - Response networkResponse = fakeResponse(403, "Access Denied").build(); + Response networkResponse = fakeResponse(403, "", + "{" + + "\"error\": {" + + "\"code\":\"accessDenied\"," + + "\"message\":\"Access Denied\"," + + "\"localizedMessage\":\"アイテムが削除されているか、期限切れになっているか、またはこのアイテムへのアクセス許可がない可能性があります。詳細については、このアイテムの所有者に問い合わせてください。\"," + + "\"innerError\": {\"date\":\"2024-12-24T01:03:02\",\"request-id\":\"fake-request-id\",\"client-request-id\":\"fake-client-request-id\"}" + + "}" + + "}" + ).build(); MicrosoftApiResponse response = MicrosoftApiResponse.ofResponse(networkResponse); diff --git a/extensions/data-transfer/portability-data-transfer-microsoft/src/test/java/org/datatransferproject/transfer/microsoft/media/MicrosoftMediaImporterTest.java b/extensions/data-transfer/portability-data-transfer-microsoft/src/test/java/org/datatransferproject/transfer/microsoft/media/MicrosoftMediaImporterTest.java index 7bb786309..d005847a2 100644 --- a/extensions/data-transfer/portability-data-transfer-microsoft/src/test/java/org/datatransferproject/transfer/microsoft/media/MicrosoftMediaImporterTest.java +++ b/extensions/data-transfer/portability-data-transfer-microsoft/src/test/java/org/datatransferproject/transfer/microsoft/media/MicrosoftMediaImporterTest.java @@ -175,7 +175,16 @@ public void testImportItemPermissionDenied() throws Exception { r.url() .toString() .equals("https://www.baseurl.com/v1.0/me/drive/special/photos/children"))); - Response response = fakeErrorResponse(403, "Access Denied", "{\"id\": \"id1\"}").build(); + Response response = fakeResponse(403, "", + "{" + + "\"error\": {" + + "\"code\":\"accessDenied\"," + + "\"message\":\"Access Denied\"," + + "\"localizedMessage\":\"アイテムが削除されているか、期限切れになっているか、またはこのアイテムへのアクセス許可がない可能性があります。詳細については、このアイテムの所有者に問い合わせてください。\"," + + "\"innerError\": {\"date\":\"2024-12-24T01:03:02\",\"request-id\":\"fake-request-id\",\"client-request-id\":\"fake-client-request-id\"}" + + "}" + + "}" + ).build(); when(call.execute()).thenReturn(response); assertThrows(