Multipart file tests reliably pass on Windows as well

Issue: SPR-14546
This commit is contained in:
Juergen Hoeller 2017-05-02 21:26:31 +02:00
parent 817e80c56b
commit b709c77329
3 changed files with 20 additions and 23 deletions

View File

@ -39,23 +39,17 @@ import org.springframework.mock.http.server.reactive.test.MockServerHttpRequest;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import static java.util.Collections.emptyMap;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.springframework.core.ResolvableType.forClassWithGenerics;
import static org.springframework.http.HttpHeaders.CONTENT_LENGTH;
import static org.springframework.http.HttpHeaders.CONTENT_TYPE;
import static org.springframework.http.MediaType.MULTIPART_FORM_DATA;
import static java.util.Collections.*;
import static org.junit.Assert.*;
import static org.springframework.http.HttpHeaders.*;
import static org.springframework.http.MediaType.*;
/**
* @author Sebastien Deleuze
*/
public class SynchronossMultipartHttpMessageReaderTests {
private final HttpMessageReader<MultiValueMap<String, Part>> reader =
new SynchronossMultipartHttpMessageReader();
private final HttpMessageReader<MultiValueMap<String, Part>> reader = new SynchronossMultipartHttpMessageReader();
@Test
@ -84,7 +78,7 @@ public class SynchronossMultipartHttpMessageReaderTests {
@Test
public void resolveParts() throws IOException {
ServerHttpRequest request = generateMultipartRequest();
ResolvableType elementType = forClassWithGenerics(MultiValueMap.class, String.class, Part.class);
ResolvableType elementType = ResolvableType.forClassWithGenerics(MultiValueMap.class, String.class, Part.class);
MultiValueMap<String, Part> parts = this.reader.readMono(elementType, request, emptyMap()).block();
assertEquals(2, parts.size());
@ -98,7 +92,7 @@ public class SynchronossMultipartHttpMessageReaderTests {
assertEquals(12, buffer.readableByteCount());
byte[] byteContent = new byte[12];
buffer.read(byteContent);
assertEquals("Lorem\nIpsum\n", new String(byteContent));
assertEquals("Lorem Ipsum.", new String(byteContent));
assertTrue(parts.containsKey("barPart"));
part = parts.getFirst("barPart");
@ -111,10 +105,11 @@ public class SynchronossMultipartHttpMessageReaderTests {
@Test
public void bodyError() {
ServerHttpRequest request = generateErrorMultipartRequest();
ResolvableType elementType = forClassWithGenerics(MultiValueMap.class, String.class, Part.class);
ResolvableType elementType = ResolvableType.forClassWithGenerics(MultiValueMap.class, String.class, Part.class);
StepVerifier.create(this.reader.readMono(elementType, request, emptyMap())).verifyError();
}
private ServerHttpRequest generateMultipartRequest() throws IOException {
HttpHeaders fooHeaders = new HttpHeaders();
fooHeaders.setContentType(MediaType.TEXT_PLAIN);

View File

@ -19,7 +19,6 @@ package org.springframework.http.server.reactive;
import java.net.URI;
import java.util.Optional;
import static org.junit.Assert.*;
import org.junit.Test;
import reactor.core.publisher.Mono;
@ -31,20 +30,24 @@ import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.RequestEntity;
import org.springframework.http.ResponseEntity;
import org.springframework.http.codec.multipart.Part;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import org.springframework.http.codec.multipart.Part;
import org.springframework.web.server.ServerWebExchange;
import org.springframework.web.server.WebHandler;
import org.springframework.web.server.adapter.HttpWebHandlerAdapter;
import static org.junit.Assert.*;
/**
* @author Sebastien Deleuze
*/
public class MultipartIntegrationTests extends AbstractHttpHandlerIntegrationTests {
@Override
protected HttpHandler createHttpHandler() {
HttpWebHandlerAdapter handler = new HttpWebHandlerAdapter(new CheckRequestHandler());
return handler;
return new HttpWebHandlerAdapter(new CheckRequestHandler());
}
@Test
@ -70,11 +73,11 @@ public class MultipartIntegrationTests extends AbstractHttpHandlerIntegrationTes
return parts;
}
public static class CheckRequestHandler implements WebHandler {
@Override
public Mono<Void> handle(ServerWebExchange exchange) {
if (exchange.getRequest().getURI().getPath().equals("/form-parts")) {
return assertGetFormParts(exchange);
}
@ -106,7 +109,7 @@ public class MultipartIntegrationTests extends AbstractHttpHandlerIntegrationTes
assertEquals(12, buffer.readableByteCount());
byte[] byteContent = new byte[12];
buffer.read(byteContent);
assertEquals("Lorem\nIpsum\n", new String(byteContent));
assertEquals("Lorem Ipsum.", new String(byteContent));
}
private void assertBarPart(Part part) {
@ -117,4 +120,4 @@ public class MultipartIntegrationTests extends AbstractHttpHandlerIntegrationTes
}
}
}
}

View File

@ -1,2 +1 @@
Lorem
Ipsum
Lorem Ipsum.