public void testGetStreamReturnsNewStream() throws Exception {
    String testData = "There's something quite peaceful about writing tests.";
    AttachmentId id = new AttachmentId("", "id_6");
    AttachmentStore store = makeStoreWithData(id, testData);
    AttachmentData data = store.getAttachment(id);

    InputStream is1 = data.getInputStream();
    InputStream is2 = data.getInputStream();
    InputStream is3 = null;
    try {
      assertNotSame(is1, is2);

      int firstByte = is1.read();
      assertSame(firstByte, is2.read());

      // Check that a new input stream created now still has the same first
      // byte.
      is3 = data.getInputStream();
      assertSame(firstByte, is3.read());
    } finally {
      is1.close();
      is2.close();
      if (is3 != null) {
        is3.close();
      }
    }
  }
  public void testContentLengthMatchesDataSize() throws Exception {
    String testData = "blah blah blah";
    AttachmentId id = new AttachmentId("", "id_2");
    AttachmentStore store = makeStoreWithData(id, testData);

    AttachmentData data = store.getAttachment(id);
    assertEquals(testData.length(), data.getSize());
  }
  public void testAttachmentCanWriteToOutputStream() throws Exception {
    String testData = "maybe there's some easy way to generate test strings";
    AttachmentId id = new AttachmentId("", "id_4");
    AttachmentStore store = makeStoreWithData(id, testData);
    AttachmentData data = store.getAttachment(id);

    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    InputStream io = data.getInputStream();
    try {
      AttachmentUtil.writeTo(io, stream);
      assertEquals(testData, stream.toString("UTF-8"));
    } finally {
      io.close();
    }
  }
 protected String dataToString(AttachmentData data) throws IOException {
   ByteArrayOutputStream out = new ByteArrayOutputStream();
   InputStream io = data.getInputStream();
   try {
     AttachmentUtil.writeTo(io, out);
   } finally {
     io.close();
   }
   return out.toString("UTF-8");
 }
  public void testAttachmentHasWorkingInputStream() throws Exception {
    String testData = "I suppose these strings don't actually need to be different";
    AttachmentId id = new AttachmentId("", "id_5");
    AttachmentStore store = makeStoreWithData(id, testData);
    AttachmentData data = store.getAttachment(id);

    BufferedReader reader = new BufferedReader(new InputStreamReader(data.getInputStream()));

    StringBuilder builder = new StringBuilder();
    String line;
    try {
      while ((line = reader.readLine()) != null) {
        // This little snippet will discard any "\n" characters, but it shouldn't
        // matter.
        builder.append(line);
      }
    } finally {
      reader.close();
    }

    assertEquals(testData, builder.toString());
  }