diff --git a/psc-toggle-manager/pom.xml b/psc-toggle-manager/pom.xml index a6df9ff..c67e36e 100644 --- a/psc-toggle-manager/pom.xml +++ b/psc-toggle-manager/pom.xml @@ -39,7 +39,7 @@ fr.ans.psc psc-api-client - 2.2.22 + 2.3.2 fr.ans.psc diff --git a/psc-toggle-manager/src/main/java/fr/ans/psc/toggle/controller/ToggleController.java b/psc-toggle-manager/src/main/java/fr/ans/psc/toggle/controller/ToggleController.java index f8b42ad..de9cd49 100644 --- a/psc-toggle-manager/src/main/java/fr/ans/psc/toggle/controller/ToggleController.java +++ b/psc-toggle-manager/src/main/java/fr/ans/psc/toggle/controller/ToggleController.java @@ -43,14 +43,20 @@ public ToggleController(ToggleService toggleService) { @PostMapping(value = "/toggle", produces = MediaType.APPLICATION_JSON_VALUE) @ResponseBody public ResponseEntity toggleRegistrySource(@RequestParam("from") String from, @RequestParam("to") String to, @RequestParam("toggleFile") MultipartFile mpFile) { - + final PsIdType sourceIdType = decodeIdType(from, "from"); final PsIdType destinationIdType = decodeIdType(to, "to"); toggleService.toggle(mpFile, sourceIdType, destinationIdType); return new ResponseEntity<>(HttpStatus.ACCEPTED); - + } + @PostMapping(value = "/remove", produces = MediaType.APPLICATION_JSON_VALUE) + @ResponseBody + public ResponseEntity removeFromRegistrySource(@RequestParam("from") String from, @RequestParam("to") String to, @RequestParam("toggleFile") MultipartFile mpFile) { + toggleService.removeToggle(mpFile, PsIdType.valueOf(from.toUpperCase()), PsIdType.valueOf(to.toUpperCase())); + return new ResponseEntity<>(HttpStatus.ACCEPTED); + } private PsIdType decodeIdType(String name, final String parmName) { try { diff --git a/psc-toggle-manager/src/main/java/fr/ans/psc/toggle/model/Report.java b/psc-toggle-manager/src/main/java/fr/ans/psc/toggle/model/Report.java new file mode 100644 index 0000000..2fd7b85 --- /dev/null +++ b/psc-toggle-manager/src/main/java/fr/ans/psc/toggle/model/Report.java @@ -0,0 +1,47 @@ +/* + * Copyright © 2022-2024 Agence du Numérique en Santé (ANS) (https://esante.gouv.fr) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package fr.ans.psc.toggle.model; + +import lombok.Getter; +import lombok.Setter; +import org.springframework.http.HttpStatus; + +import java.util.Map; + +@Getter +@Setter +public class Report { + protected int successful; + protected int failed; + protected int submitted; + + public void setReportCounters(Map psRefMap) { + submitted = psRefMap.size(); + successful = (int) psRefMap.values().stream().filter(psRef -> psRef.getReturnStatus() == HttpStatus.OK.value()).count(); + failed = submitted - successful; + } + + public String generateReportSummary() { + return String.format("Opérations terminées.\n\n" + + "%s soumis.\n" + + "%s en succès.\n" + + "%s en échec.\n\n" + + "Vous trouverez la liste des opérations en pièce jointe.\n\n" + + "Les erreurs possibles sont les suivantes :\n" + + "- 500 : Erreur côté serveur, veuillez vous rapprocher de l'administrateur.", + submitted, successful, failed); + } +} diff --git a/psc-toggle-manager/src/main/java/fr/ans/psc/toggle/model/ToggleReport.java b/psc-toggle-manager/src/main/java/fr/ans/psc/toggle/model/ToggleReport.java index 52739a3..0185161 100644 --- a/psc-toggle-manager/src/main/java/fr/ans/psc/toggle/model/ToggleReport.java +++ b/psc-toggle-manager/src/main/java/fr/ans/psc/toggle/model/ToggleReport.java @@ -23,13 +23,15 @@ @Getter @Setter -public class ToggleReport { +public class ToggleReport extends Report { private int alreadyToggled; - private int successful; - private int failed; - private int submitted; + public ToggleReport() { + super(); + } + + @Override public void setReportCounters(Map psRefMap) { submitted = psRefMap.size(); alreadyToggled = (int) psRefMap.values().stream().filter(psRef -> psRef.getReturnStatus() == HttpStatus.CONFLICT.value()).count(); @@ -37,6 +39,7 @@ public void setReportCounters(Map psRefMap) { failed = submitted - (alreadyToggled + successful); } + @Override public String generateReportSummary() { return String.format("Opérations de bascule terminées.\n\n" + "%s PsRefs soumis à bascule.\n" + diff --git a/psc-toggle-manager/src/main/java/fr/ans/psc/toggle/model/UntoggleReport.java b/psc-toggle-manager/src/main/java/fr/ans/psc/toggle/model/UntoggleReport.java new file mode 100644 index 0000000..5675cb1 --- /dev/null +++ b/psc-toggle-manager/src/main/java/fr/ans/psc/toggle/model/UntoggleReport.java @@ -0,0 +1,38 @@ +/* + * Copyright © 2022-2024 Agence du Numérique en Santé (ANS) (https://esante.gouv.fr) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package fr.ans.psc.toggle.model; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class UntoggleReport extends Report { + + @Override + public String generateReportSummary() { + return String.format("Opérations terminées.\n\n" + + "%s PsRefs soumis pour déréférencement.\n" + + "%s PsRefs retirés avec succès.\n" + + "%s PsRefs n'ont pas pu être retirés.\n\n" + + "Vous trouverez la liste des opérations en pièce jointe.\n\n" + + "Les erreurs possibles sont les suivantes :\n" + + "- 404 : Le PsRef proposé n'est pas lié au Ps, n'a pas pu être retiré.\n" + + "- 410 : Le Ps proposé n'est pas présent en base, le PsRef n'a pas été rétiré.\n" + + "- 500 : Erreur côté serveur, veuillez vous rapprocher de l'administrateur.", + submitted, successful, failed); + } +} diff --git a/psc-toggle-manager/src/main/java/fr/ans/psc/toggle/service/ToggleService.java b/psc-toggle-manager/src/main/java/fr/ans/psc/toggle/service/ToggleService.java index 99b9bf4..f196ecc 100644 --- a/psc-toggle-manager/src/main/java/fr/ans/psc/toggle/service/ToggleService.java +++ b/psc-toggle-manager/src/main/java/fr/ans/psc/toggle/service/ToggleService.java @@ -23,6 +23,7 @@ import fr.ans.psc.toggle.model.PsIdType; import fr.ans.psc.toggle.model.TogglePsRef; import fr.ans.psc.toggle.model.ToggleReport; +import fr.ans.psc.toggle.model.UntoggleReport; import lombok.extern.slf4j.Slf4j; import org.apache.any23.encoding.TikaEncodingDetector; import org.junit.jupiter.params.shadow.com.univocity.parsers.common.ParsingContext; @@ -45,15 +46,15 @@ import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; import java.util.zip.ZipOutputStream; @Service @Slf4j public class ToggleService { - private final String TOGGLE_FILE_NAME = "Table_de_Correspondance_bascule"; - private final String FAILURE_REPORT_FILENAME = "pscload_rapport_des_echecs_de_bascule"; + private static final String TOGGLE_FILE_NAME = "Table_de_Correspondance_bascule"; + private static final String TOGGLE_FAILURE_REPORT_FILENAME = "pscload_rapport_des_echecs_de_bascule"; + private static final String UNTOGGLE_FAILURE_REPORT_FILENAME = "pscload_rapport_des_echecs_de_dereferencement"; private static final int TOGGLE_ROW_LENGTH = 2; @Autowired @@ -75,7 +76,33 @@ public void toggle(MultipartFile mpFile, PsIdType originIdType, PsIdType targetI Map psRefMap = loadPSRefMapFromFile(toggleFile, originIdType, targetIdType); togglePsRefs(psRefMap); if (enableEmailing) { - reportToggleErrors(psRefMap); + File zipFile = reportToggleErrors(psRefMap, TOGGLE_FAILURE_REPORT_FILENAME); + ToggleReport toggleReport = new ToggleReport(); + toggleReport.setReportCounters(psRefMap); + emailService.sendMail(toggleReport.generateReportSummary(), zipFile); + } + + } catch (ToggleFileParsingException tpe) { + log.error("Error during parsing toggle file", tpe); + } catch (FileNotFoundException fnfe) { + log.error("Could not find csv output file"); + } catch (IOException ioe) { + log.error("Error during tempFile creation", ioe); + } + + } + + @Async("processExecutor") + public void removeToggle(MultipartFile mpFile, PsIdType originIdType, PsIdType targetIdType) { + try { + File toggleFile = uploadToggleFile(mpFile); + Map psRefMap = loadPSRefMapFromFile(toggleFile, originIdType, targetIdType); + untogglePsRefs(psRefMap); + if (enableEmailing) { + File zipFile = reportToggleErrors(psRefMap, UNTOGGLE_FAILURE_REPORT_FILENAME); + UntoggleReport untoggleReport = new UntoggleReport(); + untoggleReport.setReportCounters(psRefMap); + emailService.sendMail(untoggleReport.generateReportSummary(), zipFile); } } catch (ToggleFileParsingException tpe) { @@ -176,10 +203,33 @@ void togglePsRefs(Map psRefMap) { log.info("All PsRefs have been treated."); } + /** + * @param psRefMap the map of ps to untoggle + */ + void untogglePsRefs(Map psRefMap) { + ApiClient client = new ApiClient(); + client.setBasePath(apiBaseUrl); + ToggleApi toggleApi = new ToggleApi(client); + PsApi psApi = new PsApi(client); + psRefMap.values().parallelStream().forEach(psRef -> { + try { + String result = toggleApi.removeTogglePsref(psRef); + log.info(result); + psRef.setReturnStatus(HttpStatus.OK.value()); + Ps ps = psApi.getPsById(URLEncoder.encode(psRef.getNationalId(), StandardCharsets.UTF_8)); + messageProducer.sendPsMessage(ps, "UPDATE"); + } catch (RestClientResponseException e) { + log.error(e.getResponseBodyAsString()); + psRef.setReturnStatus(e.getRawStatusCode()); + } + }); + log.info("All PsRefs have been treated."); + } + /** * @param psRefMap the map of non toggled psref, with api return status */ - void reportToggleErrors(Map psRefMap) throws FileNotFoundException { + File reportToggleErrors(Map psRefMap, String filename) throws FileNotFoundException { List dataLines = new ArrayList<>(); psRefMap.values().forEach(psRef -> { @@ -187,7 +237,7 @@ void reportToggleErrors(Map psRefMap) throws FileNotFoundEx dataLines.add(String.join(";", dataItems)); }); - File csvOutputFile = new File("/app", FAILURE_REPORT_FILENAME + ".csv"); + File csvOutputFile = new File("/app", filename + ".csv"); try (PrintWriter pw = new PrintWriter(csvOutputFile)) { pw.println("original_Id;target_Id;returned_code"); dataLines.forEach(pw::println); @@ -195,9 +245,9 @@ void reportToggleErrors(Map psRefMap) throws FileNotFoundEx try { InputStream fileContent = new FileInputStream(csvOutputFile); - ZipEntry zipEntry = new ZipEntry(FAILURE_REPORT_FILENAME + ".csv"); + ZipEntry zipEntry = new ZipEntry(filename + ".csv"); zipEntry.setTime(System.currentTimeMillis()); - ZipOutputStream zos = new ZipOutputStream(new FileOutputStream("/app" + File.separator + FAILURE_REPORT_FILENAME + ".zip")); + ZipOutputStream zos = new ZipOutputStream(new FileOutputStream("/app" + File.separator + filename + ".zip")); zos.putNextEntry(zipEntry); StreamUtils.copy(fileContent, zos); @@ -211,12 +261,8 @@ void reportToggleErrors(Map psRefMap) throws FileNotFoundEx } csvOutputFile.delete(); - File zipFile = new File("/app", FAILURE_REPORT_FILENAME + ".zip"); + File zipFile = new File("/app", filename + ".zip"); log.info("file length is " + zipFile.length()); - - ToggleReport toggleReport = new ToggleReport(); - toggleReport.setReportCounters(psRefMap); - emailService.sendMail(toggleReport.generateReportSummary(), zipFile); - + return zipFile; } } diff --git a/psc-toggle-manager/src/test/java/fr/ans/psc/toggle/model/ReportTest.java b/psc-toggle-manager/src/test/java/fr/ans/psc/toggle/model/ReportTest.java new file mode 100644 index 0000000..67ba276 --- /dev/null +++ b/psc-toggle-manager/src/test/java/fr/ans/psc/toggle/model/ReportTest.java @@ -0,0 +1,65 @@ +/* + * Copyright © 2022-2024 Agence du Numérique en Santé (ANS) (https://esante.gouv.fr) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package fr.ans.psc.toggle.model; + +import fr.ans.psc.toggle.ToggleManagerApplication; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.ContextConfiguration; + +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +@SpringBootTest +@ActiveProfiles("test") +@ContextConfiguration(classes = ToggleManagerApplication.class) +public class ReportTest { + + @Test + @DisplayName("tata") + void setCounters() { + Map psRefMap = TestUtil.createTestPsRefMap(); + + Report report = new Report(); + report.setReportCounters(psRefMap); + + assertEquals(3, report.getSubmitted()); + assertEquals(1, report.getFailed()); + assertEquals(2, report.getSuccessful()); + } + + @Test + @DisplayName("tutu") + void generateReport() { + Map psRefMap = TestUtil.createTestPsRefMap(); + + String expected = "Opérations terminées.\n\n" + + "3 soumis.\n" + + "2 en succès.\n" + + "1 en échec.\n\n" + + "Vous trouverez la liste des opérations en pièce jointe.\n\n" + + "Les erreurs possibles sont les suivantes :\n" + + "- 500 : Erreur côté serveur, veuillez vous rapprocher de l'administrateur."; + + Report report = new Report(); + report.setReportCounters(psRefMap); + String actual = report.generateReportSummary(); + assertEquals(expected, actual); + } +} diff --git a/psc-toggle-manager/src/test/java/fr/ans/psc/toggle/model/TestUtil.java b/psc-toggle-manager/src/test/java/fr/ans/psc/toggle/model/TestUtil.java new file mode 100644 index 0000000..27e766b --- /dev/null +++ b/psc-toggle-manager/src/test/java/fr/ans/psc/toggle/model/TestUtil.java @@ -0,0 +1,37 @@ +/* + * Copyright © 2022-2024 Agence du Numérique en Santé (ANS) (https://esante.gouv.fr) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package fr.ans.psc.toggle.model; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +public class TestUtil { + public static Map createTestPsRefMap() { + TogglePsRef psRef1 = new TogglePsRef(new String[]{"123", "823"}, PsIdType.ADELI, PsIdType.RPPS); + psRef1.setReturnStatus(200); + TogglePsRef psRef2 = new TogglePsRef(new String[]{"055", "855"}, PsIdType.ADELI, PsIdType.RPPS); + psRef2.setReturnStatus(200); + TogglePsRef psRef3 = new TogglePsRef(new String[]{"089","889"}, PsIdType.ADELI, PsIdType.RPPS); + psRef3.setReturnStatus(409); + + Map psRefMap = new ConcurrentHashMap<>(); + psRefMap.put(psRef1.getNationalIdRef(), psRef1); + psRefMap.put(psRef2.getNationalIdRef(), psRef2); + psRefMap.put(psRef3.getNationalIdRef(), psRef3); + + return psRefMap; + } +} diff --git a/psc-toggle-manager/src/test/java/fr/ans/psc/toggle/model/ToggleReportTest.java b/psc-toggle-manager/src/test/java/fr/ans/psc/toggle/model/ToggleReportTest.java index 7fa439d..1ada245 100644 --- a/psc-toggle-manager/src/test/java/fr/ans/psc/toggle/model/ToggleReportTest.java +++ b/psc-toggle-manager/src/test/java/fr/ans/psc/toggle/model/ToggleReportTest.java @@ -22,10 +22,7 @@ import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.ContextConfiguration; -import java.util.HashMap; import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -37,16 +34,7 @@ public class ToggleReportTest { @Test @DisplayName("toto") void setCounters() { - TogglePsRef psRef1 = new TogglePsRef(new String[]{"123", "823"}, PsIdType.ADELI, PsIdType.RPPS); - psRef1.setReturnStatus(200); - TogglePsRef psRef2 = new TogglePsRef(new String[]{"055", "855"}, PsIdType.ADELI, PsIdType.RPPS); - psRef2.setReturnStatus(200); - TogglePsRef psRef3 = new TogglePsRef(new String[]{"089","889"}, PsIdType.ADELI, PsIdType.RPPS); - psRef3.setReturnStatus(409); - Map psRefMap = new ConcurrentHashMap<>(); - psRefMap.put(psRef1.getNationalIdRef(), psRef1); - psRefMap.put(psRef2.getNationalIdRef(), psRef2); - psRefMap.put(psRef3.getNationalIdRef(), psRef3); + Map psRefMap = TestUtil.createTestPsRefMap(); ToggleReport report = new ToggleReport(); report.setReportCounters(psRefMap); @@ -60,16 +48,7 @@ void setCounters() { @Test @DisplayName("titi") void generateReport() { - TogglePsRef psRef1 = new TogglePsRef(new String[]{"123", "823"}, PsIdType.ADELI, PsIdType.RPPS); - psRef1.setReturnStatus(200); - TogglePsRef psRef2 = new TogglePsRef(new String[]{"055", "855"}, PsIdType.ADELI, PsIdType.RPPS); - psRef2.setReturnStatus(200); - TogglePsRef psRef3 = new TogglePsRef(new String[]{"089","889"}, PsIdType.ADELI, PsIdType.RPPS); - psRef3.setReturnStatus(409); - Map psRefMap = new ConcurrentHashMap<>(); - psRefMap.put(psRef1.getNationalIdRef(), psRef1); - psRefMap.put(psRef2.getNationalIdRef(), psRef2); - psRefMap.put(psRef3.getNationalIdRef(), psRef3); + Map psRefMap = TestUtil.createTestPsRefMap(); String expected = "Opérations de bascule terminées.\n\n" + "3 PsRefs soumis à bascule.\n" + diff --git a/psc-toggle-manager/src/test/java/fr/ans/psc/toggle/model/UntoggleReportTest.java b/psc-toggle-manager/src/test/java/fr/ans/psc/toggle/model/UntoggleReportTest.java new file mode 100644 index 0000000..8da9b1d --- /dev/null +++ b/psc-toggle-manager/src/test/java/fr/ans/psc/toggle/model/UntoggleReportTest.java @@ -0,0 +1,67 @@ +/* + * Copyright © 2022-2024 Agence du Numérique en Santé (ANS) (https://esante.gouv.fr) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package fr.ans.psc.toggle.model; + +import fr.ans.psc.toggle.ToggleManagerApplication; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.ContextConfiguration; + +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +@SpringBootTest +@ActiveProfiles("test") +@ContextConfiguration(classes = ToggleManagerApplication.class) +public class UntoggleReportTest { + + @Test + @DisplayName("foo") + void setCounters() { + Map psRefMap = TestUtil.createTestPsRefMap(); + + UntoggleReport report = new UntoggleReport(); + report.setReportCounters(psRefMap); + + assertEquals(3, report.getSubmitted()); + assertEquals(1, report.getFailed()); + assertEquals(2, report.getSuccessful()); + } + + @Test + @DisplayName("bar") + void generateReport() { + Map psRefMap = TestUtil.createTestPsRefMap(); + + String expected = "Opérations terminées.\n\n" + + "3 PsRefs soumis pour déréférencement.\n" + + "2 PsRefs retirés avec succès.\n" + + "1 PsRefs n'ont pas pu être retirés.\n\n" + + "Vous trouverez la liste des opérations en pièce jointe.\n\n" + + "Les erreurs possibles sont les suivantes :\n" + + "- 404 : Le PsRef proposé n'est pas lié au Ps, n'a pas pu être retiré.\n" + + "- 410 : Le Ps proposé n'est pas présent en base, le PsRef n'a pas été rétiré.\n" + + "- 500 : Erreur côté serveur, veuillez vous rapprocher de l'administrateur."; + + UntoggleReport report = new UntoggleReport(); + report.setReportCounters(psRefMap); + String actual = report.generateReportSummary(); + assertEquals(expected, actual); + } +} diff --git a/psc-toggle-manager/src/test/java/fr/ans/psc/toggle/service/ToggleServiceTest.java b/psc-toggle-manager/src/test/java/fr/ans/psc/toggle/service/ToggleServiceTest.java index d95483c..5e79405 100644 --- a/psc-toggle-manager/src/test/java/fr/ans/psc/toggle/service/ToggleServiceTest.java +++ b/psc-toggle-manager/src/test/java/fr/ans/psc/toggle/service/ToggleServiceTest.java @@ -18,7 +18,6 @@ import com.github.tomakehurst.wiremock.junit5.WireMockExtension; import fr.ans.psc.toggle.ToggleManagerApplication; import fr.ans.psc.toggle.model.PsIdType; -import fr.ans.psc.toggle.service.ToggleService; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -37,10 +36,10 @@ import java.io.File; import java.io.FileInputStream; -import java.io.FileNotFoundException; import java.io.IOException; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; +import static com.github.tomakehurst.wiremock.client.WireMock.delete; import static com.github.tomakehurst.wiremock.client.WireMock.put; @SpringBootTest @@ -85,4 +84,19 @@ void toggle() throws IOException { toggleService.toggle(mpFile, PsIdType.ADELI, PsIdType.RPPS); } + + @Test + @DisplayName("should successfully untoggle end to end") + void removeToggle() throws IOException { + httpApiMockServer.stubFor(delete("/v2/toggle") + .willReturn(aResponse().withStatus(200))); + + ClassLoader cl = Thread.currentThread().getContextClassLoader(); + String rootpath = cl.getResource(".").getPath(); + File requestFile = new File(rootpath + File.separator + "toggle-delete.csv"); + FileInputStream inputStream = new FileInputStream(requestFile); + MultipartFile mpFile = new MockMultipartFile("toggleFile", inputStream); + + toggleService.removeToggle(mpFile, PsIdType.ADELI, PsIdType.RPPS); + } } diff --git a/psc-toggle-manager/src/test/resources/toggle-delete.csv b/psc-toggle-manager/src/test/resources/toggle-delete.csv new file mode 100644 index 0000000..1bfa667 --- /dev/null +++ b/psc-toggle-manager/src/test/resources/toggle-delete.csv @@ -0,0 +1,4 @@ +N° ADELI;N° RPPS +016041030;10106635948 +016054801;10106635948 +016054827;10104869978