1919import com .powsybl .network .store .client .NetworkStoreService ;
2020import com .powsybl .network .store .client .PreloadingStrategy ;
2121import com .powsybl .network .store .iidm .impl .NetworkFactoryImpl ;
22+ import jakarta .servlet .ServletException ;
2223import org .apache .commons .collections4 .ListUtils ;
2324import org .apache .commons .lang3 .tuple .Pair ;
2425import org .gridsuite .modification .NetworkModificationException ;
5354import org .springframework .boot .test .context .SpringBootTest ;
5455import org .springframework .boot .test .mock .mockito .MockBean ;
5556import org .springframework .http .MediaType ;
57+ import org .springframework .mock .web .MockMultipartFile ;
5658import org .springframework .test .web .servlet .MockMvc ;
5759import org .springframework .test .web .servlet .MvcResult ;
60+ import org .springframework .test .web .servlet .request .MockMultipartHttpServletRequestBuilder ;
5861
62+ import java .io .IOException ;
63+ import java .io .InputStream ;
5964import java .util .*;
6065import java .util .stream .Collectors ;
6166
@@ -102,9 +107,10 @@ class ModificationControllerTest {
102107 private static final String URI_COMPOSITE_NETWORK_MODIF_BASE = "/v1/network-composite-modifications" ;
103108 private static final String URI_GET_COMPOSITE_NETWORK_MODIF_CONTENT = "/v1/network-composite-modification/" ;
104109 private static final String URI_LINE_CATALOG = URI_NETWORK_MODIF_BASE + "/catalog/line_types" ;
105- private static final String LINE_TYPES_CATALOG_JSON_FILE_1 = "/lines-catalog.json" ;
106- private static final String LINE_TYPES_CATALOG_JSON_FILE_2 = "/line_types_catalog_2.json" ;
107- private static final String LINE_TYPES_CATALOG_JSON_FILE_3 = "/line_types_catalog_3.json" ;
110+ private static final String LINE_TYPES_CATALOG_JSON_FILE_1 = "/lines-catalog.json.gz" ;
111+ private static final String LINE_TYPES_CATALOG_JSON_FILE_2 = "/line_types_catalog_2.json.gz" ;
112+ private static final String LINE_TYPES_CATALOG_JSON_FILE_3 = "/line_types_catalog_3.json.gz" ;
113+ private static final String NOT_EXISTING_JSON_FILE = "/not_existing_file.json.gz" ;
108114 private static final String NETWORK_MODIFICATION_URI = URI_NETWORK_MODIF_BASE + "?groupUuid=" + TEST_GROUP_ID ;
109115
110116 @ Autowired
@@ -1514,9 +1520,9 @@ void testGetLineTypesCatalog() throws Exception {
15141520 assertEquals (0 , emptyLineTypes .size ());
15151521
15161522 // Create the catalog with some line types
1517- String lineTypesCatalogJson1 = TestUtils . resourceToString ( LINE_TYPES_CATALOG_JSON_FILE_1 );
1518- mockMvc . perform ( post ( URI_LINE_CATALOG ). content ( lineTypesCatalogJson1 ). contentType ( MediaType . APPLICATION_JSON ))
1519- .andExpect (status ().isOk ());
1523+ mockMvc . perform ( multipart ( URI_LINE_CATALOG )
1524+ . file ( createMockMultipartFile ( LINE_TYPES_CATALOG_JSON_FILE_1 ) ))
1525+ .andExpect (status ().isOk ());
15201526
15211527 // Check if the catalog is complete avoiding the duplicate entry
15221528 mvcResult = mockMvc
@@ -1529,9 +1535,9 @@ void testGetLineTypesCatalog() throws Exception {
15291535 assertEquals (8 , lineTypes .size ());
15301536
15311537 // Check if catalog is completely updated
1532- String lineTypesCatalogJson2 = TestUtils . resourceToString ( LINE_TYPES_CATALOG_JSON_FILE_2 );
1533- mockMvc . perform ( post ( URI_LINE_CATALOG ). content ( lineTypesCatalogJson2 ). contentType ( MediaType . APPLICATION_JSON ))
1534- .andExpect (status ().isOk ());
1538+ mockMvc . perform ( multipart ( URI_LINE_CATALOG )
1539+ . file ( createMockMultipartFile ( LINE_TYPES_CATALOG_JSON_FILE_2 ) ))
1540+ .andExpect (status ().isOk ());
15351541
15361542 mvcResult = mockMvc
15371543 .perform (get (URI_LINE_CATALOG ).contentType (MediaType .APPLICATION_JSON ))
@@ -1570,8 +1576,8 @@ void testGetLineTypeWithLimitsCatalog() throws Exception {
15701576 assertEquals (0 , emptyLineTypes .size ());
15711577
15721578 // Create the catalog with some line types
1573- String lineTypesCatalogJson1 = TestUtils . resourceToString ( LINE_TYPES_CATALOG_JSON_FILE_3 );
1574- mockMvc . perform ( post ( URI_LINE_CATALOG ). content ( lineTypesCatalogJson1 ). contentType ( MediaType . APPLICATION_JSON ))
1579+ mockMvc . perform ( multipart ( URI_LINE_CATALOG )
1580+ . file ( createMockMultipartFile ( LINE_TYPES_CATALOG_JSON_FILE_3 ) ))
15751581 .andExpect (status ().isOk ());
15761582
15771583 mvcResult = mockMvc
@@ -1600,6 +1606,20 @@ void testGetLineTypeWithLimitsCatalog() throws Exception {
16001606 assertEquals ("1" , selectedLineType .getLimitsForLineType ().getFirst ().getArea ());
16011607 }
16021608
1609+ private MockMultipartFile createMockMultipartFile (String fileName ) throws IOException {
1610+ try (InputStream inputStream = getClass ().getResourceAsStream (fileName )) {
1611+ return new MockMultipartFile ("file" , fileName , MediaType .MULTIPART_FORM_DATA_VALUE , inputStream );
1612+ }
1613+ }
1614+
1615+ @ Test
1616+ void testPostLineTypeWithLimitsCatalogError () throws IOException {
1617+ MockMultipartHttpServletRequestBuilder mockMultipartHttpServletRequestBuilder = multipart (URI_LINE_CATALOG )
1618+ .file (createMockMultipartFile (NOT_EXISTING_JSON_FILE ));
1619+ String message = assertThrows (ServletException .class , () -> mockMvc .perform (mockMultipartHttpServletRequestBuilder )).getMessage ();
1620+ assertEquals ("Request processing failed: java.io.UncheckedIOException: java.io.EOFException" , message );
1621+ }
1622+
16031623 @ Test
16041624 void testCreateVoltageInitModification () throws Exception {
16051625 // Create the modification
0 commit comments