From 882da05bb8b52d2946a3be971dea2987dc0939b5 Mon Sep 17 00:00:00 2001 From: Emmanuel Date: Tue, 29 Oct 2024 08:59:52 +0000 Subject: [PATCH 01/11] feat: use sims name when exporting --- .../operations/documentations/DocumentationExport.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/fr/insee/rmes/bauhaus_services/operations/documentations/DocumentationExport.java b/src/main/java/fr/insee/rmes/bauhaus_services/operations/documentations/DocumentationExport.java index 8260b6057..a3fa19589 100644 --- a/src/main/java/fr/insee/rmes/bauhaus_services/operations/documentations/DocumentationExport.java +++ b/src/main/java/fr/insee/rmes/bauhaus_services/operations/documentations/DocumentationExport.java @@ -96,11 +96,13 @@ public ResponseEntity exportAsResponse(String id, Map xmlContent.put(Constants.PARAMETERS_FILE, parametersXML); Exporter exporter; + JSONObject sims = this.documentationsUtils.getDocumentationByIdSims(id); + if (documents) { - JSONObject sims = this.documentationsUtils.getDocumentationByIdSims(id); exporter = (xml, xsl, xmlPattern, zip, documentation) -> exportAsZip(sims, xml, xsl, xmlPattern, zip, documentation ); } else{ - exporter = (xml, xsl, xmlPattern, zip, documentation) -> exportUtils.exportAsODT(id, xml, xsl, xmlPattern, zip, documentation ); + String fileName = sims.getString("labelLg1"); + exporter = (xml, xsl, xmlPattern, zip, documentation) -> exportUtils.exportAsODT(fileName, xml, xsl, xmlPattern, zip, documentation ); } return export(exporter, xmlContent, patternAndZip); } From 85612df9ea48cdc6f334df48510e7136c524839f Mon Sep 17 00:00:00 2001 From: Emmanuel Date: Tue, 29 Oct 2024 17:30:45 +0000 Subject: [PATCH 02/11] fix: solve unit test --- .../operations/documentations/DocumentationExportTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/java/fr/insee/rmes/bauhaus_services/operations/documentations/DocumentationExportTest.java b/src/test/java/fr/insee/rmes/bauhaus_services/operations/documentations/DocumentationExportTest.java index 1cf3a705a..c3e1f10ee 100644 --- a/src/test/java/fr/insee/rmes/bauhaus_services/operations/documentations/DocumentationExportTest.java +++ b/src/test/java/fr/insee/rmes/bauhaus_services/operations/documentations/DocumentationExportTest.java @@ -111,6 +111,7 @@ public void testExportMetadataReport_Success_WithoutDocuments_Label() throws Rm Resource resource = new ByteArrayResource("Mocked Document Content".getBytes()); + when(documentationsUtils.getDocumentationByIdSims(id)).thenReturn(new JSONObject().put("labelLg1", "labelLg1")); when(parentUtils.getDocumentationTargetTypeAndId(id)).thenReturn(new String[]{targetType, "someId"}); when(documentationsUtils.getFullSimsForXml(id)).thenReturn(new Documentation()); when(exportUtils.exportAsODT(any(), any(), any(), any(), any(), any())).thenReturn(ResponseEntity.ok().body(resource)); From 12ff54d681dca880ff1db76aca6545292a1872e6 Mon Sep 17 00:00:00 2001 From: Emmanuel Date: Tue, 29 Oct 2024 19:29:56 +0000 Subject: [PATCH 03/11] fix: solve sonar issue --- .../operations/documentations/DocumentationExport.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/fr/insee/rmes/bauhaus_services/operations/documentations/DocumentationExport.java b/src/main/java/fr/insee/rmes/bauhaus_services/operations/documentations/DocumentationExport.java index a3fa19589..8aadebabe 100644 --- a/src/main/java/fr/insee/rmes/bauhaus_services/operations/documentations/DocumentationExport.java +++ b/src/main/java/fr/insee/rmes/bauhaus_services/operations/documentations/DocumentationExport.java @@ -101,7 +101,7 @@ public ResponseEntity exportAsResponse(String id, Map if (documents) { exporter = (xml, xsl, xmlPattern, zip, documentation) -> exportAsZip(sims, xml, xsl, xmlPattern, zip, documentation ); } else{ - String fileName = sims.getString("labelLg1"); + String fileName = sims.getString(Constants.LABEL_LG1); exporter = (xml, xsl, xmlPattern, zip, documentation) -> exportUtils.exportAsODT(fileName, xml, xsl, xmlPattern, zip, documentation ); } return export(exporter, xmlContent, patternAndZip); @@ -110,7 +110,7 @@ public ResponseEntity exportAsResponse(String id, Map public ResponseEntity exportAsZip(JSONObject sims, Map xmlContent, String xslFile, String xmlPattern, String zip, String objectType) throws RmesException { String simsId = sims.getString("id"); logger.debug("Begin to download the SIMS {} with its documents", simsId); - String fileName = sims.getString("labelLg1"); + String fileName = sims.getString(Constants.LABEL_LG1); try { @@ -141,7 +141,7 @@ public ResponseEntity exportAsZip(JSONObject sims, Map FilesUtils.zipDirectory(simsDirectory.toFile()); logger.debug("Zip created for the SIMS {}", simsId); - HttpHeaders responseHeaders = HttpUtils.generateHttpHeaders(sims.getString("labelLg1"), FilesUtils.ZIP_EXTENSION, this.maxLength); + HttpHeaders responseHeaders = HttpUtils.generateHttpHeaders(sims.getString(Constants.LABEL_LG1), FilesUtils.ZIP_EXTENSION, this.maxLength); responseHeaders.set("X-Missing-Documents", String.join(",", missingDocuments)); Resource resource = new UrlResource(Paths.get(simsDirectory.toString(), simsDirectory.getFileName() + FilesUtils.ZIP_EXTENSION).toUri()); return ResponseEntity.ok() From fa3a4b28aaa1160619bdac850a60b6acb71b3e10 Mon Sep 17 00:00:00 2001 From: Emmanuel Date: Wed, 30 Oct 2024 10:24:08 +0000 Subject: [PATCH 04/11] fix: remove ascii char in the zip archive --- .../documentations/DocumentationExport.java | 4 +-- .../java/fr/insee/rmes/utils/FilesUtils.java | 34 ++++--------------- .../fr/insee/rmes/utils/FileUtilsTest.java | 18 +--------- 3 files changed, 10 insertions(+), 46 deletions(-) diff --git a/src/main/java/fr/insee/rmes/bauhaus_services/operations/documentations/DocumentationExport.java b/src/main/java/fr/insee/rmes/bauhaus_services/operations/documentations/DocumentationExport.java index 8aadebabe..fcf3ee697 100644 --- a/src/main/java/fr/insee/rmes/bauhaus_services/operations/documentations/DocumentationExport.java +++ b/src/main/java/fr/insee/rmes/bauhaus_services/operations/documentations/DocumentationExport.java @@ -110,7 +110,7 @@ public ResponseEntity exportAsResponse(String id, Map public ResponseEntity exportAsZip(JSONObject sims, Map xmlContent, String xslFile, String xmlPattern, String zip, String objectType) throws RmesException { String simsId = sims.getString("id"); logger.debug("Begin to download the SIMS {} with its documents", simsId); - String fileName = sims.getString(Constants.LABEL_LG1); + String fileName = FilesUtils.removeAsciiCharacters(sims.getString(Constants.LABEL_LG1)); try { @@ -171,7 +171,7 @@ private Set exportRubricsDocuments(JSONObject sims, Path directory) thro if(!Files.exists(documentPath)){ missingDocuments.add(document.getString("id")); } else { - String documentFileName = FilesUtils.reduceFileNameSize(UriUtils.getLastPartFromUri(url), maxLength); + String documentFileName = FilesUtils.reduceFileNameSize(FilesUtils.removeAsciiCharacters(UriUtils.getLastPartFromUri(url)), maxLength); try (InputStream inputStream = Files.newInputStream(documentPath)){ Path documentDirectory = Path.of(directory.toString(), "documents"); if (!Files.exists(documentDirectory)) { diff --git a/src/main/java/fr/insee/rmes/utils/FilesUtils.java b/src/main/java/fr/insee/rmes/utils/FilesUtils.java index f3266feb7..f775d807c 100644 --- a/src/main/java/fr/insee/rmes/utils/FilesUtils.java +++ b/src/main/java/fr/insee/rmes/utils/FilesUtils.java @@ -54,26 +54,13 @@ public static String reduceFileNameSize(String fileName, int maxLength) { return fileName.substring(0, Math.min(fileName.length(), maxLength)); } - public static File streamToFile(InputStream in, String fileName, String fileExtension) throws IOException { - final File tempFile = File.createTempFile(fileName, fileExtension); - tempFile.deleteOnExit(); - try (FileOutputStream out = new FileOutputStream(tempFile)) { - IOUtils.copy(in, out); - } - return tempFile; - } - - public static String cleanFileNameAndAddExtension(String fileName, String extension) { - fileName = fileName.toLowerCase().trim(); - fileName = StringUtils.normalizeSpace(fileName); - fileName = fileName.replace(" ", "-"); - fileName = Normalizer.normalize(fileName, Normalizer.Form.NFD).replace("[^\\p{ASCII}]", ""); - if (extension.startsWith(".")) { - fileName += extension; - } else { - fileName += "." + extension; - } - return fileName; + public static String removeAsciiCharacters(String fileName) { + return Normalizer.normalize(fileName, Normalizer.Form.NFD) + .replaceAll("œ", "oe") + .replaceAll("Œ", "OE") + .replaceAll("\\p{M}+", "") + .replaceAll("\\p{Punct}", "") + .replaceAll(":", ""); } public static void addFileToZipFolder(File fileToAdd, File zipArchive) { @@ -99,13 +86,6 @@ public static void zipDirectory(File directoryToZip) throws IOException { } } - public static String removeAsciiCharacters(String fileName) { - return Normalizer.normalize(fileName, Normalizer.Form.NFD) - .replaceAll("œ", "oe") - .replaceAll("Œ", "OE") - .replaceAll("\\p{M}+", "") - .replaceAll("\\p{Punct}", ""); - } private static void zipFile(File fileToZip, String fileName, ZipOutputStream zipOut) throws IOException { if (fileToZip.isHidden() || fileName.endsWith(".zip")) { diff --git a/src/test/java/fr/insee/rmes/utils/FileUtilsTest.java b/src/test/java/fr/insee/rmes/utils/FileUtilsTest.java index 40bcccb86..4c120e26a 100644 --- a/src/test/java/fr/insee/rmes/utils/FileUtilsTest.java +++ b/src/test/java/fr/insee/rmes/utils/FileUtilsTest.java @@ -12,7 +12,7 @@ class FileUtilsTest { @Test public void testReplaceSpecialCharacters() { // Cas de test avec des caractères spéciaux - String input = "Œil et cœur sont liés. Ça coûte très cher !"; + String input = "Œil: et cœur sont liés. Ça coûte très cher !"; String expectedOutput = "OEil et coeur sont lies Ca coute tres cher "; String actualOutput = FilesUtils.removeAsciiCharacters(input); assertEquals(expectedOutput, actualOutput); @@ -50,20 +50,4 @@ public void testGetExtension() { // Test with unknown input assertEquals(".odt", FilesUtils.getExtension("unknown/type")); } - - @ParameterizedTest - @ValueSource(strings = { "Carrières complètes ", "carrières-complètes", " Carrières complètes " }) - void givenCleanFileName_whenString_thenResponseIsClean(String name) throws RmesException { - - String cleanFileName = FilesUtils.cleanFileNameAndAddExtension(name, "odt"); - assertEquals("carrières-complètes.odt", cleanFileName); - } - - @Test - void givenCleanFileName_whenStringWithPointExtension_thenResponseIsClean() throws RmesException { - - String cleanFileName = FilesUtils.cleanFileNameAndAddExtension("test de nommage bidon ", ".odt"); - assertEquals("test-de-nommage-bidon.odt", cleanFileName); - } - } From f3d2d085f8334973d922c883d13454612d9f4b2d Mon Sep 17 00:00:00 2001 From: Emmanuel Date: Wed, 30 Oct 2024 10:25:36 +0000 Subject: [PATCH 05/11] fix: remove unused code --- src/main/java/fr/insee/rmes/utils/StringUtils.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/main/java/fr/insee/rmes/utils/StringUtils.java b/src/main/java/fr/insee/rmes/utils/StringUtils.java index 9289ff380..d760ba1c2 100644 --- a/src/main/java/fr/insee/rmes/utils/StringUtils.java +++ b/src/main/java/fr/insee/rmes/utils/StringUtils.java @@ -14,10 +14,6 @@ private StringUtils() { throw new IllegalStateException("Utility class"); } - public static boolean stringContainsItemFromList(String string, String[] list) { - return Arrays.stream(list).anyMatch(string::contains); - } - public static List stringToList(String value) { List val = new ArrayList<>(); val.add(value); From cdd8a97e941dd987b60d62714e405ddb85f430de Mon Sep 17 00:00:00 2001 From: Emmanuel Date: Fri, 22 Nov 2024 13:13:23 +0000 Subject: [PATCH 06/11] feat: remove filename generation from the HttpUtils class --- src/main/java/fr/insee/rmes/utils/HttpUtils.java | 7 +++---- src/test/java/fr/insee/rmes/utils/HttpUtilsTest.java | 5 ++--- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/main/java/fr/insee/rmes/utils/HttpUtils.java b/src/main/java/fr/insee/rmes/utils/HttpUtils.java index 71c6bdb49..1531b9fb1 100644 --- a/src/main/java/fr/insee/rmes/utils/HttpUtils.java +++ b/src/main/java/fr/insee/rmes/utils/HttpUtils.java @@ -13,13 +13,12 @@ public final class HttpUtils { private HttpUtils() { } - public static HttpHeaders generateHttpHeaders(String fileName, String extension, int maxLength) { + public static HttpHeaders generateHttpHeaders(String fileName, String extension) { MediaType contentType = FilesUtils.getMediaTypeFromExtension(extension); ContentDisposition content = ContentDisposition.builder(HttpUtils.ATTACHMENT).filename( - FilesUtils.reduceFileNameSize( - FilesUtils.removeAsciiCharacters(fileName), maxLength) + extension - ).build(); + fileName + extension) + .build(); List allowHeaders = List.of(CONTENT_DISPOSITION, "X-Missing-Documents", diff --git a/src/test/java/fr/insee/rmes/utils/HttpUtilsTest.java b/src/test/java/fr/insee/rmes/utils/HttpUtilsTest.java index e120728ca..9459231a7 100644 --- a/src/test/java/fr/insee/rmes/utils/HttpUtilsTest.java +++ b/src/test/java/fr/insee/rmes/utils/HttpUtilsTest.java @@ -14,13 +14,12 @@ public class HttpUtilsTest { @Test public void testGenerateHttpHeaders() { - String fileName = "tresœTresTresLongTestFile"; + String fileName = "tresoeTres"; String extension = ".zip"; - int maxLength = 10; String reducedFileName = "tresoeTres"; // Call the method to test - HttpHeaders headers = HttpUtils.generateHttpHeaders(fileName, extension, maxLength); + HttpHeaders headers = HttpUtils.generateHttpHeaders(fileName, extension); // Verify the results assertNotNull(headers); From f28c1e4276f40d96b23123df3ba40fd0a7a515ea Mon Sep 17 00:00:00 2001 From: Emmanuel Date: Fri, 22 Nov 2024 13:26:31 +0000 Subject: [PATCH 07/11] feat: review the entire strategy for filename --- .../java/fr/insee/rmes/utils/FilesUtils.java | 36 ++++-- .../fr/insee/rmes/utils/FileUtilsTest.java | 53 -------- .../fr/insee/rmes/utils/FilesUtilsTest.java | 114 ++++++++++++++++++ 3 files changed, 141 insertions(+), 62 deletions(-) delete mode 100644 src/test/java/fr/insee/rmes/utils/FileUtilsTest.java create mode 100644 src/test/java/fr/insee/rmes/utils/FilesUtilsTest.java diff --git a/src/main/java/fr/insee/rmes/utils/FilesUtils.java b/src/main/java/fr/insee/rmes/utils/FilesUtils.java index f775d807c..f40b31ef5 100644 --- a/src/main/java/fr/insee/rmes/utils/FilesUtils.java +++ b/src/main/java/fr/insee/rmes/utils/FilesUtils.java @@ -1,7 +1,7 @@ package fr.insee.rmes.utils; -import org.apache.commons.io.IOUtils; -import org.apache.commons.lang3.StringUtils; +import org.apache.commons.io.FilenameUtils; +import org.apache.commons.text.CaseUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.MediaType; @@ -9,7 +9,10 @@ import org.zeroturnaround.zip.ZipEntrySource; import org.zeroturnaround.zip.ZipUtil; -import java.io.*; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; import java.text.Normalizer; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; @@ -50,17 +53,32 @@ public static String getExtension(String acceptHeader) { } } - public static String reduceFileNameSize(String fileName, int maxLength) { + public static String generateFinalFileNameWithExtension(String fileName, int maxLength){ + var basename = FilenameUtils.getBaseName(fileName); + var extension = FilenameUtils.getExtension(fileName); + return generateFinalBaseName(basename, maxLength) + "." + extension; + } + + public static String generateFinalFileNameWithoutExtension(String fileName, int maxLength){ + return generateFinalBaseName(fileName, maxLength); + } + + private static String generateFinalBaseName(String baseName, int maxLength){ + return reduceFileNameSize(CaseUtils.toCamelCase(removeAsciiCharacters(baseName), false), maxLength); + } + + private static String reduceFileNameSize(String fileName, int maxLength) { return fileName.substring(0, Math.min(fileName.length(), maxLength)); } - public static String removeAsciiCharacters(String fileName) { + private static String removeAsciiCharacters(String fileName) { return Normalizer.normalize(fileName, Normalizer.Form.NFD) - .replaceAll("œ", "oe") - .replaceAll("Œ", "OE") - .replaceAll("\\p{M}+", "") + .replace("œ", "oe") + .replace("Œ", "OE") + .replaceAll("[-_]", " ") + .replaceAll("\\p{M}+", " ") .replaceAll("\\p{Punct}", "") - .replaceAll(":", ""); + .replace(":", ""); } public static void addFileToZipFolder(File fileToAdd, File zipArchive) { diff --git a/src/test/java/fr/insee/rmes/utils/FileUtilsTest.java b/src/test/java/fr/insee/rmes/utils/FileUtilsTest.java deleted file mode 100644 index 4c120e26a..000000000 --- a/src/test/java/fr/insee/rmes/utils/FileUtilsTest.java +++ /dev/null @@ -1,53 +0,0 @@ -package fr.insee.rmes.utils; - -import fr.insee.rmes.exceptions.RmesException; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.ValueSource; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -class FileUtilsTest { - - @Test - public void testReplaceSpecialCharacters() { - // Cas de test avec des caractères spéciaux - String input = "Œil: et cœur sont liés. Ça coûte très cher !"; - String expectedOutput = "OEil et coeur sont lies Ca coute tres cher "; - String actualOutput = FilesUtils.removeAsciiCharacters(input); - assertEquals(expectedOutput, actualOutput); - - // Cas de test avec une chaîne vide - input = ""; - expectedOutput = ""; - actualOutput = FilesUtils.removeAsciiCharacters(input); - assertEquals(expectedOutput, actualOutput); - - // Cas de test avec des caractères sans accents ni caractères spéciaux - input = "Simple text without accents."; - expectedOutput = "Simple text without accents"; - actualOutput = FilesUtils.removeAsciiCharacters(input); - assertEquals(expectedOutput, actualOutput); - } - - @Test - public void testGetExtension() { - // Test with null input - assertEquals(".odt", FilesUtils.getExtension(null)); - - // Test with "application/octet-stream" - assertEquals(".pdf", FilesUtils.getExtension("application/octet-stream")); - - // Test with "flatODT" - assertEquals(".fodt", FilesUtils.getExtension("flatODT")); - - // Test with "XML" - assertEquals(".xml", FilesUtils.getExtension("XML")); - - // Test with "application/vnd.oasis.opendocument.text" - assertEquals(".odt", FilesUtils.getExtension("application/vnd.oasis.opendocument.text")); - - // Test with unknown input - assertEquals(".odt", FilesUtils.getExtension("unknown/type")); - } -} diff --git a/src/test/java/fr/insee/rmes/utils/FilesUtilsTest.java b/src/test/java/fr/insee/rmes/utils/FilesUtilsTest.java new file mode 100644 index 000000000..67beb3ca7 --- /dev/null +++ b/src/test/java/fr/insee/rmes/utils/FilesUtilsTest.java @@ -0,0 +1,114 @@ +package fr.insee.rmes.utils; + +import org.junit.jupiter.api.Test; +import org.springframework.http.MediaType; + +import static org.junit.Assert.assertThrows; +import static org.junit.jupiter.api.Assertions.assertEquals; + +class FilesUtilsTest { + + @Test + void testGenerateFinalFileNameWithExtension() { + String fileName = "example_file_œ.txt"; + int maxLength = 10; + + String result = FilesUtils.generateFinalFileNameWithExtension(fileName, maxLength); + + assertEquals("exampleFil.txt", result, "Le nom de fichier généré avec extension est incorrect"); + } + + @Test + void testGenerateFinalFileNameWithExtension_LongFileName() { + String fileName = "averylongfilenameexample.txt"; + int maxLength = 15; + + String result = FilesUtils.generateFinalFileNameWithExtension(fileName, maxLength); + + assertEquals("averylongfilena.txt", result, "Le nom de fichier généré avec extension pour un long nom est incorrect"); + } + + @Test + void testGenerateFinalFileNameWithoutExtension() { + String fileName = "example_file_œ.txt"; + int maxLength = 10; + + String result = FilesUtils.generateFinalFileNameWithoutExtension(fileName, maxLength); + + assertEquals("exampleFil", result, "Le nom de fichier généré sans extension est incorrect"); + } + + @Test + void testGenerateFinalFileNameWithoutExtension_LongFileName() { + String fileName = "averylongfilenameexample"; + int maxLength = 20; + + String result = FilesUtils.generateFinalFileNameWithoutExtension(fileName, maxLength); + + assertEquals("averylongfilenameexa", result, "Le nom de fichier généré sans extension pour un long nom est incorrect"); + } + + @Test + void testGenerateFinalFileNameWithExtension_SpecialCharacters() { + String fileName = "fi!le&na:me?.txt"; + int maxLength = 10; + + String result = FilesUtils.generateFinalFileNameWithExtension(fileName, maxLength); + + assertEquals("filename.txt", result, "Le nom de fichier généré avec des caractères spéciaux est incorrect"); + } + + @Test + void testGenerateFinalFileNameWithoutExtension_SpecialCharacters() { + String fileName = "fi!le&na:me?"; + int maxLength = 10; + + String result = FilesUtils.generateFinalFileNameWithoutExtension(fileName, maxLength); + + assertEquals("filename", result, "Le nom de fichier sans extension avec des caractères spéciaux est incorrect"); + } + + @Test + void testGetMediaTypeFromExtension_validExtensions() { + // Vérifie les extensions valides + assertEquals(new MediaType("application", "vnd.oasis.opendocument.text"), + FilesUtils.getMediaTypeFromExtension(FilesUtils.ODT_EXTENSION)); + + assertEquals(new MediaType("application", "vnd.oasis.opendocument.spreadsheet"), + FilesUtils.getMediaTypeFromExtension(FilesUtils.ODS_EXTENSION)); + + assertEquals(new MediaType("application", "zip"), + FilesUtils.getMediaTypeFromExtension(FilesUtils.ZIP_EXTENSION)); + } + + @Test + void testGetMediaTypeFromExtension_invalidExtension() { + // Vérifie que les extensions invalides génèrent une exception + IllegalStateException exception = assertThrows(IllegalStateException.class, () -> { + FilesUtils.getMediaTypeFromExtension("invalid_extension"); + }); + + assertEquals("Unexpected value: invalid_extension", exception.getMessage()); + } + + @Test + public void testGetExtension() { + // Test with null input + assertEquals(".odt", FilesUtils.getExtension(null)); + + // Test with "application/octet-stream" + assertEquals(".pdf", FilesUtils.getExtension("application/octet-stream")); + + // Test with "flatODT" + assertEquals(".fodt", FilesUtils.getExtension("flatODT")); + + // Test with "XML" + assertEquals(".xml", FilesUtils.getExtension("XML")); + + // Test with "application/vnd.oasis.opendocument.text" + assertEquals(".odt", FilesUtils.getExtension("application/vnd.oasis.opendocument.text")); + + // Test with unknown input + assertEquals(".odt", FilesUtils.getExtension("unknown/type")); + } +} From e847ac70b12e6391adb5cff1eac57b25ec404ac1 Mon Sep 17 00:00:00 2001 From: Emmanuel Date: Fri, 22 Nov 2024 14:12:57 +0000 Subject: [PATCH 08/11] feat: add unit test --- .../concepts/concepts/ConceptsUtils.java | 5 +-- .../concepts/concepts/ConceptsUtilsTest.java | 32 +++++++++++++++++++ 2 files changed, 33 insertions(+), 4 deletions(-) create mode 100644 src/test/java/fr/insee/rmes/bauhaus_services/concepts/concepts/ConceptsUtilsTest.java diff --git a/src/main/java/fr/insee/rmes/bauhaus_services/concepts/concepts/ConceptsUtils.java b/src/main/java/fr/insee/rmes/bauhaus_services/concepts/concepts/ConceptsUtils.java index 31551da67..3558adf23 100644 --- a/src/main/java/fr/insee/rmes/bauhaus_services/concepts/concepts/ConceptsUtils.java +++ b/src/main/java/fr/insee/rmes/bauhaus_services/concepts/concepts/ConceptsUtils.java @@ -20,7 +20,6 @@ import fr.insee.rmes.utils.FilesUtils; import fr.insee.rmes.utils.JSONUtils; import fr.insee.rmes.webservice.ConceptsCollectionsResources; -import org.apache.commons.text.CaseUtils; import org.eclipse.rdf4j.model.IRI; import org.eclipse.rdf4j.model.Model; import org.eclipse.rdf4j.model.impl.LinkedHashModel; @@ -44,9 +43,7 @@ public class ConceptsUtils extends RdfService { private static final Logger logger = LoggerFactory.getLogger(ConceptsUtils.class); - private final ConceptsPublication conceptsPublication; - private final NoteManager noteManager; private final int maxLength; @@ -62,7 +59,7 @@ public String getConceptExportFileName(ConceptForExport concept) { private String getAbstractExportFileName(String id, String labelLg1, String labelLg2, ConceptsCollectionsResources.Language lg){ var initialFileName = getInitialFileName(labelLg1, labelLg2, lg); - return FilesUtils.reduceFileNameSize(id + "-" + FilesUtils.removeAsciiCharacters(CaseUtils.toCamelCase(initialFileName, false)), maxLength); + return FilesUtils.generateFinalFileNameWithoutExtension(id + "-" + initialFileName, maxLength); } private String getInitialFileName(String labelLg1, String labelLg2, ConceptsCollectionsResources.Language lg){ diff --git a/src/test/java/fr/insee/rmes/bauhaus_services/concepts/concepts/ConceptsUtilsTest.java b/src/test/java/fr/insee/rmes/bauhaus_services/concepts/concepts/ConceptsUtilsTest.java new file mode 100644 index 000000000..40c043935 --- /dev/null +++ b/src/test/java/fr/insee/rmes/bauhaus_services/concepts/concepts/ConceptsUtilsTest.java @@ -0,0 +1,32 @@ +package fr.insee.rmes.bauhaus_services.concepts.concepts; + +import fr.insee.rmes.model.concepts.ConceptForExport; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.junit.jupiter.MockitoExtension; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +@ExtendWith(MockitoExtension.class) +class ConceptsUtilsTest { + + @Test + void testGetConceptExportFileName() { + String conceptId = "12345"; + String prefLabelLg1 = "Lg1ConceptLabel"; + String prefLabelLg2 = "Lg2ConceptLabel"; + int maxLength = 10; + + ConceptForExport concept = new ConceptForExport(); + concept.setId(conceptId); + concept.setPrefLabelLg1(prefLabelLg1); + concept.setPrefLabelLg2(prefLabelLg2); + + ConceptsUtils service = new ConceptsUtils(null, null, maxLength); + + String result = service.getConceptExportFileName(concept); + + assertEquals("12345Lg1co", result); + + } +} \ No newline at end of file From 521f3d32315ea91b545ecdcddee756cd146718af Mon Sep 17 00:00:00 2001 From: Emmanuel Date: Fri, 22 Nov 2024 14:35:40 +0000 Subject: [PATCH 09/11] feat: add unit test --- .../concepts/ConceptsImpl.java | 10 ++--- .../concepts/ConceptsImplTest.java | 42 ++++++++++++++++++- 2 files changed, 44 insertions(+), 8 deletions(-) diff --git a/src/main/java/fr/insee/rmes/bauhaus_services/concepts/ConceptsImpl.java b/src/main/java/fr/insee/rmes/bauhaus_services/concepts/ConceptsImpl.java index 3ac86eb06..12c6b8873 100644 --- a/src/main/java/fr/insee/rmes/bauhaus_services/concepts/ConceptsImpl.java +++ b/src/main/java/fr/insee/rmes/bauhaus_services/concepts/ConceptsImpl.java @@ -23,7 +23,6 @@ import fr.insee.rmes.utils.XMLUtils; import fr.insee.rmes.webservice.ConceptsCollectionsResources; import jakarta.servlet.http.HttpServletResponse; -import org.apache.commons.text.CaseUtils; import org.json.JSONArray; import org.json.JSONObject; import org.slf4j.Logger; @@ -42,7 +41,6 @@ public class ConceptsImpl extends RdfService implements ConceptsService { private static final String THE_CONCEPT = "The concept "; - static final Logger logger = LoggerFactory.getLogger(ConceptsImpl.class); private final ConceptsUtils conceptsUtils; @@ -264,13 +262,13 @@ public void exportZipConcept(String ids, String acceptHeader, HttpServletRespons public String getFileNameForExport(CollectionForExport collection, ConceptsCollectionsResources.Language lg){ if (lg == ConceptsCollectionsResources.Language.lg2){ - return FilesUtils.reduceFileNameSize(CaseUtils.toCamelCase(collection.getPrefLabelLg2(), false) + "-" + collection.getId(), this.maxLength); + return FilesUtils.generateFinalFileNameWithoutExtension(collection.getId() + "-" + collection.getPrefLabelLg2(), this.maxLength); } - return FilesUtils.reduceFileNameSize(CaseUtils.toCamelCase(collection.getPrefLabelLg1(), false) + "-" + collection.getId(), this.maxLength); + return FilesUtils.generateFinalFileNameWithoutExtension(collection.getId() + "-" + collection.getPrefLabelLg1(), this.maxLength); } private String getFileNameForExport(ConceptForExport concept) { - return FilesUtils.reduceFileNameSize(CaseUtils.toCamelCase(concept.getPrefLabelLg1(), false) + "-" + concept.getId(), maxLength); + return FilesUtils.generateFinalFileNameWithoutExtension(concept.getId() + "-" + concept.getPrefLabelLg1(), maxLength); } private MembersLg convertConceptIntoMembers(ConceptForExport concept){ @@ -349,7 +347,7 @@ public ResponseEntity getCollectionExport(String id, String acceptHeader) thr return ResponseEntity.status(e.getStatus()).contentType(MediaType.TEXT_PLAIN).body(e.getDetails()); } Map xmlContent = convertCollectionInXml(collection); - String fileName = FilesUtils.reduceFileNameSize(CaseUtils.toCamelCase(collection.getPrefLabelLg1(), false) + "-" + collection.getId(), maxLength); + String fileName = FilesUtils.generateFinalFileNameWithoutExtension(collection.getId() + "-" + collection.getPrefLabelLg1(), maxLength); return collectionExport.exportAsResponse(fileName,xmlContent,true,true,true); } diff --git a/src/test/java/fr/insee/rmes/bauhaus_services/concepts/ConceptsImplTest.java b/src/test/java/fr/insee/rmes/bauhaus_services/concepts/ConceptsImplTest.java index abae08c47..c115a0436 100644 --- a/src/test/java/fr/insee/rmes/bauhaus_services/concepts/ConceptsImplTest.java +++ b/src/test/java/fr/insee/rmes/bauhaus_services/concepts/ConceptsImplTest.java @@ -1,13 +1,17 @@ package fr.insee.rmes.bauhaus_services.concepts; import fr.insee.rmes.Stubber; +import fr.insee.rmes.bauhaus_services.concepts.collections.CollectionExportBuilder; import fr.insee.rmes.bauhaus_services.concepts.concepts.ConceptsExportBuilder; import fr.insee.rmes.bauhaus_services.concepts.concepts.ConceptsUtils; import fr.insee.rmes.bauhaus_services.rdf_utils.RepositoryGestion; import fr.insee.rmes.config.ConfigStub; import fr.insee.rmes.exceptions.RmesException; +import fr.insee.rmes.model.concepts.CollectionForExport; +import fr.insee.rmes.model.concepts.CollectionForExportOld; import fr.insee.rmes.persistance.sparql_queries.GenericQueries; import fr.insee.rmes.utils.ExportUtils; +import fr.insee.rmes.webservice.ConceptsCollectionsResources; import org.json.JSONArray; import org.json.JSONObject; import org.junit.jupiter.api.BeforeAll; @@ -33,8 +37,10 @@ import java.util.zip.ZipInputStream; import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @ExtendWith(MockitoExtension.class) @@ -46,10 +52,41 @@ class ConceptsImplTest { @Mock RepositoryGestion repoGestion; + @Mock + CollectionExportBuilder collectionExport; + @BeforeAll static void initGenericQueries(){ GenericQueries.setConfig(new ConfigStub()); } + + @Test + void shouldExportCollection() throws RmesException { + var collection = new CollectionForExportOld(); + collection.setId("1"); + collection.setPrefLabelLg1("Lg1Collection"); + collection.setPrefLabelLg2("Lg2Collection"); + + when(collectionExport.getCollectionDataOld("1")).thenReturn(collection); + ConceptsImpl conceptsImpl = new ConceptsImpl(null, null, null, collectionExport, 10); + + conceptsImpl.getCollectionExport("1", "application/json"); + + verify(collectionExport).exportAsResponse(eq("1Lg1collec"), any(), eq(true), eq(true), eq(true)); + + } + @Test + void shouldReturnFileName(){ + CollectionForExport collection = new CollectionForExport(); + collection.setId("1"); + collection.setPrefLabelLg1("Lg1Collection"); + collection.setPrefLabelLg2("Lg2Collection"); + + ConceptsImpl conceptsImpl = new ConceptsImpl(null, null, null, null, 10); + + assertEquals("1Lg1collec", conceptsImpl.getFileNameForExport(collection, ConceptsCollectionsResources.Language.lg1)); + assertEquals("1Lg2collec", conceptsImpl.getFileNameForExport(collection, ConceptsCollectionsResources.Language.lg2)); + } @Test void exportConceptTest() throws RmesException, IOException, URISyntaxException { // GIVEN @@ -57,7 +94,7 @@ void exportConceptTest() throws RmesException, IOException, URISyntaxException { ConceptsExportBuilder conceptsExportBuilder = new ConceptsExportBuilder(conceptsUtils, new ExportUtils(200, null)); Stubber.forRdfService(conceptsExportBuilder).injectRepoGestion(repoGestion); - ConceptsImpl conceptsImpl = new ConceptsImpl(null, null, conceptsExportBuilder, null, 200); + ConceptsImpl conceptsImpl = new ConceptsImpl(null, null, conceptsExportBuilder, null, 10); // concept = conceptsExport.getConceptData(id); // conceptsUtils.getConceptById(id) => ConceptsQueries.conceptQuery, ConceptsQueries.altLabel JSONObject jsonConcept = new JSONObject(""" @@ -101,6 +138,7 @@ void exportConceptTest() throws RmesException, IOException, URISyntaxException { ResponseEntity result = (ResponseEntity) conceptsImpl.exportConcept(idConcept, MediaType.APPLICATION_OCTET_STREAM_VALUE); // THEN assertThat(result.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(result.getHeaders().getContentDisposition().getFilename()).isEqualTo("c1116accid.odt"); Diff inputsDiffs = DiffBuilder.compare(expectedXmlForOdtContent) .withTest(getOdtContent(result.getBody().getByteArray())) From 20f735fbfc230f7ff18f8a6e0f0bc42e898a8455 Mon Sep 17 00:00:00 2001 From: Emmanuel Date: Fri, 22 Nov 2024 16:24:13 +0000 Subject: [PATCH 10/11] feat: finish filename process --- .../ConceptsCollectionServiceImpl.java | 2 +- .../OperationsDocumentationsImpl.java | 6 ++++-- .../documentations/DocumentationExport.java | 18 +++++++++--------- .../java/fr/insee/rmes/utils/ExportUtils.java | 6 +++--- .../OperationsDocumentationsImplTest.java | 2 +- .../DocumentationExportTest.java | 8 ++++---- .../fr/insee/rmes/utils/ExportUtilsTest.java | 7 ------- 7 files changed, 22 insertions(+), 27 deletions(-) delete mode 100644 src/test/java/fr/insee/rmes/utils/ExportUtilsTest.java diff --git a/src/main/java/fr/insee/rmes/bauhaus_services/concepts/ConceptsCollectionServiceImpl.java b/src/main/java/fr/insee/rmes/bauhaus_services/concepts/ConceptsCollectionServiceImpl.java index 5d368bd76..6ccb4e9e5 100644 --- a/src/main/java/fr/insee/rmes/bauhaus_services/concepts/ConceptsCollectionServiceImpl.java +++ b/src/main/java/fr/insee/rmes/bauhaus_services/concepts/ConceptsCollectionServiceImpl.java @@ -167,7 +167,7 @@ public void exportZipCollection(String ids, String acceptHeader, HttpServletResp private String getFileNameForExport(CollectionForExport collection, ConceptsCollectionsResources.Language lg){ String label = (lg == ConceptsCollectionsResources.Language.lg2 && collection.getPrefLabelLg2() != null) ? collection.getPrefLabelLg2() : collection.getPrefLabelLg1(); - return FilesUtils.reduceFileNameSize(CaseUtils.toCamelCase(label, false) + "-" + collection.getId(), maxLength); + return FilesUtils.generateFinalFileNameWithoutExtension(collection.getId() + "-" + label, maxLength); } } \ No newline at end of file diff --git a/src/main/java/fr/insee/rmes/bauhaus_services/operations/OperationsDocumentationsImpl.java b/src/main/java/fr/insee/rmes/bauhaus_services/operations/OperationsDocumentationsImpl.java index 9a80b42ff..e929b9b73 100644 --- a/src/main/java/fr/insee/rmes/bauhaus_services/operations/OperationsDocumentationsImpl.java +++ b/src/main/java/fr/insee/rmes/bauhaus_services/operations/OperationsDocumentationsImpl.java @@ -36,6 +36,8 @@ public class OperationsDocumentationsImpl extends RdfService implements Operati @Value("classpath:bauhaus-sims.json") org.springframework.core.io.Resource simsDefaultValue; + @Value("${fr.insee.rmes.bauhaus.filenames.maxlength}") int maxLength; + @Autowired DocumentationsUtils documentationsUtils; @@ -147,13 +149,13 @@ public ResponseEntity exportMetadataReport(String id, boolean includeE ErrorCodes.SIMS_EXPORT_WITHOUT_LANGUAGE, "at least one language must be selected for export", "in export of sims: " + id); - return documentationsExport.exportMetadataReport(id,includeEmptyMas, lg1, lg2, document, Constants.GOAL_RMES); + return documentationsExport.exportMetadataReport(id,includeEmptyMas, lg1, lg2, document, Constants.GOAL_RMES, maxLength); } @Override public ResponseEntity exportMetadataReportForLabel(String id) throws RmesException { - return documentationsExport.exportMetadataReport(id,true, true, false, false, Constants.GOAL_COMITE_LABEL); + return documentationsExport.exportMetadataReport(id,true, true, false, false, Constants.GOAL_COMITE_LABEL, maxLength); } @Override diff --git a/src/main/java/fr/insee/rmes/bauhaus_services/operations/documentations/DocumentationExport.java b/src/main/java/fr/insee/rmes/bauhaus_services/operations/documentations/DocumentationExport.java index fcf3ee697..46eef73dd 100644 --- a/src/main/java/fr/insee/rmes/bauhaus_services/operations/documentations/DocumentationExport.java +++ b/src/main/java/fr/insee/rmes/bauhaus_services/operations/documentations/DocumentationExport.java @@ -89,7 +89,7 @@ public DocumentationExport(@Value("${fr.insee.rmes.bauhaus.filenames.maxlength}" * the export will be a .ODT file. */ public ResponseEntity exportAsResponse(String id, Map xmlContent, String targetType, boolean includeEmptyFields, boolean lg1, - boolean lg2, boolean documents, String goal) throws RmesException { + boolean lg2, boolean documents, String goal, int maxLength) throws RmesException { PatternAndZip patternAndZip = PatternAndZip.of(goal); String parametersXML = XsltUtils.buildParams(lg1, lg2, includeEmptyFields, targetType); @@ -99,18 +99,18 @@ public ResponseEntity exportAsResponse(String id, Map JSONObject sims = this.documentationsUtils.getDocumentationByIdSims(id); if (documents) { - exporter = (xml, xsl, xmlPattern, zip, documentation) -> exportAsZip(sims, xml, xsl, xmlPattern, zip, documentation ); + exporter = (xml, xsl, xmlPattern, zip, documentation) -> exportAsZip(sims, xml, xsl, xmlPattern, zip, documentation, maxLength); } else{ - String fileName = sims.getString(Constants.LABEL_LG1); + String fileName = FilesUtils.generateFinalFileNameWithoutExtension(sims.getString(Constants.LABEL_LG1), maxLength); exporter = (xml, xsl, xmlPattern, zip, documentation) -> exportUtils.exportAsODT(fileName, xml, xsl, xmlPattern, zip, documentation ); } return export(exporter, xmlContent, patternAndZip); } - public ResponseEntity exportAsZip(JSONObject sims, Map xmlContent, String xslFile, String xmlPattern, String zip, String objectType) throws RmesException { + public ResponseEntity exportAsZip(JSONObject sims, Map xmlContent, String xslFile, String xmlPattern, String zip, String objectType, int maxLength) throws RmesException { String simsId = sims.getString("id"); logger.debug("Begin to download the SIMS {} with its documents", simsId); - String fileName = FilesUtils.removeAsciiCharacters(sims.getString(Constants.LABEL_LG1)); + String fileName = FilesUtils.generateFinalFileNameWithoutExtension(sims.getString(Constants.LABEL_LG1), maxLength); try { @@ -141,7 +141,7 @@ public ResponseEntity exportAsZip(JSONObject sims, Map FilesUtils.zipDirectory(simsDirectory.toFile()); logger.debug("Zip created for the SIMS {}", simsId); - HttpHeaders responseHeaders = HttpUtils.generateHttpHeaders(sims.getString(Constants.LABEL_LG1), FilesUtils.ZIP_EXTENSION, this.maxLength); + HttpHeaders responseHeaders = HttpUtils.generateHttpHeaders(fileName, FilesUtils.ZIP_EXTENSION); responseHeaders.set("X-Missing-Documents", String.join(",", missingDocuments)); Resource resource = new UrlResource(Paths.get(simsDirectory.toString(), simsDirectory.getFileName() + FilesUtils.ZIP_EXTENSION).toUri()); return ResponseEntity.ok() @@ -171,7 +171,7 @@ private Set exportRubricsDocuments(JSONObject sims, Path directory) thro if(!Files.exists(documentPath)){ missingDocuments.add(document.getString("id")); } else { - String documentFileName = FilesUtils.reduceFileNameSize(FilesUtils.removeAsciiCharacters(UriUtils.getLastPartFromUri(url)), maxLength); + String documentFileName = FilesUtils.generateFinalFileNameWithExtension(UriUtils.getLastPartFromUri(url), maxLength); try (InputStream inputStream = Files.newInputStream(documentPath)){ Path documentDirectory = Path.of(directory.toString(), "documents"); if (!Files.exists(documentDirectory)) { @@ -205,12 +205,12 @@ public ResponseEntity exportXmlFiles(Map xmlContent, Str } - public ResponseEntity exportMetadataReport(String id, Boolean includeEmptyMas, Boolean lg1, Boolean lg2, Boolean document, String goal) throws RmesException { + public ResponseEntity exportMetadataReport(String id, Boolean includeEmptyMas, Boolean lg1, Boolean lg2, Boolean document, String goal, int maxLength) throws RmesException { Map xmlContent = new HashMap<>(); String targetType = getXmlContent(id, xmlContent); String msdXML = buildShellSims(); xmlContent.put("msdFile", msdXML); - return exportAsResponse(id, xmlContent,targetType,includeEmptyMas,lg1,lg2, document, goal); + return exportAsResponse(id, xmlContent,targetType,includeEmptyMas,lg1,lg2, document, goal, maxLength); } diff --git a/src/main/java/fr/insee/rmes/utils/ExportUtils.java b/src/main/java/fr/insee/rmes/utils/ExportUtils.java index 8a373c6b8..511808879 100644 --- a/src/main/java/fr/insee/rmes/utils/ExportUtils.java +++ b/src/main/java/fr/insee/rmes/utils/ExportUtils.java @@ -51,7 +51,7 @@ public ResponseEntity exportAsODS(String fileName, Map private ResponseEntity exportAsFileByExtension(String fileName, Map xmlContent, String xslFile, String xmlPattern, String zip, String objectType, String extension) throws RmesException { logger.debug("Begin To export {} as Response", objectType); - fileName = fileName.replace(extension, ""); + fileName = FilesUtils.generateFinalFileNameWithoutExtension(fileName.replace(extension, ""), maxLength); InputStream input = exportAsInputStream(fileName, xmlContent, xslFile, xmlPattern, zip, objectType, extension); if (input == null) @@ -67,7 +67,7 @@ private ResponseEntity exportAsFileByExtension(String fileName, Map exportFilesAsResponse(Map xmlConte logger.debug("End To export temp files as Response"); - HttpHeaders responseHeaders = HttpUtils.generateHttpHeaders("xmlFiles", FilesUtils.ZIP_EXTENSION, this.maxLength); + HttpHeaders responseHeaders = HttpUtils.generateHttpHeaders("xmlFiles", FilesUtils.ZIP_EXTENSION); Resource resource = new UrlResource(Paths.get(tempDir.toString(), tempDir.getFileName() + FilesUtils.ZIP_EXTENSION).toUri()); return ResponseEntity.ok() .headers(responseHeaders) diff --git a/src/test/java/fr/insee/rmes/bauhaus_services/operations/OperationsDocumentationsImplTest.java b/src/test/java/fr/insee/rmes/bauhaus_services/operations/OperationsDocumentationsImplTest.java index 463edc227..07627adef 100644 --- a/src/test/java/fr/insee/rmes/bauhaus_services/operations/OperationsDocumentationsImplTest.java +++ b/src/test/java/fr/insee/rmes/bauhaus_services/operations/OperationsDocumentationsImplTest.java @@ -42,7 +42,7 @@ public void testExportMetadataReport_Success() throws RmesException { boolean document = true; Resource resource = new ByteArrayResource("Mocked Document Content".getBytes()); - when(documentationsExport.exportMetadataReport(id, includeEmptyMas, lg1, lg2, document, Constants.GOAL_RMES)) + when(documentationsExport.exportMetadataReport(id, includeEmptyMas, lg1, lg2, document, Constants.GOAL_RMES, 0)) .thenReturn(ResponseEntity.ok().body(resource)); ResponseEntity response = metadataReportService.exportMetadataReport(id, includeEmptyMas, lg1, lg2, document); diff --git a/src/test/java/fr/insee/rmes/bauhaus_services/operations/documentations/DocumentationExportTest.java b/src/test/java/fr/insee/rmes/bauhaus_services/operations/documentations/DocumentationExportTest.java index c3e1f10ee..5c6456e73 100644 --- a/src/test/java/fr/insee/rmes/bauhaus_services/operations/documentations/DocumentationExportTest.java +++ b/src/test/java/fr/insee/rmes/bauhaus_services/operations/documentations/DocumentationExportTest.java @@ -85,11 +85,11 @@ public void testExportAsZip_success() throws Exception { InputStream inputStreamMock = mock(InputStream.class); - when(exportUtils.exportAsInputStream(eq("simsLabel"), eq(xmlContent), eq(xslFile), eq(xmlPattern), eq(zip), eq(objectType), eq(FilesUtils.ODT_EXTENSION))) + when(exportUtils.exportAsInputStream(eq("simslabel"), eq(xmlContent), eq(xslFile), eq(xmlPattern), eq(zip), eq(objectType), eq(FilesUtils.ODT_EXTENSION))) .thenReturn(inputStreamMock); when(inputStreamMock.readAllBytes()).thenReturn(new byte[0]); - ResponseEntity response = documentationExport.exportAsZip(sims, xmlContent, xslFile, xmlPattern, zip, objectType); + ResponseEntity response = documentationExport.exportAsZip(sims, xmlContent, xslFile, xmlPattern, zip, objectType, 50); assertEquals(HttpStatus.OK, response.getStatusCode()); assertNotNull(response.getBody()); @@ -116,7 +116,7 @@ public void testExportMetadataReport_Success_WithoutDocuments_Label() throws Rm when(documentationsUtils.getFullSimsForXml(id)).thenReturn(new Documentation()); when(exportUtils.exportAsODT(any(), any(), any(), any(), any(), any())).thenReturn(ResponseEntity.ok().body(resource)); - ResponseEntity response = documentationExport.exportMetadataReport(id, includeEmptyMas, lg1, lg2, document, goal); + ResponseEntity response = documentationExport.exportMetadataReport(id, includeEmptyMas, lg1, lg2, document, goal, 100); assertEquals(ResponseEntity.ok().body(resource), response); } @@ -135,7 +135,7 @@ public void testExportMetadataReport_Failure_UnknownGoal() throws RmesException when(documentationsUtils.getFullSimsForXml(id)).thenReturn(new Documentation()); RmesBadRequestException exception = assertThrows(RmesBadRequestException.class, () -> { - documentationExport.exportMetadataReport(id, includeEmptyMas, lg1, lg2, document, goal); + documentationExport.exportMetadataReport(id, includeEmptyMas, lg1, lg2, document, goal, 100); }); assertEquals("{\"message\":\"The goal is unknown\"}", exception.getDetails()); diff --git a/src/test/java/fr/insee/rmes/utils/ExportUtilsTest.java b/src/test/java/fr/insee/rmes/utils/ExportUtilsTest.java deleted file mode 100644 index 10bce820a..000000000 --- a/src/test/java/fr/insee/rmes/utils/ExportUtilsTest.java +++ /dev/null @@ -1,7 +0,0 @@ -package fr.insee.rmes.utils; - -import static org.junit.jupiter.api.Assertions.*; - -class ExportUtilsTest { - -} \ No newline at end of file From b3b02870b8323cd0b800486dc35e56c05399f10a Mon Sep 17 00:00:00 2001 From: Emmanuel Date: Thu, 28 Nov 2024 17:59:06 +0000 Subject: [PATCH 11/11] review --- .../bauhaus_services/concepts/concepts/ConceptsUtilsTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/java/fr/insee/rmes/bauhaus_services/concepts/concepts/ConceptsUtilsTest.java b/src/test/java/fr/insee/rmes/bauhaus_services/concepts/concepts/ConceptsUtilsTest.java index 40c043935..721910b98 100644 --- a/src/test/java/fr/insee/rmes/bauhaus_services/concepts/concepts/ConceptsUtilsTest.java +++ b/src/test/java/fr/insee/rmes/bauhaus_services/concepts/concepts/ConceptsUtilsTest.java @@ -7,7 +7,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals; -@ExtendWith(MockitoExtension.class) class ConceptsUtilsTest { @Test