public void testReadChunkedData() throws MongoException, IOException {

    byte[] data1 = "first chunk".getBytes();
    byte[] sha1 = DigestUtils.sha(data1);
    byte[] data2 = " second chunk".getBytes();
    byte[] sha2 = DigestUtils.sha(data2);
    byte[] data = "first chunk second chunk".getBytes();
    byte[] sha = DigestUtils.sha(data);

    prepareMockData("test.v7files.content", new BasicBSONObject("_id", sha1).append("in", data1));
    prepareMockData("test.v7files.content", new BasicBSONObject("_id", sha2).append("in", data2));
    prepareMockData(
        "test.v7files.content",
        new BasicBSONObject("_id", sha)
            .append("store", "cat")
            .append(
                "base",
                Arrays.asList(
                    new BasicBSONObject("sha", sha1).append("length", data1.length),
                    new BasicBSONObject("sha", sha2).append("length", data2.length))));

    Mongo mongo = getMongo();
    ContentStorage storage =
        new MongoContentStorage(mongo.getDB("test").getCollection("v7files.content"));

    Content check = storage.getContent(sha);

    assertEquals(new String(data), IOUtils.toString(check.getInputStream()));
    assertEquals(data.length, check.getLength());
    mongo.close();
  }
  public void testRoundtrip() throws MongoException, IOException {

    Mongo mongo = getMongo();
    ContentStorage storage =
        new MongoContentStorage(mongo.getDB("test").getCollection("v7files.content"));

    byte[] data = "abcdefghijklmnopqrstuvwxyz".getBytes();

    ContentPointer pointer = storage.storeContent(new ByteArrayInputStream(data));
    Content check = storage.getContent(pointer);

    assertEquals(new String(data), IOUtils.toString(check.getInputStream()));
    assertEquals(data.length, check.getLength());
    mongo.close();
  }
  public void testReadCompressedData() throws MongoException, IOException {

    byte[] data = "some data we are going to store compressed with gzip".getBytes();
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    GZIPOutputStream gzip = new GZIPOutputStream(baos);
    gzip.write(data);
    gzip.close();
    byte[] compressed = baos.toByteArray();
    byte[] sha = DigestUtils.sha(data);

    prepareMockData(
        "test.v7files.content",
        new BasicBSONObject("_id", sha).append("store", "gz").append("zin", compressed));

    Mongo mongo = getMongo();
    ContentStorage storage =
        new MongoContentStorage(mongo.getDB("test").getCollection("v7files.content"));

    Content check = storage.getContent(sha);

    assertEquals(new String(data), IOUtils.toString(check.getInputStream()));
    assertEquals(data.length, check.getLength());
    mongo.close();
  }