Repository: johnzon Updated Branches: refs/heads/master eb93b91a5 -> a9b26270a
JOHNZON-164 add a unit test for JsonB throwing JsonbException on wrong data Project: http://git-wip-us.apache.org/repos/asf/johnzon/repo Commit: http://git-wip-us.apache.org/repos/asf/johnzon/commit/df261923 Tree: http://git-wip-us.apache.org/repos/asf/johnzon/tree/df261923 Diff: http://git-wip-us.apache.org/repos/asf/johnzon/diff/df261923 Branch: refs/heads/master Commit: df2619239419ceae08db066e3853ef963987f0d0 Parents: eb93b91 Author: Mark Struberg <[email protected]> Authored: Wed Mar 28 18:57:08 2018 +0200 Committer: Mark Struberg <[email protected]> Committed: Wed Mar 28 18:57:08 2018 +0200 ---------------------------------------------------------------------- .../org/apache/johnzon/jsonb/JsonbReadTest.java | 34 ++++++++++++++++++++ 1 file changed, 34 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/johnzon/blob/df261923/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/JsonbReadTest.java ---------------------------------------------------------------------- diff --git a/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/JsonbReadTest.java b/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/JsonbReadTest.java index c3d10b0..d8e2d9d 100644 --- a/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/JsonbReadTest.java +++ b/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/JsonbReadTest.java @@ -20,14 +20,20 @@ package org.apache.johnzon.jsonb; import org.junit.Test; +import javax.json.Json; +import javax.json.bind.JsonbConfig; +import javax.json.bind.JsonbException; import javax.json.bind.annotation.JsonbDateFormat; import javax.json.bind.annotation.JsonbProperty; +import javax.json.bind.config.BinaryDataStrategy; import javax.json.bind.spi.JsonbProvider; import java.io.ByteArrayInputStream; import java.io.StringReader; +import java.nio.charset.StandardCharsets; import java.time.LocalDate; import java.time.format.DateTimeFormatter; +import java.util.Base64; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; @@ -94,6 +100,22 @@ public class JsonbReadTest { assertEquals("test", JsonbProvider.provider().create().build().fromJson(new StringReader(json), SimpleProperty.class).value); } + @Test + public void testValidBase64() { + String json = "{\"blob\":\"" + Base64.getEncoder().encodeToString("test".getBytes(StandardCharsets.UTF_8)) + "\"}"; + JsonbConfig cfg = new JsonbConfig() + .withBinaryDataStrategy(BinaryDataStrategy.BASE_64); + SimpleBinaryDto simpleBinaryDto = JsonbProvider.provider().create().withConfig(cfg).build().fromJson(new StringReader(json), SimpleBinaryDto.class); + assertEquals("test", new String(simpleBinaryDto.getBlob(), StandardCharsets.UTF_8)); + } + + @Test(expected = JsonbException.class) + public void testInvalidBase64() { + String jsonWithIllegalBase64 = "{\"blob\":\"dGVXz@dA==\"}"; + JsonbConfig cfg = new JsonbConfig() + .withBinaryDataStrategy(BinaryDataStrategy.BASE_64); + SimpleBinaryDto simpleBinaryDto = JsonbProvider.provider().create().withConfig(cfg).build().fromJson(new StringReader(jsonWithIllegalBase64), SimpleBinaryDto.class); + } public static class Simple { @@ -147,4 +169,16 @@ public class JsonbReadTest { this.date = value; } } + + public static class SimpleBinaryDto { + private byte[] blob; + + public byte[] getBlob() { + return blob; + } + + public void setBlob(byte[] blob) { + this.blob = blob; + } + } }
