Search in sources :

Example 6 with Part

use of jakarta.servlet.http.Part in project spring-framework by spring-projects.

the class RequestParamMethodArgumentResolverTests method resolvePart.

@Test
public void resolvePart() throws Exception {
    MockHttpServletRequest request = new MockHttpServletRequest();
    MockPart expected = new MockPart("pfile", "Hello World".getBytes());
    request.setMethod("POST");
    request.setContentType("multipart/form-data");
    request.addPart(expected);
    webRequest = new ServletWebRequest(request);
    MethodParameter param = this.testMethod.annotPresent(RequestParam.class).arg(Part.class);
    Object result = resolver.resolveArgument(param, null, webRequest, null);
    boolean condition = result instanceof Part;
    assertThat(condition).isTrue();
    assertThat(result).as("Invalid result").isEqualTo(expected);
}
Also used : RequestParam(org.springframework.web.bind.annotation.RequestParam) MockHttpServletRequest(org.springframework.web.testfixture.servlet.MockHttpServletRequest) MockPart(org.springframework.web.testfixture.servlet.MockPart) RequestPart(org.springframework.web.bind.annotation.RequestPart) MvcAnnotationPredicates.requestPart(org.springframework.web.testfixture.method.MvcAnnotationPredicates.requestPart) Part(jakarta.servlet.http.Part) MockPart(org.springframework.web.testfixture.servlet.MockPart) MethodParameter(org.springframework.core.MethodParameter) ServletWebRequest(org.springframework.web.context.request.ServletWebRequest) Test(org.junit.jupiter.api.Test)

Example 7 with Part

use of jakarta.servlet.http.Part in project spring-framework by spring-projects.

the class RequestParamMethodArgumentResolverTests method supportsParameter.

@Test
public void supportsParameter() {
    resolver = new RequestParamMethodArgumentResolver(null, true);
    MethodParameter param = this.testMethod.annot(requestParam().notRequired("bar")).arg(String.class);
    assertThat(resolver.supportsParameter(param)).isTrue();
    param = this.testMethod.annotPresent(RequestParam.class).arg(String[].class);
    assertThat(resolver.supportsParameter(param)).isTrue();
    param = this.testMethod.annot(requestParam().name("name")).arg(Map.class);
    assertThat(resolver.supportsParameter(param)).isTrue();
    param = this.testMethod.annotPresent(RequestParam.class).arg(MultipartFile.class);
    assertThat(resolver.supportsParameter(param)).isTrue();
    param = this.testMethod.annotPresent(RequestParam.class).arg(List.class, MultipartFile.class);
    assertThat(resolver.supportsParameter(param)).isTrue();
    param = this.testMethod.annotPresent(RequestParam.class).arg(MultipartFile[].class);
    assertThat(resolver.supportsParameter(param)).isTrue();
    param = this.testMethod.annotPresent(RequestParam.class).arg(Part.class);
    assertThat(resolver.supportsParameter(param)).isTrue();
    param = this.testMethod.annotPresent(RequestParam.class).arg(List.class, Part.class);
    assertThat(resolver.supportsParameter(param)).isTrue();
    param = this.testMethod.annotPresent(RequestParam.class).arg(Part[].class);
    assertThat(resolver.supportsParameter(param)).isTrue();
    param = this.testMethod.annot(requestParam().noName()).arg(Map.class);
    assertThat(resolver.supportsParameter(param)).isFalse();
    param = this.testMethod.annotNotPresent(RequestParam.class).arg(String.class);
    assertThat(resolver.supportsParameter(param)).isTrue();
    param = this.testMethod.annotNotPresent().arg(MultipartFile.class);
    assertThat(resolver.supportsParameter(param)).isTrue();
    param = this.testMethod.annotNotPresent(RequestParam.class).arg(List.class, MultipartFile.class);
    assertThat(resolver.supportsParameter(param)).isTrue();
    param = this.testMethod.annotNotPresent(RequestParam.class).arg(Part.class);
    assertThat(resolver.supportsParameter(param)).isTrue();
    param = this.testMethod.annot(requestPart()).arg(MultipartFile.class);
    assertThat(resolver.supportsParameter(param)).isFalse();
    param = this.testMethod.annot(requestParam()).arg(String.class);
    assertThat(resolver.supportsParameter(param)).isTrue();
    param = this.testMethod.annot(requestParam().notRequired()).arg(String.class);
    assertThat(resolver.supportsParameter(param)).isTrue();
    param = this.testMethod.annotPresent(RequestParam.class).arg(Optional.class, Integer.class);
    assertThat(resolver.supportsParameter(param)).isTrue();
    param = this.testMethod.annotPresent(RequestParam.class).arg(Optional.class, MultipartFile.class);
    assertThat(resolver.supportsParameter(param)).isTrue();
    resolver = new RequestParamMethodArgumentResolver(null, false);
    param = this.testMethod.annotNotPresent(RequestParam.class).arg(String.class);
    assertThat(resolver.supportsParameter(param)).isFalse();
    param = this.testMethod.annotPresent(RequestPart.class).arg(MultipartFile.class);
    assertThat(resolver.supportsParameter(param)).isFalse();
}
Also used : MockMultipartFile(org.springframework.web.testfixture.servlet.MockMultipartFile) MultipartFile(org.springframework.web.multipart.MultipartFile) Optional(java.util.Optional) MockPart(org.springframework.web.testfixture.servlet.MockPart) RequestPart(org.springframework.web.bind.annotation.RequestPart) MvcAnnotationPredicates.requestPart(org.springframework.web.testfixture.method.MvcAnnotationPredicates.requestPart) Part(jakarta.servlet.http.Part) List(java.util.List) MethodParameter(org.springframework.core.MethodParameter) Map(java.util.Map) Test(org.junit.jupiter.api.Test)

