package io.dropwizard.configuration; import static org.assertj.core.api.Assertions.assertThat; import io.dropwizard.jackson.Jackson; public class YamlConfigurationFactoryTest extends BaseConfigurationFactoryTest { @Override public void setUp() throws Exception { this.factory = new YamlConfigurationFactory<>(Example.class, validator, Jackson.newObjectMapper(), "dw"); this.malformedFile = resourceFileName("factory-test-malformed.yml"); this.emptyFile = resourceFileName("factory-test-empty.yml"); this.invalidFile = resourceFileName("factory-test-invalid.yml"); this.validFile = resourceFileName("factory-test-valid.yml"); this.typoFile = resourceFileName("factory-test-typo.yml"); this.wrongTypeFile = resourceFileName("factory-test-wrong-type.yml"); this.malformedAdvancedFile = resourceFileName("factory-test-malformed-advanced.yml"); } @Override public void throwsAnExceptionOnMalformedFiles() throws Exception { try { super.throwsAnExceptionOnMalformedFiles(); } catch (ConfigurationParsingException e) { assertThat(e) .hasMessageContaining(" * Failed to parse configuration; Can not construct instance of io.dropwizard.configuration.BaseConfigurationFactoryTest$Example"); } } @Override public void printsDetailedInformationOnMalformedContent() throws Exception { try { super.printsDetailedInformationOnMalformedContent(); } catch (Throwable t) { assertThat(t).hasMessageContaining(String.format( "%s has an error:%n" + " * Malformed YAML at line: 3, column: 22; while parsing a flow sequence\n" + " in 'reader', line 2, column 7:\n" + " type: [ coder,wizard\n" + " ^\n" + "expected ',' or ']', but got StreamEnd\n" + " in 'reader', line 2, column 21:\n" + " wizard\n" + " ^", malformedAdvancedFile.getName())); } } }