protected static void assertQueryPromiseFailedWithCodes(
     Promise<QueryResponse, ResourceException> promise,
     int resourceErrorCode,
     int entitlementErrorCode) {
   try {
     promise.getOrThrowUninterruptibly();
     fail("Should throw ResourceException");
   } catch (ResourceException e) {
     Assertions.assertThat(e.getCode()).isEqualTo(resourceErrorCode);
     Assertions.assertThat(e.getCause()).isInstanceOf(EntitlementException.class);
     Assertions.assertThat(((EntitlementException) e.getCause()).getErrorCode())
         .isEqualTo(entitlementErrorCode);
   }
 }
  @Test
  public void getShouldFailWhenResourceExceptionThrown() throws ResourceException {

    // Given
    final String uri = "URI";
    final Map<String, String> queryParameters = new HashMap<String, String>();
    final Map<String, String> headers = new HashMap<String, String>();
    final org.restlet.resource.ResourceException exception =
        new org.restlet.resource.ResourceException(500, "EXCEPTION_MESSAGE", "DESCRIPTION", "URI");

    doThrow(exception).when(resource).get(JSONObject.class);

    // When
    try {
      restClient.get(uri, queryParameters, headers);
    } catch (ResourceException e) {
      // Then
      assertEquals(e.getCode(), 500);
      assertEquals(e.getMessage(), "EXCEPTION_MESSAGE");
      verify(resource, never()).addQueryParameter(anyString(), anyString());
      verify(requestHeaders, never()).set(anyString(), anyString());
      verify(resource, never()).getContext();
    }
  }