Issue 99: Add a test with redefined !!binary tag
diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue99/YamlBase64Test.java b/src/test/java/org/yaml/snakeyaml/issues/issue99/YamlBase64Test.java
index cd77c54..c3f103e 100644
--- a/src/test/java/org/yaml/snakeyaml/issues/issue99/YamlBase64Test.java
+++ b/src/test/java/org/yaml/snakeyaml/issues/issue99/YamlBase64Test.java
@@ -26,6 +26,11 @@
import org.yaml.snakeyaml.Util;
import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.YamlDocument;
+import org.yaml.snakeyaml.constructor.AbstractConstruct;
+import org.yaml.snakeyaml.constructor.Constructor;
+import org.yaml.snakeyaml.nodes.Node;
+import org.yaml.snakeyaml.nodes.ScalarNode;
+import org.yaml.snakeyaml.nodes.Tag;
import biz.source_code.base64Coder.Base64Coder;
@@ -92,4 +97,33 @@
.getMessage());
}
}
+
+ @SuppressWarnings("unchecked")
+ public void testRedefineBinaryTag() throws IOException {
+ Yaml yaml = new Yaml(new SpecialContructor());
+ InputStream inputStream = YamlBase64Test.class
+ .getResourceAsStream("/issues/issue99-base64_literal.yaml");
+ Map<String, Object> bean = (Map<String, Object>) yaml.load(inputStream);
+ byte[] jpeg = (byte[]) bean.get("jpegPhoto");
+ checkBytes(jpeg);
+ }
+
+ /**
+ * Redefine the !!binary global tag in a way that it ignores all the white
+ * spaces
+ */
+ private class SpecialContructor extends Constructor {
+ public SpecialContructor() {
+ this.yamlConstructors.put(Tag.BINARY, new MyBinaryConstructor());
+ }
+
+ private class MyBinaryConstructor extends AbstractConstruct {
+ public Object construct(Node node) {
+ String contentWithNewLines = constructScalar((ScalarNode) node).toString();
+ String noNewLines = contentWithNewLines.replaceAll("\\s", "");
+ byte[] decoded = Base64Coder.decode(noNewLines.toCharArray());
+ return decoded;
+ }
+ }
+ }
}
diff --git a/src/test/resources/issues/issue99-base64_literal.yaml b/src/test/resources/issues/issue99-base64_literal.yaml
index dc03a87..d6f1c6a 100644
--- a/src/test/resources/issues/issue99-base64_literal.yaml
+++ b/src/test/resources/issues/issue99-base64_literal.yaml
@@ -1,4 +1,4 @@
-jpegPhoto: !!binary |-
+jpegPhoto: !!binary |
/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8L
CwkMEQ8SEhEPERETFhwXExQaFRERGCEYGh0dHx8fExciJCIeJBweHx7/2wBDAQUF
BQcGBw4ICA4eFBEUHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4e