Example 8 with Part

use of jakarta.servlet.http.Part in project spring-framework by spring-projects.

the class RequestParamMethodArgumentResolverTests method resolvePartNotAnnot.

@Test
public void resolvePartNotAnnot() throws Exception {
    MockPart expected = new MockPart("part", "Hello World".getBytes());
    MockHttpServletRequest request = new MockHttpServletRequest();
    request.setMethod("POST");
    request.setContentType("multipart/form-data");
    request.addPart(expected);
    webRequest = new ServletWebRequest(request);
    MethodParameter param = this.testMethod.annotNotPresent(RequestParam.class).arg(Part.class);
    Object result = resolver.resolveArgument(param, null, webRequest, null);
    boolean condition = result instanceof Part;
    assertThat(condition).isTrue();
    assertThat(result).as("Invalid result").isEqualTo(expected);
}
Also used : RequestParam(org.springframework.web.bind.annotation.RequestParam) MockHttpServletRequest(org.springframework.web.testfixture.servlet.MockHttpServletRequest) MockPart(org.springframework.web.testfixture.servlet.MockPart) RequestPart(org.springframework.web.bind.annotation.RequestPart) MvcAnnotationPredicates.requestPart(org.springframework.web.testfixture.method.MvcAnnotationPredicates.requestPart) Part(jakarta.servlet.http.Part) MockPart(org.springframework.web.testfixture.servlet.MockPart) MethodParameter(org.springframework.core.MethodParameter) ServletWebRequest(org.springframework.web.context.request.ServletWebRequest) Test(org.junit.jupiter.api.Test)

Example 9 with Part

use of jakarta.servlet.http.Part in project spring-framework by spring-projects.

the class RequestParamMethodArgumentResolverTests method resolvePartArrayMissing.

