From e7675a0630334d39086521eb79c4236b09ca75d9 Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Sat, 18 Jan 2014 22:46:06 +0000 Subject: [PATCH] Add unit tests for YAML parsing errors Test for gh-235 --- .../boot/config/YamlProcessorTests.java | 19 +++++++++++++++++++ .../YamlPropertiesFactoryBeanTests.java | 16 ++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/spring-boot/src/test/java/org/springframework/boot/config/YamlProcessorTests.java b/spring-boot/src/test/java/org/springframework/boot/config/YamlProcessorTests.java index ea3570f6b4..e52546900f 100644 --- a/spring-boot/src/test/java/org/springframework/boot/config/YamlProcessorTests.java +++ b/spring-boot/src/test/java/org/springframework/boot/config/YamlProcessorTests.java @@ -18,10 +18,13 @@ package org.springframework.boot.config; import java.util.Map; import java.util.Properties; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.springframework.boot.config.YamlProcessor.MatchCallback; import org.springframework.core.io.ByteArrayResource; import org.springframework.core.io.Resource; +import org.yaml.snakeyaml.scanner.ScannerException; import static org.junit.Assert.assertEquals; @@ -34,6 +37,9 @@ public class YamlProcessorTests { private YamlProcessor processor = new YamlProcessor(); + @Rule + public ExpectedException exception = ExpectedException.none(); + @Test public void arrayConvertedToIndexedBeanReference() { this.processor.setResources(new Resource[] { new ByteArrayResource( @@ -49,6 +55,19 @@ public class YamlProcessorTests { }); } + @Test + public void testBadResource() throws Exception { + this.processor.setResources(new Resource[] { new ByteArrayResource( + "foo: bar\ncd\nspam:\n foo: baz".getBytes()) }); + this.exception.expect(ScannerException.class); + this.exception.expectMessage("line 3, column 1"); + this.processor.process(new MatchCallback() { + @Override + public void process(Properties properties, Map map) { + } + }); + } + @Test public void mapConvertedToIndexedBeanReference() { this.processor.setResources(new Resource[] { new ByteArrayResource( diff --git a/spring-boot/src/test/java/org/springframework/boot/config/YamlPropertiesFactoryBeanTests.java b/spring-boot/src/test/java/org/springframework/boot/config/YamlPropertiesFactoryBeanTests.java index c7bba8ac45..94f255b639 100644 --- a/spring-boot/src/test/java/org/springframework/boot/config/YamlPropertiesFactoryBeanTests.java +++ b/spring-boot/src/test/java/org/springframework/boot/config/YamlPropertiesFactoryBeanTests.java @@ -21,7 +21,9 @@ import java.util.Map; import java.util.Properties; import org.junit.Ignore; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.springframework.boot.config.YamlProcessor.DocumentMatcher; import org.springframework.boot.config.YamlProcessor.MatchStatus; import org.springframework.boot.config.YamlProcessor.ResolutionMethod; @@ -29,6 +31,7 @@ import org.springframework.core.io.ByteArrayResource; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.scanner.ScannerException; import static org.junit.Assert.assertEquals; @@ -39,6 +42,9 @@ import static org.junit.Assert.assertEquals; */ public class YamlPropertiesFactoryBeanTests { + @Rule + public ExpectedException exception = ExpectedException.none(); + @Test public void testLoadResource() throws Exception { YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean(); @@ -49,6 +55,16 @@ public class YamlPropertiesFactoryBeanTests { assertEquals("baz", properties.get("spam.foo")); } + @Test + public void testBadResource() throws Exception { + YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean(); + factory.setResources(new Resource[] { new ByteArrayResource( + "foo: bar\ncd\nspam:\n foo: baz".getBytes()) }); + this.exception.expect(ScannerException.class); + this.exception.expectMessage("line 3, column 1"); + factory.getObject(); + } + @Test public void testLoadResourcesWithOverride() throws Exception { YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean();