use of org.eclipse.virgo.util.parser.manifest.RecoveringManifestParser in project winery by eclipse.
the class CsarExporterTest method testHashesForEachFile.
@Test
public void testHashesForEachFile() throws Exception {
Map<String, Object> exportConfiguration = new HashMap<>();
exportConfiguration.put(INCLUDE_HASHES.name(), null);
try (InputStream inputStream = this.createOutputAndInputStream(// quick fix - should work if eclipse/winery#305 is merged
"7c8d8c7057403a07fde90dec1f44f0190ae65ae2", new ServiceTemplateId("http://plain.winery.opentosca.org/servicetemplates", "ServiceTemplateWithAllReqCapVariants", false), exportConfiguration);
ZipInputStream zis = new ZipInputStream(inputStream)) {
ZipEntry entry;
List<CsarContentProperties> elementsList = new ArrayList<>();
ManifestContents manifestContents = null;
while ((entry = zis.getNextEntry()) != null) {
CsarContentProperties fileProperties = new CsarContentProperties(entry.getName());
elementsList.add(fileProperties);
byte[] array = IOUtils.toByteArray(zis);
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(array);
fileProperties.setFileHash(HashingUtil.getChecksum(byteArrayInputStream, TOSCAMetaFileAttributes.HASH));
if ("TOSCA-Metadata/TOSCA.meta".equals(fileProperties.getPathInsideCsar())) {
String s = new String(array, StandardCharsets.UTF_8);
manifestContents = new RecoveringManifestParser().parse(s);
}
}
assertNotNull(manifestContents);
for (CsarContentProperties fileProperties : elementsList) {
Map<String, String> attributes = manifestContents.getAttributesForSection(fileProperties.getPathInsideCsar());
if (!"TOSCA-Metadata/TOSCA.meta".equals(fileProperties.getPathInsideCsar())) {
// ensure each file has a hash
assertTrue(attributes.containsKey(TOSCAMetaFileAttributes.HASH));
// ensure that the hashes match
assertEquals(fileProperties.getFileHash(), attributes.get(TOSCAMetaFileAttributes.HASH));
}
}
// ensures that every file in the archive has a hash in the manifest
assertEquals(elementsList.size() - 1, manifestContents.getSectionNames().size());
}
}
Aggregations