@Test
public void resolvePartArrayMissing() throws Exception {
    MockHttpServletRequest request = new MockHttpServletRequest();
    request.setMethod("POST");
    request.setContentType("multipart/form-data");
    request.addPart(new MockPart("other", "Hello World 3".getBytes()));
    webRequest = new ServletWebRequest(request);
    MethodParameter param = this.testMethod.annotPresent(RequestParam.class).arg(Part[].class);
    assertThatExceptionOfType(MissingServletRequestPartException.class).isThrownBy(() -> resolver.resolveArgument(param, null, webRequest, null));
}
Also used : MissingServletRequestPartException(org.springframework.web.multipart.support.MissingServletRequestPartException) RequestParam(org.springframework.web.bind.annotation.RequestParam) MockHttpServletRequest(org.springframework.web.testfixture.servlet.MockHttpServletRequest) MockPart(org.springframework.web.testfixture.servlet.MockPart) RequestPart(org.springframework.web.bind.annotation.RequestPart) MvcAnnotationPredicates.requestPart(org.springframework.web.testfixture.method.MvcAnnotationPredicates.requestPart) Part(jakarta.servlet.http.Part) MockPart(org.springframework.web.testfixture.servlet.MockPart) MethodParameter(org.springframework.core.MethodParameter) ServletWebRequest(org.springframework.web.context.request.ServletWebRequest) Test(org.junit.jupiter.api.Test)

Example 10 with Part

use of jakarta.servlet.http.Part in project spring-framework by spring-projects.

the class HtmlUnitRequestBuilderTests method buildRequestParameterMapViaWebRequestDotSetRequestParametersWithFileDataAsParameter.

// gh-27199
@Test
public void buildRequestParameterMapViaWebRequestDotSetRequestParametersWithFileDataAsParameter() throws Exception {
    String data = "{}";
    KeyDataPair keyDataPair = new KeyDataPair("key", new File("test.json"), null, MimeType.APPLICATION_JSON, StandardCharsets.UTF_8);
    keyDataPair.setData(data.getBytes());
    webRequest.setRequestParameters(Collections.singletonList(keyDataPair));
    MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
    assertThat(actualRequest.getParts()).hasSize(1);
    Part part = actualRequest.getPart("key");
    assertSoftly(softly -> {
        softly.assertThat(part).as("part").isNotNull();
        softly.assertThat(part.getName()).as("name").isEqualTo("key");
        softly.assertThat(part.getSubmittedFileName()).as("file name").isEqualTo("test.json");
        softly.assertThat(part.getContentType()).as("content type").isEqualTo(MimeType.APPLICATION_JSON);
        try {
            softly.assertThat(IOUtils.toString(part.getInputStream(), StandardCharsets.UTF_8)).as("content").isEqualTo(data);
        } catch (IOException ex) {
            softly.fail("failed to get InputStream", ex);
        }
    });
}
Also used : MockHttpServletRequest(org.springframework.mock.web.MockHttpServletRequest) Part(jakarta.servlet.http.Part) IOException(java.io.IOException) File(java.io.File) KeyDataPair(com.gargoylesoftware.htmlunit.util.KeyDataPair) Test(org.junit.jupiter.api.Test)

Aggregations

Part (jakarta.servlet.http.Part)19 Test (org.junit.jupiter.api.Test)13 MockPart (org.springframework.web.testfixture.servlet.MockPart)10 MockHttpServletRequest (org.springframework.web.testfixture.servlet.MockHttpServletRequest)9 ServletWebRequest (org.springframework.web.context.request.ServletWebRequest)8 MethodParameter (org.springframework.core.MethodParameter)7 RequestPart (org.springframework.web.bind.annotation.RequestPart)7 MvcAnnotationPredicates.requestPart (org.springframework.web.testfixture.method.MvcAnnotationPredicates.requestPart)5 IOException (java.io.IOException)4 RequestParam (org.springframework.web.bind.annotation.RequestParam)4 MultipartFile (org.springframework.web.multipart.MultipartFile)4 KeyDataPair (com.gargoylesoftware.htmlunit.util.KeyDataPair)3 MockHttpServletRequest (org.springframework.mock.web.MockHttpServletRequest)3 LinkedMultiValueMap (org.springframework.util.LinkedMultiValueMap)3 File (java.io.File)2 ArrayList (java.util.ArrayList)2 List (java.util.List)2 Map (java.util.Map)2 MultiValueMap (org.springframework.util.MultiValueMap)2 ServletException (jakarta.servlet.ServletException)1