From 9b0f53f3c13b6da1bc0ff1d3992d952dfa629ffb Mon Sep 17 00:00:00 2001 From: Tatu Saloranta Date: Tue, 4 Oct 2022 16:03:22 -0700 Subject: [PATCH] Enable test wrt #337 in master now that snakeyaml-engine supports limits too --- .../yaml/deser/StreamingParseTest.java | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/yaml/src/test/java/tools/jackson/dataformat/yaml/deser/StreamingParseTest.java b/yaml/src/test/java/tools/jackson/dataformat/yaml/deser/StreamingParseTest.java index 959abad7..3a5e326c 100644 --- a/yaml/src/test/java/tools/jackson/dataformat/yaml/deser/StreamingParseTest.java +++ b/yaml/src/test/java/tools/jackson/dataformat/yaml/deser/StreamingParseTest.java @@ -3,11 +3,14 @@ import java.io.StringWriter; import java.math.BigInteger; +import org.snakeyaml.engine.v2.api.LoadSettings; + import tools.jackson.core.JsonLocation; import tools.jackson.core.JsonParser; import tools.jackson.core.JsonToken; - +import tools.jackson.dataformat.yaml.JacksonYAMLParseException; import tools.jackson.dataformat.yaml.ModuleTestBase; +import tools.jackson.dataformat.yaml.YAMLFactory; import tools.jackson.dataformat.yaml.YAMLMapper; import tools.jackson.dataformat.yaml.YAMLParser; @@ -602,4 +605,32 @@ public void testTimeLikeValues() throws Exception assertNull(p.nextToken()); p.close(); } + + // [dataformats-text#337]: different setting in 3.0 than 2.x + public void testYamlParseFailsWhenCodePointLimitVerySmall() throws Exception + { + final String YAML = "---\n" + +"content:\n" + +" uri: \"http://javaone.com/keynote.mpg\"\n" + +" title: \"Javaone Keynote\"\n" + +" width: 640\n" + +" height: 480\n" + +" persons:\n" + +" - \"Foo Bar\"\n" + +" - \"Max Power\"\n" + ; + LoadSettings loadSettings = LoadSettings.builder() + .setCodePointLimit(5) //5 bytes + .build(); + YAMLFactory yamlFactory = YAMLFactory.builder() + .loadSettings(loadSettings) + .build(); + YAMLMapper mapper = new YAMLMapper(yamlFactory); + try (JsonParser p = mapper.createParser(YAML)) { + assertToken(JsonToken.START_OBJECT, p.nextToken()); + fail("expected to fail by now"); + } catch (JacksonYAMLParseException e) { + assertTrue(e.getMessage().startsWith("The incoming YAML document exceeds the limit: 5 code points.")); + } + } }