@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)); }