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;
+        }
+    }
 }

Reply via email to