This commit is contained in:
Rossen Stoyanchev
2018-03-16 14:03:01 -04:00
parent 4fef1fe820
commit 313c6cef32
3 changed files with 184 additions and 169 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2017 the original author or authors.
* Copyright 2002-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -37,48 +37,58 @@ import static org.junit.Assert.*;
public class MultipartBodyBuilderTests {
@Test
public void builder() throws Exception {
public void builder() {
MultipartBodyBuilder builder = new MultipartBodyBuilder();
MultiValueMap<String, String> multipartData = new LinkedMultiValueMap<>();
multipartData.add("form field", "form value");
builder.part("key", multipartData).header("foo", "bar");
Resource logo = new ClassPathResource("/org/springframework/http/converter/logo.jpg");
builder.part("logo", logo).header("baz", "qux");
HttpHeaders entityHeaders = new HttpHeaders();
entityHeaders.add("foo", "bar");
HttpEntity<String> entity = new HttpEntity<>("body", entityHeaders);
Publisher<String> publisher = Flux.just("foo", "bar", "baz");
MultipartBodyBuilder builder = new MultipartBodyBuilder();
builder.part("key", multipartData).header("foo", "bar");
builder.part("logo", logo).header("baz", "qux");
builder.part("entity", entity).header("baz", "qux");
Publisher<String> publisher = Flux.just("foo", "bar", "baz");
builder.asyncPart("publisherClass", publisher, String.class).header("baz", "qux");
builder.asyncPart("publisherPtr", publisher, new ParameterizedTypeReference<String>() {}).header("baz", "qux");
MultiValueMap<String, HttpEntity<?>> result = builder.build();
assertEquals(5, result.size());
assertNotNull(result.getFirst("key"));
assertEquals(multipartData, result.getFirst("key").getBody());
assertEquals("bar", result.getFirst("key").getHeaders().getFirst("foo"));
HttpEntity<?> resultEntity = result.getFirst("key");
assertNotNull(resultEntity);
assertEquals(multipartData, resultEntity.getBody());
assertEquals("bar", resultEntity.getHeaders().getFirst("foo"));
assertNotNull(result.getFirst("logo"));
assertEquals(logo, result.getFirst("logo").getBody());
assertEquals("qux", result.getFirst("logo").getHeaders().getFirst("baz"));
resultEntity = result.getFirst("logo");
assertNotNull(resultEntity);
assertEquals(logo, resultEntity.getBody());
assertEquals("qux", resultEntity.getHeaders().getFirst("baz"));
assertNotNull(result.getFirst("entity"));
assertEquals("body", result.getFirst("entity").getBody());
assertEquals("bar", result.getFirst("entity").getHeaders().getFirst("foo"));
assertEquals("qux", result.getFirst("entity").getHeaders().getFirst("baz"));
resultEntity = result.getFirst("entity");
assertNotNull(resultEntity);
assertEquals("body", resultEntity.getBody());
assertEquals("bar", resultEntity.getHeaders().getFirst("foo"));
assertEquals("qux", resultEntity.getHeaders().getFirst("baz"));
assertNotNull(result.getFirst("publisherClass"));
assertEquals(publisher, result.getFirst("publisherClass").getBody());
assertEquals(ResolvableType.forClass(String.class), ((MultipartBodyBuilder.PublisherEntity<?,?>) result.getFirst("publisherClass")).getResolvableType());
assertEquals("qux", result.getFirst("publisherClass").getHeaders().getFirst("baz"));
resultEntity = result.getFirst("publisherClass");
assertNotNull(resultEntity);
assertEquals(publisher, resultEntity.getBody());
assertEquals(ResolvableType.forClass(String.class),
((MultipartBodyBuilder.PublisherEntity<?,?>) resultEntity).getResolvableType());
assertEquals("qux", resultEntity.getHeaders().getFirst("baz"));
assertNotNull(result.getFirst("publisherPtr"));
assertEquals(publisher, result.getFirst("publisherPtr").getBody());
assertEquals(ResolvableType.forClass(String.class), ((MultipartBodyBuilder.PublisherEntity<?,?>) result.getFirst("publisherPtr")).getResolvableType());
assertEquals("qux", result.getFirst("publisherPtr").getHeaders().getFirst("baz"));
resultEntity = result.getFirst("publisherPtr");
assertNotNull(resultEntity);
assertEquals(publisher, resultEntity.getBody());
assertEquals(ResolvableType.forClass(String.class),
((MultipartBodyBuilder.PublisherEntity<?,?>) resultEntity).getResolvableType());
assertEquals("qux", resultEntity.getHeaders().getFirst("baz"));
}
}