@Test
  public void downloadDroplet() {
    this.applicationId
        .then(this::uploadAndStartApplication)
        .flatMap(
            applicationId ->
                this.cloudFoundryClient
                    .applicationsV2()
                    .downloadDroplet(
                        DownloadApplicationDropletRequest.builder()
                            .applicationId(applicationId)
                            .build()))
        .as(Stream::from)
        .reduceWith(ByteArrayOutputStream::new, ApplicationsTest::collectIntoByteArrayInputStream)
        .map(
            bytes -> {
              boolean staticFile = false;
              boolean indexFile = false;

              try {
                TarArchiveInputStream tis =
                    new TarArchiveInputStream(
                        new GZIPInputStream(new ByteArrayInputStream(bytes.toByteArray())));
                for (TarArchiveEntry entry = tis.getNextTarEntry();
                    entry != null;
                    entry = tis.getNextTarEntry()) {
                  if (entry.getName().contains("Staticfile")) {
                    staticFile = true;
                  }
                  if (entry.getName().contains("index.html")) {
                    indexFile = true;
                  }
                }
              } catch (IOException e) {
                throw new RuntimeException(e);
              }
              return staticFile && indexFile;
            })
        .subscribe(testSubscriber().assertEquals(true));
  }