### Question:
JargonZipServiceImpl extends AbstractJargonService implements JargonZipService { @Override public BundleStreamWrapper obtainBundleAsInputStreamWithAdditionalMetadataGivenPaths( final List<String> irodsAbsolutePaths) throws ZipServiceException { log.info("obtainBundleAsInputStreamWithAdditionalMetadataGivenPaths()"); FileIOOperations fileIOOperations; try { fileIOOperations = new FileIOOperationsAOImpl(getIrodsAccessObjectFactory().getIrodsSession(), getIrodsAccount()); IRODSFile bundleFile = obtainBundleAsIrodsFileGivenPaths(irodsAbsolutePaths); BundleClosingInputStream inputStream = new BundleClosingInputStream(bundleFile, fileIOOperations); return new BundleStreamWrapper(inputStream, bundleFile.length(), bundleFile.getName()); } catch (JargonException | FileNotFoundException e) { log.error("JargonException getting input stream", e); throw new ZipServiceException("Jargon exception getting input stream", e); } } JargonZipServiceImpl();  JargonZipServiceImpl(final ZipServiceConfiguration zipServiceConfiguration,
			final IRODSAccessObjectFactory irodsAccessObjectFactory, final IRODSAccount irodsAccount); @Override ZipServiceConfiguration getZipServiceConfiguration(); @Override void setZipServiceConfiguration(final ZipServiceConfiguration zipServiceConfiguration); @Override BundleStreamWrapper obtainBundleAsInputStreamWithAdditionalMetadataGivenPaths(
			final List<String> irodsAbsolutePaths); @Override InputStream obtainBundleAsInputStreamGivenPaths(final List<String> irodsAbsolutePaths); @Override IRODSFile obtainBundleAsIrodsFileGivenPaths(final List<String> irodsAbsolutePaths); @Override long computeBundleSizeInBytes(final List<String> irodsAbsolutePaths); static final Logger log; }### Answer:
@Test public void testObtainBundleAsInputStreamWithAdditionalMetadataGivenPaths() throws Exception { String rootCollection = "testObtainBundleAsInputStreamGivenPaths"; String localCollectionAbsolutePath = scratchFileUtils .createAndReturnAbsoluteScratchPath(IRODS_TEST_SUBDIR_PATH + '/' + rootCollection); String irodsCollectionRootAbsolutePath = testingPropertiesHelper .buildIRODSCollectionAbsolutePathFromTestProperties(testingProperties, IRODS_TEST_SUBDIR_PATH); FileGenerator.generateManyFilesAndCollectionsInParentCollectionByAbsolutePath(localCollectionAbsolutePath, "testPutCollectionWithTwoFiles", 1, 2, 2, "testFile", ".txt", 3, 2, 20, 200); IRODSAccount irodsAccount = testingPropertiesHelper.buildIRODSAccountFromTestProperties(testingProperties); IRODSFileFactory irodsFileFactory = irodsFileSystem.getIRODSFileFactory(irodsAccount); IRODSFile destFile = irodsFileFactory.instanceIRODSFile(irodsCollectionRootAbsolutePath); DataTransferOperations dataTransferOperationsAO = irodsFileSystem.getIRODSAccessObjectFactory() .getDataTransferOperations(irodsAccount); File localFile = new File(localCollectionAbsolutePath); dataTransferOperationsAO.putOperation(localFile, destFile, null, null); ZipServiceConfiguration zipServiceConfiguration = new ZipServiceConfiguration(); JargonZipService jargonZipService = new JargonZipServiceImpl(zipServiceConfiguration, irodsFileSystem.getIRODSAccessObjectFactory(), irodsAccount); List<String> paths = new ArrayList<String>(); paths.add(irodsCollectionRootAbsolutePath + "/" + rootCollection); BundleStreamWrapper wrapper = jargonZipService.obtainBundleAsInputStreamWithAdditionalMetadataGivenPaths(paths); Assert.assertNotNull("did not return bundle", wrapper); Assert.assertNotNull("no input stream", wrapper.getInputStream()); Assert.assertFalse("length incorrect", wrapper.getLength() == 0); Assert.assertFalse("missing name", wrapper.getBundleFileName().isEmpty()); }