@Test
  public void testCreateArchive() throws Exception {
    try {
      client.deleteArchive(archiveUser);
    } catch (Exception ex) {
    }

    int before = client.listArchives().size();

    client.createArchive(archiveUser, "password", 10);

    assertTrue(archiveCounter.apply(before + 1));
  }
  @Test
  public void testAllowedArguments() throws Exception {
    ArchiveAllowedArguments args = client.getArchiveAllowedArguments();
    assertNotNull(args);
    assertNotNull(args.getArchiveSizes());
    assertTrue(args.getArchiveSizes().size() > 0);

    for (int size : args.getArchiveSizes()) {
      assertTrue(size > 0);
    }
  }
  @Test(dependsOnMethods = "testCreateArchive")
  public void testResizeArchive() throws Exception {
    client.resizeArchive(archiveUser, 20);

    assertTrue(
        new RetryablePredicate<String>(
                new Predicate<String>() {
                  public boolean apply(String value) {
                    return client.getArchive(archiveUser) != null
                        && value.equals(client.getArchive(archiveUser).getTotalSize());
                  }
                },
                30,
                1,
                TimeUnit.SECONDS)
            .apply("20 GB"));
  }
 @Test(dependsOnMethods = "testCreateArchive")
 public void testArchiveDetails() throws Exception {
   Archive details = client.getArchive(archiveUser);
   assertEquals(details.getUsername(), archiveUser);
 }
 @Test(dependsOnMethods = "testCreateArchive")
 public void testChangePassword() throws Exception {
   client.changeArchivePassword(archiveUser, "newpassword");
   // TODO assert something useful!
 }