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