Search in sources :

Example 6 with FilePathMultipart

use of com.dtflys.forest.multipart.FilePathMultipart in project forest by dromara.

the class TestUploadClient method testUploadPathList2.

@Test
public void testUploadPathList2() throws InterruptedException, FileUploadException {
    server.enqueue(new MockResponse().setBody(EXPECTED));
    URL[] urlArray = new URL[] { this.getClass().getResource("/test-img.jpg"), this.getClass().getResource("/test-img2.jpg") };
    List<String> pathList = new LinkedList<>();
    for (URL url : urlArray) {
        String path = getPathFromURL(url);
        pathList.add(path);
    }
    ForestRequest<Map> request = uploadClient.uploadPathList2(pathList);
    assertNotNull(request);
    List<ForestMultipart> multipartList = request.getMultiparts();
    assertEquals(2, multipartList.size());
    // assertTrue(Map.class.isAssignableFrom(request.getMethod().getReturnClass()));
    int i = 0;
    for (ForestMultipart multipart : multipartList) {
        assertTrue(multipart instanceof FilePathMultipart);
        assertEquals("file_" + i, multipart.getName());
        File file = multipart.getFile();
        assertNotNull(file);
        URL url = urlArray[i];
        assertEquals(getPathFromURL(url), file.getAbsolutePath().replaceAll("\\\\", "/"));
        assertEquals(getPathFromURL(url), ((FilePathMultipart) multipart).getFilePath());
        assertEquals("test-img-" + i + ".jpg", multipart.getOriginalFileName());
        i++;
    }
    Map result = (Map) request.execute();
    assertNotNull(result);
    MockServerRequest.mockRequest(server).assertMultipart("file_0", fileItems -> {
        assertEquals(1, fileItems.size());
        FileItem fileItem1 = fileItems.get(0);
        assertEquals("test-img-0.jpg", fileItem1.getName());
        assertEquals("image/jpeg", fileItem1.getContentType());
        try {
            byte[] bytes = IOUtils.toByteArray(fileItem1.getInputStream());
            URL url = urlArray[0];
            assertNotNull(url);
            assertArrayEquals(IOUtils.toByteArray(new FileInputStream(url.getFile())), bytes);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }).assertMultipart("file_1", fileItems -> {
        assertEquals(1, fileItems.size());
        FileItem fileItem1 = fileItems.get(0);
        assertEquals("test-img-1.jpg", fileItem1.getName());
        assertEquals("image/jpeg", fileItem1.getContentType());
        try {
            byte[] bytes = IOUtils.toByteArray(fileItem1.getInputStream());
            URL url = urlArray[1];
            assertNotNull(url);
            assertArrayEquals(IOUtils.toByteArray(new FileInputStream(url.getFile())), bytes);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    });
}
Also used : BeforeClass(org.junit.BeforeClass) URL(java.net.URL) ContentType(com.dtflys.forest.backend.ContentType) ForestRequest(com.dtflys.forest.http.ForestRequest) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Assert.assertThat(org.junit.Assert.assertThat) ForestConfiguration(com.dtflys.forest.config.ForestConfiguration) InputStreamMultipart(com.dtflys.forest.multipart.InputStreamMultipart) Map(java.util.Map) Assert.assertArrayEquals(org.junit.Assert.assertArrayEquals) MockWebServer(okhttp3.mockwebserver.MockWebServer) LinkedList(java.util.LinkedList) ForestMultipart(com.dtflys.forest.multipart.ForestMultipart) Assert.assertNotNull(org.junit.Assert.assertNotNull) FileItem(org.apache.commons.fileupload.FileItem) Assert.assertTrue(org.junit.Assert.assertTrue) Test(org.junit.Test) IOException(java.io.IOException) FileInputStream(java.io.FileInputStream) FileMultipart(com.dtflys.forest.multipart.FileMultipart) ByteArrayMultipart(com.dtflys.forest.multipart.ByteArrayMultipart) File(java.io.File) Objects(java.util.Objects) UploadClient(com.dtflys.test.http.client.UploadClient) IOUtils(org.apache.commons.io.IOUtils) List(java.util.List) JSON(com.alibaba.fastjson.JSON) Rule(org.junit.Rule) MockServerRequest(com.dtflys.forest.mock.MockServerRequest) StringUtils(com.dtflys.forest.utils.StringUtils) FilePathMultipart(com.dtflys.forest.multipart.FilePathMultipart) FileUploadException(org.apache.commons.fileupload.FileUploadException) MockResponse(okhttp3.mockwebserver.MockResponse) HttpBackend(com.dtflys.forest.backend.HttpBackend) Assert.assertEquals(org.junit.Assert.assertEquals) InputStream(java.io.InputStream) MockResponse(okhttp3.mockwebserver.MockResponse) ForestMultipart(com.dtflys.forest.multipart.ForestMultipart) IOException(java.io.IOException) URL(java.net.URL) LinkedList(java.util.LinkedList) FileInputStream(java.io.FileInputStream) FileItem(org.apache.commons.fileupload.FileItem) FilePathMultipart(com.dtflys.forest.multipart.FilePathMultipart) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map) File(java.io.File) Test(org.junit.Test)

Example 7 with FilePathMultipart

use of com.dtflys.forest.multipart.FilePathMultipart in project forest by dromara.

the class TestUploadClient method testUploadPathList.

@Test
public void testUploadPathList() throws InterruptedException, FileUploadException {
    server.enqueue(new MockResponse().setBody(EXPECTED));
    URL[] urlArray = new URL[] { this.getClass().getResource("/test-img.jpg"), this.getClass().getResource("/test-img2.jpg") };
    List<String> pathList = new LinkedList<>();
    for (URL url : urlArray) {
        assertNotNull(url);
        String path = getPathFromURL(url);
        pathList.add(path);
    }
    ForestRequest<Map> request = uploadClient.uploadPathList(pathList);
    assertNotNull(request);
    List<ForestMultipart> multipartList = request.getMultiparts();
    assertEquals(2, multipartList.size());
    // assertTrue(Map.class.isAssignableFrom(request.getMethod().getReturnClass()));
    int i = 0;
    for (ForestMultipart multipart : multipartList) {
        assertTrue(multipart instanceof FilePathMultipart);
        assertEquals("file", multipart.getName());
        File file = multipart.getFile();
        assertNotNull(file);
        URL url = urlArray[i];
        assertEquals(getPathFromURL(url), file.getAbsolutePath().replaceAll("\\\\", "/"));
        assertEquals(getPathFromURL(url), ((FilePathMultipart) multipart).getFilePath());
        assertEquals("test-img-" + i + ".jpg", multipart.getOriginalFileName());
        i++;
    }
    Map result = (Map) request.execute();
    assertNotNull(result);
    MockServerRequest.mockRequest(server).assertMultipart("file", fileItems -> {
        assertEquals(2, fileItems.size());
        FileItem fileItem1 = fileItems.get(0);
        assertEquals("test-img-0.jpg", fileItem1.getName());
        assertEquals("image/jpeg", fileItem1.getContentType());
        try {
            byte[] bytes = IOUtils.toByteArray(fileItem1.getInputStream());
            URL url = urlArray[0];
            assertNotNull(url);
            assertArrayEquals(IOUtils.toByteArray(new FileInputStream(url.getFile())), bytes);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        FileItem fileItem2 = fileItems.get(1);
        assertEquals("test-img-1.jpg", fileItem2.getName());
        assertEquals("image/jpeg", fileItem2.getContentType());
        try {
            byte[] bytes = IOUtils.toByteArray(fileItem2.getInputStream());
            URL url = urlArray[1];
            assertNotNull(url);
            assertArrayEquals(IOUtils.toByteArray(new FileInputStream(url.getFile())), bytes);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    });
}
Also used : MockResponse(okhttp3.mockwebserver.MockResponse) ForestMultipart(com.dtflys.forest.multipart.ForestMultipart) IOException(java.io.IOException) URL(java.net.URL) LinkedList(java.util.LinkedList) FileInputStream(java.io.FileInputStream) FileItem(org.apache.commons.fileupload.FileItem) FilePathMultipart(com.dtflys.forest.multipart.FilePathMultipart) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map) File(java.io.File) Test(org.junit.Test)

Example 8 with FilePathMultipart

use of com.dtflys.forest.multipart.FilePathMultipart in project forest by dromara.

the class TestMultipart method testFilePathMultipart.

public void testFilePathMultipart() throws IOException {
    URL url = TestMultipart.class.getClassLoader().getResource("log4j2.xml");
    String filePath = url.getFile();
    File file = new File(filePath);
    FilePathMultipart filePathMultipart = new FilePathMultipart();
    filePathMultipart.setName("file");
    filePathMultipart.setData(file.getAbsolutePath());
    File resultFile = filePathMultipart.getFile();
    assertNotNull(resultFile);
    assertEquals(file.getAbsoluteFile(), resultFile.getAbsoluteFile());
    assertEquals("file", filePathMultipart.getName());
    assertEquals("log4j2.xml", filePathMultipart.getOriginalFileName());
    long fileSize = FileUtils.sizeOf(file);
    assertEquals(fileSize, filePathMultipart.getSize());
    String text = FileUtils.readFileToString(file);
    String resultText = IOUtils.toString(filePathMultipart.getInputStream());
    assertEquals(text, resultText);
    byte[] byteArray = filePathMultipart.getBytes();
    assertNotNull(byteArray);
    String resultText2 = new String(byteArray);
    assertEquals(text, resultText2);
}
Also used : FilePathMultipart(com.dtflys.forest.multipart.FilePathMultipart) File(java.io.File) URL(java.net.URL)

Aggregations

FilePathMultipart (com.dtflys.forest.multipart.FilePathMultipart)8 File (java.io.File)8 ForestMultipart (com.dtflys.forest.multipart.ForestMultipart)7 FileInputStream (java.io.FileInputStream)7 IOException (java.io.IOException)7 HashMap (java.util.HashMap)7 LinkedHashMap (java.util.LinkedHashMap)7 Map (java.util.Map)7 MockResponse (okhttp3.mockwebserver.MockResponse)7 FileItem (org.apache.commons.fileupload.FileItem)7 Test (org.junit.Test)7 URL (java.net.URL)6 LinkedList (java.util.LinkedList)4 JSON (com.alibaba.fastjson.JSON)3 ContentType (com.dtflys.forest.backend.ContentType)3 HttpBackend (com.dtflys.forest.backend.HttpBackend)3 ForestConfiguration (com.dtflys.forest.config.ForestConfiguration)3 ForestRequest (com.dtflys.forest.http.ForestRequest)3 MockServerRequest (com.dtflys.forest.mock.MockServerRequest)3 ByteArrayMultipart (com.dtflys.forest.multipart.ByteArrayMultipart)3