RequestPayloadOnExceptionTest.java
package com.fasterxml.jackson.core.json;
import org.junit.jupiter.api.Test;
import com.fasterxml.jackson.core.*;
import static org.junit.jupiter.api.Assertions.*;
class RequestPayloadOnExceptionTest extends JUnit5TestBase
{
/**
* Tests for Request payload data (bytes) on parsing error
*/
@Test
void requestPayloadAsBytesOnParseException() throws Exception {
requestPayloadAsBytesOnParseExceptionInternal(true, "nul");
requestPayloadAsBytesOnParseExceptionInternal(false, "nul");
}
/**
* Tests for Request payload data (String) on parsing error
*/
@Test
void requestPayloadAsStringOnParseException() throws Exception {
requestPayloadAsStringOnParseExceptionInternal(true, "nul");
requestPayloadAsStringOnParseExceptionInternal(false, "nul");
}
/**
* Tests for Raw Request payload data on parsing error
*/
@Test
void rawRequestPayloadOnParseException() throws Exception {
rawRequestPayloadOnParseExceptionInternal(true, "nul");
rawRequestPayloadOnParseExceptionInternal(false, "nul");
}
/**
* Tests for no Request payload data on parsing error
*/
@Test
void noRequestPayloadOnParseException() throws Exception {
noRequestPayloadOnParseExceptionInternal(true, "nul");
noRequestPayloadOnParseExceptionInternal(false, "nul");
}
/**
* Tests for Request payload data which is null
*/
@Test
void nullRequestPayloadOnParseException() throws Exception {
nullRequestPayloadOnParseExceptionInternal(true, "nul");
nullRequestPayloadOnParseExceptionInternal(false, "nul");
}
/**
* Tests for null Charset in Request payload data
*/
@Test
void nullCharsetOnParseException() throws Exception {
nullCharsetOnParseExceptionInternal(true, "nul");
nullCharsetOnParseExceptionInternal(false, "nul");
}
/*
* *******************Private Methods*************************
*/
private void requestPayloadAsBytesOnParseExceptionInternal(boolean isStream, String value) throws Exception {
final String doc = "{ \"key1\" : " + value + " }";
JsonParser jp = isStream ? createParserUsingStream(doc, "UTF-8") : createParserUsingReader(doc);
jp.setRequestPayloadOnError(doc.getBytes(), "UTF-8");
assertToken(JsonToken.START_OBJECT, jp.nextToken());
try {
jp.nextToken();
fail("Expecting parsing exception");
} catch (JsonParseException ex) {
assertEquals(doc, ex.getRequestPayloadAsString(), "Request payload data should match");
assertTrue(ex.getMessage().contains("Request payload : " + doc), "Message contains request body");
}
jp.close();
}
private void requestPayloadAsStringOnParseExceptionInternal(boolean isStream, String value) throws Exception {
final String doc = "{ \"key1\" : " + value + " }";
JsonParser jp = isStream ? createParserUsingStream(doc, "UTF-8") : createParserUsingReader(doc);
jp.setRequestPayloadOnError(doc);
assertToken(JsonToken.START_OBJECT, jp.nextToken());
try {
jp.nextToken();
fail("Expecting parsing exception");
} catch (JsonParseException ex) {
assertEquals(doc, ex.getRequestPayloadAsString(), "Request payload data should match");
assertTrue(ex.getMessage().contains("Request payload : " + doc), "Message contains request body");
}
jp.close();
}
private void rawRequestPayloadOnParseExceptionInternal(boolean isStream, String value) throws Exception {
final String doc = "{ \"key1\" : " + value + " }";
JsonParser jp = isStream ? createParserUsingStream(doc, "UTF-8") : createParserUsingReader(doc);
jp.setRequestPayloadOnError(doc.getBytes(), "UTF-8");
assertToken(JsonToken.START_OBJECT, jp.nextToken());
try {
jp.nextToken();
fail("Expecting parsing exception");
} catch (JsonParseException ex) {
assertTrue(((byte[]) ex.getRequestPayload().getRawPayload()).length > 0);
assertTrue(ex.getMessage().contains("Request payload : " + doc), "Message contains request body");
}
jp.close();
}
private void noRequestPayloadOnParseExceptionInternal(boolean isStream, String value) throws Exception {
final String doc = "{ \"key1\" : " + value + " }";
JsonParser jp = isStream ? createParserUsingStream(doc, "UTF-8") : createParserUsingReader(doc);
assertToken(JsonToken.START_OBJECT, jp.nextToken());
try {
jp.nextToken();
fail("Expecting parsing exception");
} catch (JsonParseException ex) {
assertNull(ex.getRequestPayload(), "Request payload data should be null");
}
jp.close();
}
private void nullRequestPayloadOnParseExceptionInternal(boolean isStream, String value) throws Exception {
final String doc = "{ \"key1\" : " + value + " }";
JsonParser jp = isStream ? createParserUsingStream(doc, "UTF-8") : createParserUsingReader(doc);
jp.setRequestPayloadOnError(null, "UTF-8");
assertToken(JsonToken.START_OBJECT, jp.nextToken());
try {
jp.nextToken();
fail("Expecting parsing exception");
} catch (JsonParseException ex) {
assertNull(ex.getRequestPayload(), "Request payload data should be null");
}
jp.close();
}
private void nullCharsetOnParseExceptionInternal(boolean isStream, String value) throws Exception {
final String doc = "{ \"key1\" : " + value + " }";
JsonParser jp = isStream ? createParserUsingStream(doc, "UTF-8") : createParserUsingReader(doc);
jp.setRequestPayloadOnError(doc.getBytes(), "UTF-8");
assertToken(JsonToken.START_OBJECT, jp.nextToken());
try {
jp.nextToken();
fail("Expecting parsing exception");
} catch (JsonParseException ex) {
assertEquals(doc, ex.getRequestPayloadAsString(), "Request payload data should match");
assertTrue(ex.getMessage().contains("Request payload : " + doc), "Message contains request body");
}
jp.close();
}
}