@Test(expected = ContentEndpointException.class)
  public void readContentEndpointExceptionExceptionExpected()
      throws ContentEndpointException, ContentFrameworkException, MimeTypeResolutionException {
    ContentFramework framework = mock(ContentFramework.class);
    when(framework.read(isA(ReadRequest.class)))
        .thenThrow(
            new ContentEndpointException("Content Item not found.", Response.Status.NOT_FOUND));

    ContentEndpoint endpoint = new ContentEndpoint(framework, getMockMimeTypeMapper());
    endpoint.read(anyString());
  }
  protected void executeReadTest(String content, String fileName, Long size, String mimeType)
      throws IOException, MimeTypeParseException, ContentFrameworkException,
          MimeTypeResolutionException {

    ContentFramework framework = mock(ContentFramework.class);
    ReadResponse readResponse = mock(ReadResponse.class);

    ContentItem contentItem =
        getMockGoodContentItem(content, fileName, "contentIdValue", size, mimeType);
    when(readResponse.getContentItem()).thenReturn(contentItem);

    when(framework.read(isA(ReadRequest.class))).thenReturn(readResponse);

    ContentEndpoint endpoint = new ContentEndpoint(framework, getMockMimeTypeMapper());
    Response response = endpoint.read(anyString());

    // Assertions for all valid headers returned
    assertThat(response.getStatus(), equalTo(200));
    assertThat(IOUtils.toString((InputStream) response.getEntity()), equalTo(content));

    if (fileName != null) {
      assertThat(
          (String) response.getMetadata().getFirst(CONTENT_DISPOSITION),
          equalToIgnoringWhiteSpace("inline; filename=" + fileName));
    } else {
      assertThat(response.getMetadata().getFirst(CONTENT_DISPOSITION), is(nullValue()));
    }

    if (mimeType != null) {
      assertThat(
          (String) response.getMetadata().getFirst(HttpHeaders.CONTENT_TYPE), equalTo(mimeType));
    } else {
      assertThat(
          (String) response.getMetadata().getFirst(HttpHeaders.CONTENT_TYPE),
          equalTo(MediaType.APPLICATION_OCTET_STREAM));
    }

    if (size != null) {
      assertThat(
          (String) response.getMetadata().getFirst(HttpHeaders.CONTENT_LENGTH),
          equalTo(String.valueOf(size)));
    } else {
      assertThat(response.getMetadata().getFirst(HttpHeaders.CONTENT_LENGTH), is(nullValue()));
    }
  }