Search in sources :

Example 6 with RecoveringManifestParser

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());
    }
}
Also used : RecoveringManifestParser(org.eclipse.virgo.util.parser.manifest.RecoveringManifestParser) HashMap(java.util.HashMap) ZipInputStream(java.util.zip.ZipInputStream) ByteArrayInputStream(java.io.ByteArrayInputStream) InputStream(java.io.InputStream) ZipEntry(java.util.zip.ZipEntry) ArrayList(java.util.ArrayList) ServiceTemplateId(org.eclipse.winery.model.ids.definitions.ServiceTemplateId) ManifestContents(org.eclipse.virgo.util.parser.manifest.ManifestContents) ZipInputStream(java.util.zip.ZipInputStream) ByteArrayInputStream(java.io.ByteArrayInputStream) Test(org.junit.jupiter.api.Test)

Aggregations

ManifestContents (org.eclipse.virgo.util.parser.manifest.ManifestContents)6 RecoveringManifestParser (org.eclipse.virgo.util.parser.manifest.RecoveringManifestParser)6 ArrayList (java.util.ArrayList)3 ZipEntry (java.util.zip.ZipEntry)3 ByteArrayInputStream (java.io.ByteArrayInputStream)2 InputStream (java.io.InputStream)2 HashMap (java.util.HashMap)2 ZipInputStream (java.util.zip.ZipInputStream)2 FileProvenanceElement (org.eclipse.winery.accountability.model.FileProvenanceElement)2 ServiceTemplateId (org.eclipse.winery.model.ids.definitions.ServiceTemplateId)2 Test (org.junit.jupiter.api.Test)2 FileNotFoundException (java.io.FileNotFoundException)1 FileReader (java.io.FileReader)1 IOException (java.io.IOException)1 ManifestParser (org.eclipse.virgo.util.parser.manifest.ManifestParser)1 ManifestProblem (org.eclipse.virgo.util.parser.manifest.ManifestProblem)1 ModelProvenanceElement (org.eclipse.winery.accountability.model.ModelProvenanceElement)1 TOSCAMetaFile (org.eclipse.winery.model.csar.toscametafile.TOSCAMetaFile)1 TOSCAMetaFileParser (org.eclipse.winery.model.csar.toscametafile.TOSCAMetaFileParser)1