@Test public void mockMultipartHttpServletRequestWithInputStream() throws IOException { MockMultipartHttpServletRequest request = new MockMultipartHttpServletRequest(); request.addFile(new MockMultipartFile("file1", new ByteArrayInputStream("myContent1".getBytes()))); request.addFile(new MockMultipartFile("file2", "myOrigFilename", "text/plain", new ByteArrayInputStream( "myContent2".getBytes()))); doTestMultipartHttpServletRequest(request); }
/** * Create a new {@code MockMultipartHttpServletRequest} with the supplied {@link ServletContext}. * @param servletContext the ServletContext that the request runs in * (may be {@code null} to use a default {@link MockServletContext}) */ public MockMultipartHttpServletRequest(@Nullable ServletContext servletContext) { super(servletContext); setMethod("POST"); setContentType("multipart/form-data"); }
@Test public void mockMultipartHttpServletRequestWithByteArray() throws IOException { MockMultipartHttpServletRequest request = new MockMultipartHttpServletRequest(); assertFalse(request.getFileNames().hasNext()); assertNull(request.getFile("file1")); assertNull(request.getFile("file2")); assertTrue(request.getFileMap().isEmpty()); request.addFile(new MockMultipartFile("file1", "myContent1".getBytes())); request.addFile(new MockMultipartFile("file2", "myOrigFilename", "text/plain", "myContent2".getBytes())); doTestMultipartHttpServletRequest(request); }
@Test public void shouldUploadModule() throws Exception { byte[] fileData = IOUtils.toByteArray(getClass().getClassLoader().getResourceAsStream("mockModule.omod")); MockMultipartFile toUpload = new MockMultipartFile("file", "mockModule.omod", "archive/zip", fileData); MockMultipartHttpServletRequest request = new MockMultipartHttpServletRequest(); request.setRequestURI(getBaseRestURI() + getURI()); request.setMethod(RequestMethod.POST.name()); request.addHeader("Content-Type", "multipart/form-data"); request.addFile(toUpload); mockModuleFactory.loadModuleMock = mockModuleToLoad; MockHttpServletResponse response = handle(request); assertThat(mockModuleFactory.loadedModules, hasItem(mockModuleToLoad)); assertThat(mockModuleFactory.startedModules, hasItem(mockModuleToLoad)); }
MockMultipartFile file = new MockMultipartFile("test.zip", "test.zip", "application/zip", data); MockMultipartHttpServletRequest mockRequest = new MockMultipartHttpServletRequest(); String boundary = "q1w2e3r4t5y6u7i8o9"; mockRequest.setContentType("multipart/form-data; boundary="+boundary); mockRequest.setContent(createFileContent(data,boundary,"application/zip","test.zip")); mockRequest.addFile(file); mockRequest.setMethod("POST"); mockRequest.setParameter("variant", "php"); mockRequest.setParameter("os", "mac"); mockRequest.setParameter("version", "3.4"); MockHttpServletResponse response = new MockHttpServletResponse(); new FileUpload().doPost(mockRequest, response);
MockMultipartHttpServletRequest request = this.generateMockMultiPartHttpServletRequest(true); MockMultipartFile mockMultipartFile = null; try { request.setContentType("multipart/form-data; boundary=-----1234"); request.setCharacterEncoding("text/plain"); String endline = "\r\n"; String bondary = "-----1234"; String textFile = this.encodeTextFile("-----1234", "\r\n", "file","test.csv", "text/UTF-8", FileUtils.readFileToString((new File(csvFilePath)), "UTF-8")); StringBuilder content = new StringBuilder(textFile.toString()); content.append(endline); content.append(endline); content.append(endline); content.append("--"); content.append(bondary); content.append("--"); content.append(endline); request.setContent(content.toString().getBytes()); request.setMethod("POST"); mockMultipartFile = new MockMultipartFile("file", FileUtils.readFileToByteArray(new File(csvFilePath))); } catch (Exception e1) { e1.printStackTrace(); } request.addFile(mockMultipartFile);
/** * Reset the request and the response, maintaining the same session. * Useful, for example, to call a post after calling the get of the form. */ protected void resetRequestAndResponse() { HttpSession httpSession = null; // preparing the multipart request if (mpReq != null) { httpSession = mpReq.getSession(); } mpReq = new MockMultipartHttpServletRequest(); mpReq.setSession(httpSession); mpReq.setMethod("GET"); // preparing the normal request if (req != null) { httpSession = req.getSession(); } req = new MockHttpServletRequest(); req.setSession(httpSession); req.setMethod("GET"); res = new MockHttpServletResponse(); } }
public MockMultipartHttpServletRequest newUploadRequest(String requestURI) { MockMultipartHttpServletRequest request = new MockMultipartHttpServletRequest(); request.addHeader("Content-Type", "multipart/form-data"); request.setRequestURI(getBaseRestURI() + requestURI); return request; }
/** * Create a new {@link MockMultipartHttpServletRequest} based on the * supplied {@code ServletContext} and the {@code MockMultipartFiles} * added to this builder. */ @Override protected final MockHttpServletRequest createServletRequest(ServletContext servletContext) { MockMultipartHttpServletRequest request = new MockMultipartHttpServletRequest(servletContext); this.files.stream().forEach(request::addFile); this.parts.values().stream().flatMap(Collection::stream).forEach(request::addPart); if (!this.parts.isEmpty()) { new StandardMultipartHttpServletRequest(request) .getMultiFileMap().values().stream().flatMap(Collection::stream) .forEach(request::addFile); } return request; }
public MockFileRequest(String filename) { super.setMethod("POST"); if (StringUtils.isNotEmpty(filename)) { byte[] data; try { data = FileUtils.readFileToByteArray(new File(filename)); } catch (IOException e) { throw new RuntimeException(e.getMessage(), e); } MockMultipartFile file = new MockMultipartFile("file", data); super.addFile(file); } } }
private ServletRequest prepareServletRequest(Object target, NativeWebRequest request, MethodParameter parameter) { String modelPrefixName = parameter.getParameterAnnotation(FormModel.class).value(); HttpServletRequest nativeRequest = (HttpServletRequest) request.getNativeRequest(); MultipartRequest multipartRequest = WebUtils.getNativeRequest(nativeRequest, MultipartRequest.class); MockHttpServletRequest mockRequest = null; if (multipartRequest != null) { MockMultipartHttpServletRequest mockMultipartRequest = new MockMultipartHttpServletRequest(); mockMultipartRequest.getMultiFileMap().putAll(multipartRequest.getMultiFileMap()); } else { mockRequest = new MockHttpServletRequest(); } for (Entry<String, String> entry : getUriTemplateVariables(request).entrySet()) { String parameterName = entry.getKey(); String value = entry.getValue(); if (isFormModelAttribute(parameterName, modelPrefixName)) { mockRequest.setParameter(getNewParameterName(parameterName, modelPrefixName), value); } } for (Object parameterEntry : nativeRequest.getParameterMap().entrySet()) { Entry<String, String[]> entry = (Entry<String, String[]>) parameterEntry; String parameterName = entry.getKey(); String[] value = entry.getValue(); if (isFormModelAttribute(parameterName, modelPrefixName)) { mockRequest.setParameter(getNewParameterName(parameterName, modelPrefixName), value); } } return mockRequest; }
@Test public void shouldUploadFileAndFetchComplexObs() throws Exception { ConceptComplex conceptComplex = newConceptComplex(); InputStream in = getClass().getClassLoader().getResourceAsStream("customTestDataset.xml"); ByteArrayOutputStream out = new ByteArrayOutputStream(); IOUtils.copy(in, out); String json = "{\"concept\":\"" + conceptComplex.getUuid() + "\", \"person\":\"5946f880-b197-400b-9caa-a3c661d23041\"," + "\"obsDatetime\":\"2015-09-07T00:00:00.000+0530\"}"; MockMultipartHttpServletRequest request = newUploadRequest(getURI()); request.addFile(new MockMultipartFile("file", "customTestDataset.xml", null, out.toByteArray())); request.addParameter("json", json); SimpleObject response = deserialize(handle(request)); MockHttpServletResponse rawResponse = handle(newGetRequest(getURI() + "/" + response.get("uuid") + "/value")); assertThat(out.toByteArray(), is(equalTo(rawResponse.getContentAsByteArray()))); }
private List<OperationRequestPart> extractMultipartRequestParts( MockMultipartHttpServletRequest multipartRequest) throws IOException { List<OperationRequestPart> parts = new ArrayList<>(); for (Entry<String, List<MultipartFile>> entry : multipartRequest.getMultiFileMap() .entrySet()) { for (MultipartFile file : entry.getValue()) { parts.add(createOperationRequestPart(file)); } } return parts; }
@Override public String getMultipartContentType(String paramOrFileName) { MultipartFile file = getFile(paramOrFileName); if (file != null) { return file.getContentType(); } else { return null; } }
@Test public void shouldAcceptAndStoreClobDataViaPost() throws Exception { long before = getAllCount(); byte[] fileData = IOUtils.toByteArray(getClass().getClassLoader().getResourceAsStream( RestTestConstants1_9.TEST_RESOURCE_FILE)); MockMultipartFile toUpload = new MockMultipartFile("file", "formresource.txt", "text/plain", fileData); MockMultipartHttpServletRequest request = new MockMultipartHttpServletRequest(); request.setRequestURI(getBaseRestURI() + getURI()); request.setMethod(RequestMethod.POST.name()); request.addHeader("Content-Type", "multipart/form-data"); request.addFile(toUpload); MockHttpServletResponse response = handle(request); Assert.assertEquals(HttpServletResponse.SC_CREATED, response.getStatus()); Assert.assertEquals(before + 1, getAllCount()); }
/** * Create a new {@link MockMultipartHttpServletRequest} based on the * supplied {@code ServletContext} and the {@code MockMultipartFiles} * added to this builder. */ @Override protected final MockHttpServletRequest createServletRequest(ServletContext servletContext) { MockMultipartHttpServletRequest request = new MockMultipartHttpServletRequest(servletContext); this.files.stream().forEach(request::addFile); this.parts.values().stream().flatMap(Collection::stream).forEach(request::addPart); if (!this.parts.isEmpty()) { new StandardMultipartHttpServletRequest(request) .getMultiFileMap().values().stream().flatMap(Collection::stream) .forEach(request::addFile); } return request; }
private List<OperationRequestPart> extractMultipartRequestParts( MockMultipartHttpServletRequest multipartRequest) throws IOException { List<OperationRequestPart> parts = new ArrayList<>(); for (Entry<String, List<MultipartFile>> entry : multipartRequest.getMultiFileMap() .entrySet()) { for (MultipartFile file : entry.getValue()) { parts.add(createOperationRequestPart(file)); } } return parts; }
@Override public String getMultipartContentType(String paramOrFileName) { MultipartFile file = getFile(paramOrFileName); if (file != null) { return file.getContentType(); } else { return null; } }
@Test public void shouldPostFormResourceValue() throws Exception { byte[] fileData = IOUtils.toByteArray(getClass().getClassLoader().getResourceAsStream( RestTestConstants1_9.TEST_RESOURCE_FILE)); String valueReferenceBefore = formService.getFormResourceByUuid(getUuid()).getValueReference(); MockMultipartFile toUpload = new MockMultipartFile("value", "formresource.txt", "text/plain", fileData); MockMultipartHttpServletRequest request = new MockMultipartHttpServletRequest(); //Posting to uri of the form /ws/rest/v1/form/{uuid}/resource/{uuid}/value String uri = getBaseRestURI() + getURI() + "/" + getUuid() + "/value"; request.setRequestURI(uri); request.setMethod(RequestMethod.POST.name()); request.addHeader("Content-Type", "multipart/form-data"); request.addFile(toUpload); MockHttpServletResponse response = handle(request); String valueReferenceAfter = formService.getFormResourceByUuid(getUuid()).getValueReference(); Assert.assertNotEquals(valueReferenceBefore, valueReferenceAfter); Assert.assertNotNull(datatypeService.getClobDatatypeStorageByUuid(valueReferenceAfter)); Assert.assertEquals(HttpServletResponse.SC_CREATED, response.getStatus()); }
@Override protected final MockHttpServletRequest createServletRequest(ServletContext servletContext) { MockMultipartHttpServletRequest request = new MockMultipartHttpServletRequest(); for (MockMultipartFile file : this.files) { request.addFile(file); } return request; }