diff options
author | Feng Xiao <xfxyjwf@gmail.com> | 2017-03-10 15:08:51 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-10 15:08:51 -0800 |
commit | e11cd3ee6edd102333a16fcca49de5de3c0bc0e2 (patch) | |
tree | 795f3152b6c5902a33e9d4f1523081fb34874fcc /java/util/src/test | |
parent | 92064a40ceb2ecdfed42f441b9c46c9c9fa00d34 (diff) | |
parent | 075475f8341393e78d8cd664f8500f6397ee9941 (diff) | |
download | protobuf-e11cd3ee6edd102333a16fcca49de5de3c0bc0e2.tar.gz protobuf-e11cd3ee6edd102333a16fcca49de5de3c0bc0e2.tar.bz2 protobuf-e11cd3ee6edd102333a16fcca49de5de3c0bc0e2.zip |
Merge pull request #2818 from xfxyjwf/i1470
Don't expose gson exceptions in JsonFormat.
Diffstat (limited to 'java/util/src/test')
-rw-r--r-- | java/util/src/test/java/com/google/protobuf/util/JsonFormatTest.java | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/java/util/src/test/java/com/google/protobuf/util/JsonFormatTest.java b/java/util/src/test/java/com/google/protobuf/util/JsonFormatTest.java index 883706c1..de02c117 100644 --- a/java/util/src/test/java/com/google/protobuf/util/JsonFormatTest.java +++ b/java/util/src/test/java/com/google/protobuf/util/JsonFormatTest.java @@ -62,6 +62,10 @@ import com.google.protobuf.util.JsonTestProto.TestStruct; import com.google.protobuf.util.JsonTestProto.TestTimestamp; import com.google.protobuf.util.JsonTestProto.TestWrappers; import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.io.StringReader; import java.math.BigDecimal; import java.math.BigInteger; import java.util.HashMap; @@ -1417,4 +1421,34 @@ public class JsonFormatTest extends TestCase { // Expected. } } + + // Test that we are not leaking out JSON exceptions. + public void testJsonException() throws Exception { + InputStream throwingInputStream = new InputStream() { + public int read() throws IOException { + throw new IOException("12345"); + } + }; + InputStreamReader throwingReader = new InputStreamReader(throwingInputStream); + // When the underlying reader throws IOException, JsonFormat should forward + // through this IOException. + try { + TestAllTypes.Builder builder = TestAllTypes.newBuilder(); + JsonFormat.parser().merge(throwingReader, builder); + fail("Exception is expected."); + } catch (IOException e) { + assertEquals("12345", e.getMessage()); + } + + Reader invalidJsonReader = new StringReader("{ xxx - yyy }"); + // When the JSON parser throws parser exceptions, JsonFormat should turn + // that into InvalidProtocolBufferException. + try { + TestAllTypes.Builder builder = TestAllTypes.newBuilder(); + JsonFormat.parser().merge(invalidJsonReader, builder); + fail("Exception is expected."); + } catch (InvalidProtocolBufferException e) { + // Expected. + } + } } |