Skip to content

Commit 092c7b6

Browse files
committed
Test for Content-Disposition header
1 parent d128db5 commit 092c7b6

3 files changed

Lines changed: 109 additions & 1 deletion

File tree

datamodel/openapi/openapi-api-apache-sample/src/main/java/com/sap/cloud/sdk/datamodel/openapi/apache/sodastore/api/SodasApi.java

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
package com.sap.cloud.sdk.datamodel.openapi.apache.sodastore.api;
66

7+
import java.io.File;
78
import java.util.ArrayList;
89
import java.util.HashMap;
910
import java.util.List;
@@ -21,6 +22,7 @@
2122
import com.sap.cloud.sdk.services.openapi.apache.apiclient.BaseApi;
2223
import com.sap.cloud.sdk.services.openapi.apache.apiclient.Pair;
2324
import com.sap.cloud.sdk.services.openapi.apache.core.OpenApiRequestException;
25+
import com.sap.cloud.sdk.services.openapi.apache.core.OpenApiResponse;
2426

2527
/**
2628
* SodaStore API in version 1.0.0.
@@ -243,6 +245,68 @@ public SodaWithId sodasIdGet( @Nonnull final Long id )
243245
localVarReturnType);
244246
}
245247

248+
/**
249+
* <p>
250+
* Import soda data from a file
251+
* <p>
252+
* <p>
253+
* <b>200</b> - Imported successfully
254+
*
255+
* @param _file
256+
* The value for the parameter _file
257+
* @return An OpenApiResponse containing the status code of the HttpResponse.
258+
* @throws OpenApiRequestException
259+
* if an error occurs while attempting to invoke the API
260+
*/
261+
@Nonnull
262+
public OpenApiResponse sodasImportPost( @Nonnull final File _file )
263+
throws OpenApiRequestException
264+
{
265+
266+
// verify the required parameter '_file' is set
267+
if( _file == null ) {
268+
throw new OpenApiRequestException("Missing the required parameter '_file' when calling sodasImportPost")
269+
.statusCode(400);
270+
}
271+
272+
// create path and map variables
273+
final String localVarPath = "/sodas/upload";
274+
275+
final StringJoiner localVarQueryStringJoiner = new StringJoiner("&");
276+
final List<Pair> localVarQueryParams = new ArrayList<Pair>();
277+
final List<Pair> localVarCollectionQueryParams = new ArrayList<Pair>();
278+
final Map<String, String> localVarHeaderParams = new HashMap<String, String>(defaultHeaders);
279+
final Map<String, Object> localVarFormParams = new HashMap<String, Object>();
280+
281+
if( _file != null )
282+
localVarFormParams.put("file", _file);
283+
284+
final String[] localVarAccepts = {
285+
286+
};
287+
final String localVarAccept = ApiClient.selectHeaderAccept(localVarAccepts);
288+
final String[] localVarContentTypes = { "multipart/form-data" };
289+
final String localVarContentType = ApiClient.selectHeaderContentType(localVarContentTypes);
290+
291+
final TypeReference<OpenApiResponse> localVarReturnType = new TypeReference<OpenApiResponse>()
292+
{
293+
};
294+
295+
return apiClient
296+
.invokeAPI(
297+
localVarPath,
298+
"POST",
299+
localVarQueryParams,
300+
localVarCollectionQueryParams,
301+
localVarQueryStringJoiner.toString(),
302+
null,
303+
localVarHeaderParams,
304+
localVarFormParams,
305+
localVarAccept,
306+
localVarContentType,
307+
localVarReturnType);
308+
}
309+
246310
/**
247311
* <p>
248312
* Update a specific soda product by ID

datamodel/openapi/openapi-api-apache-sample/src/main/resources/sodastore.yaml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,27 @@ paths:
281281
format: binary
282282
'404':
283283
description: Soda product not found
284+
/sodas/upload:
285+
post:
286+
summary: Import soda data from a file
287+
operationId: sodasImportPost
288+
tags:
289+
- Sodas
290+
requestBody:
291+
required: true
292+
content:
293+
multipart/form-data:
294+
schema:
295+
type: object
296+
required:
297+
- file
298+
properties:
299+
file:
300+
type: string
301+
format: binary
302+
responses:
303+
'200':
304+
description: Imported successfully
284305
/orders:
285306
post:
286307
summary: Create a new order

datamodel/openapi/openapi-api-apache-sample/src/test/java/com/sap/cloud/sdk/services/openapi/apache/SerializationTest.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
11
package com.sap.cloud.sdk.services.openapi.apache;
22

3+
import static com.github.tomakehurst.wiremock.client.WireMock.aMultipart;
4+
import static com.github.tomakehurst.wiremock.client.WireMock.containing;
5+
import static com.github.tomakehurst.wiremock.client.WireMock.postRequestedFor;
6+
import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
37
import static org.assertj.core.api.Assertions.assertThat;
48

9+
import java.io.File;
10+
import java.io.IOException;
11+
512
import org.junit.jupiter.api.BeforeEach;
613
import org.junit.jupiter.api.Test;
714

@@ -98,12 +105,28 @@ void testJacksonSerializeOrder()
98105
assertThat(new ObjectMapper().readValue(expected, Order.class)).isEqualTo(order);
99106
}
100107

108+
@Test
109+
void testFileUploadHasFilenameInContentDisposition()
110+
throws IOException
111+
{
112+
WireMock.stubFor(WireMock.post(urlEqualTo("/sodas/upload")).willReturn(WireMock.ok()));
113+
114+
final var tempFile = File.createTempFile("test-soda-import", ".csv");
115+
tempFile.deleteOnExit();
116+
117+
sut.sodasImportPost(tempFile);
118+
119+
final var filePart =
120+
aMultipart("file").withHeader("Content-Disposition", containing(tempFile.getName())).build();
121+
WireMock.verify(postRequestedFor(urlEqualTo("/sodas/upload")).withRequestBodyPart(filePart));
122+
}
123+
101124
private void verify( String requestBody )
102125
{
103126
WireMock
104127
.verify(
105128
WireMock
106-
.putRequestedFor(WireMock.urlEqualTo("/sodas"))
129+
.putRequestedFor(urlEqualTo("/sodas"))
107130
.withHeader("Content-Type", WireMock.equalTo("application/json; charset=UTF-8"))
108131
.withRequestBody(WireMock.equalToJson(requestBody)));
109132
}

0 commit comments

Comments
 (0)