Skip to content

Commit 131039e

Browse files
committed
SIGA-876 Preserve unknown mimetypes defined in manifest.xml
1 parent a160614 commit 131039e

File tree

4 files changed

+23
-2
lines changed

4 files changed

+23
-2
lines changed

siga-signature-service/src/main/java/ee/openeid/siga/service/signature/hashcode/HashcodeContainer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@
1313
import eu.europa.esig.dss.model.DSSException;
1414
import eu.europa.esig.dss.model.DigestDocument;
1515
import eu.europa.esig.dss.model.InMemoryDocument;
16-
import eu.europa.esig.dss.enumerations.MimeType;
1716
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
1817
import org.apache.commons.compress.archivers.zip.ZipFile;
1918
import org.apache.commons.compress.utils.SeekableInMemoryByteChannel;
2019
import org.apache.commons.lang3.StringUtils;
2120
import org.digidoc4j.impl.asic.manifest.AsicManifest;
2221
import org.digidoc4j.impl.asic.manifest.ManifestEntry;
2322
import org.digidoc4j.impl.asic.manifest.ManifestParser;
23+
import org.digidoc4j.utils.MimeTypeUtil;
2424

2525
import java.io.IOException;
2626
import java.io.InputStream;
@@ -236,7 +236,7 @@ private void validateFileSize(ZipArchiveEntry zipEntry) {
236236
private List<org.digidoc4j.DataFile> convertDataFiles() {
237237
return dataFiles.stream().map(d -> {
238238
DSSDocument dssDocument = new DigestDocument();
239-
dssDocument.setMimeType(d.getMimeType() != null ? MimeType.fromMimeTypeString(d.getMimeType()) : MimeTypeEnum.BINARY);
239+
dssDocument.setMimeType(d.getMimeType() != null ? MimeTypeUtil.fromMimeTypeString(d.getMimeType()) : MimeTypeEnum.BINARY);
240240
dssDocument.setName(d.getFileName());
241241
org.digidoc4j.DataFile dataFile = new org.digidoc4j.DataFile();
242242
dataFile.setDocument(dssDocument);

siga-signature-service/src/test/java/ee/openeid/siga/service/signature/hashcode/HashcodeContainerTest.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import static ee.openeid.siga.service.signature.test.RequestUtil.SIGNED_HASHCODE;
3333
import static ee.openeid.siga.service.signature.test.RequestUtil.SIGNED_HASHCODE_SEVERAL_DATAFILES;
3434
import static ee.openeid.siga.service.signature.test.RequestUtil.SIGNED_HASHCODE_SEVERAL_DATAFILES_RANDOM_ORDER;
35+
import static ee.openeid.siga.service.signature.test.RequestUtil.UNKNOWN_MIMETYPES_DEFINED_IN_MANIFEST;
3536
import static org.junit.jupiter.api.Assertions.assertEquals;
3637
import static org.junit.jupiter.api.Assertions.assertFalse;
3738
import static org.junit.jupiter.api.Assertions.assertNull;
@@ -231,6 +232,25 @@ void manifestHasDifferentFileNameOrder() throws URISyntaxException, IOException
231232
assertEquals("test2.txt", hashcodeContainer.getDataFiles().get(2).getFileName());
232233
}
233234

235+
@Test
236+
void shouldUseExistingMimetypeFromManifestForUnknownMimetype() throws URISyntaxException, IOException {
237+
HashcodeContainer hashcodeContainer = new HashcodeContainer();
238+
byte[] container = TestUtil.getFile(UNKNOWN_MIMETYPES_DEFINED_IN_MANIFEST);
239+
hashcodeContainer.open(container);
240+
HashcodeContainer newContainer;
241+
try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
242+
hashcodeContainer.save(outputStream);
243+
newContainer = new HashcodeContainer();
244+
newContainer.open(outputStream.toByteArray());
245+
}
246+
247+
assertEquals(2, newContainer.getDataFiles().size());
248+
assertEquals("text_file.txt", newContainer.getDataFiles().get(0).getFileName());
249+
assertEquals("text/plain", newContainer.getDataFiles().get(0).getMimeType());
250+
assertEquals("word_file.docx", newContainer.getDataFiles().get(1).getFileName());
251+
assertEquals("application/vnd.openxmlformats-officedocument.wordprocessingml.document", newContainer.getDataFiles().get(1).getMimeType());
252+
}
253+
234254
@Test
235255
void couldNotAddDataFileWhenSignatureExists() throws URISyntaxException, IOException {
236256
HashcodeContainer hashcodeContainer = new HashcodeContainer();

siga-signature-service/src/test/java/ee/openeid/siga/service/signature/test/RequestUtil.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ public class RequestUtil {
5858
public static final String DIFFERENT_SHA256_ORDER = "different_sha256_filename_order.asice";
5959
public static final String DIFFERENT_SHA512_ORDER = "different_sha512_filename_order.asice";
6060
public static final String DIFFERENT_MANIFEST_ORDER = "different_manifest_filename_order.asice";
61+
public static final String UNKNOWN_MIMETYPES_DEFINED_IN_MANIFEST = "hashcode_container_unsigned_with_txt_and_docx.asice";
6162
public static final String DOCUMENT_NUMBER = "PNOEE-123456789-QWER";
6263
public static final String CONTAINER_ID = "23423423-234234234-324234-4234";
6364
public static final String CONTAINER_SESSION_ID = "v1_user_name_23423423-234234234-324234-4234";
Binary file not shown.

0 commit comments

Comments
 (0)