Add error stream tests for Jackson2JsonDecoder
Issue: SPR-17418
This commit is contained in:
parent
946ec7e22e
commit
0176d362be
|
@ -46,10 +46,7 @@ import org.springframework.util.MimeType;
|
||||||
import static java.util.Arrays.asList;
|
import static java.util.Arrays.asList;
|
||||||
import static java.util.Collections.emptyMap;
|
import static java.util.Collections.emptyMap;
|
||||||
import static java.util.Collections.singletonMap;
|
import static java.util.Collections.singletonMap;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.*;
|
||||||
import static org.junit.Assert.assertFalse;
|
|
||||||
import static org.junit.Assert.assertNull;
|
|
||||||
import static org.junit.Assert.assertTrue;
|
|
||||||
import static org.springframework.core.ResolvableType.forClass;
|
import static org.springframework.core.ResolvableType.forClass;
|
||||||
import static org.springframework.http.MediaType.APPLICATION_JSON;
|
import static org.springframework.http.MediaType.APPLICATION_JSON;
|
||||||
import static org.springframework.http.MediaType.APPLICATION_JSON_UTF8;
|
import static org.springframework.http.MediaType.APPLICATION_JSON_UTF8;
|
||||||
|
@ -229,6 +226,18 @@ public class Jackson2JsonDecoderTests extends AbstractDataBufferAllocatingTestCa
|
||||||
StepVerifier.create(flux).verifyErrorMatches(ex -> ex instanceof DecodingException);
|
StepVerifier.create(flux).verifyErrorMatches(ex -> ex instanceof DecodingException);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void error() throws Exception {
|
||||||
|
Flux<DataBuffer> source = Flux.just(stringBuffer("{\"foofoo\": \"foofoo\", \"barbar\":"))
|
||||||
|
.concatWith(Flux.error(new RuntimeException()));
|
||||||
|
ResolvableType elementType = forClass(Pojo.class);
|
||||||
|
Flux<Object> flux = new Jackson2JsonDecoder(new ObjectMapper()).decode(source, elementType, null, emptyMap());
|
||||||
|
|
||||||
|
StepVerifier.create(flux)
|
||||||
|
.expectError(RuntimeException.class)
|
||||||
|
.verify();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void noDefaultConstructor() throws Exception {
|
public void noDefaultConstructor() throws Exception {
|
||||||
Flux<DataBuffer> source = Flux.just(stringBuffer( "{\"property1\":\"foo\",\"property2\":\"bar\"}"));
|
Flux<DataBuffer> source = Flux.just(stringBuffer( "{\"property1\":\"foo\",\"property2\":\"bar\"}"));
|
||||||
|
|
|
@ -36,8 +36,8 @@ import org.springframework.core.codec.DecodingException;
|
||||||
import org.springframework.core.io.buffer.AbstractDataBufferAllocatingTestCase;
|
import org.springframework.core.io.buffer.AbstractDataBufferAllocatingTestCase;
|
||||||
import org.springframework.core.io.buffer.DataBuffer;
|
import org.springframework.core.io.buffer.DataBuffer;
|
||||||
|
|
||||||
import static java.util.Arrays.*;
|
import static java.util.Arrays.asList;
|
||||||
import static java.util.Collections.*;
|
import static java.util.Collections.singletonList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Arjen Poutsma
|
* @author Arjen Poutsma
|
||||||
|
@ -178,6 +178,19 @@ public class Jackson2TokenizerTests extends AbstractDataBufferAllocatingTestCase
|
||||||
testTokenize(asList("[1", ",2,", "3]"), asList("1", "2", "3"), true);
|
testTokenize(asList("[1", ",2,", "3]"), asList("1", "2", "3"), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void errorInStream() {
|
||||||
|
DataBuffer buffer = stringBuffer("{\"id\":1,\"name\":");
|
||||||
|
Flux<DataBuffer> source = Flux.just(buffer)
|
||||||
|
.concatWith(Flux.error(new RuntimeException()));
|
||||||
|
|
||||||
|
Flux<TokenBuffer> result = Jackson2Tokenizer.tokenize(source, this.jsonFactory, true);
|
||||||
|
|
||||||
|
StepVerifier.create(result)
|
||||||
|
.expectError(RuntimeException.class)
|
||||||
|
.verify();
|
||||||
|
}
|
||||||
|
|
||||||
@Test(expected = DecodingException.class) // SPR-16521
|
@Test(expected = DecodingException.class) // SPR-16521
|
||||||
public void jsonEOFExceptionIsWrappedAsDecodingError() {
|
public void jsonEOFExceptionIsWrappedAsDecodingError() {
|
||||||
Flux<DataBuffer> source = Flux.just(stringBuffer("{\"status\": \"noClosingQuote}"));
|
Flux<DataBuffer> source = Flux.just(stringBuffer("{\"status\": \"noClosingQuote}"));
|
||||||
|
|
Loading…
Reference in New Issue