package nl.nn.adapterframework.validation;
import nl.nn.adapterframework.configuration.ConfigurationException;
import nl.nn.adapterframework.core.PipeLineSessionBase;
import nl.nn.adapterframework.core.PipeRunException;
import nl.nn.adapterframework.pipes.XmlValidator;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collection;
/**
* @author Michiel Meeuwissen
*/
@RunWith(value = Parameterized.class)
public class AbstractXmlValidatorTest {
private Class<AbstractXmlValidator> implementation;
public AbstractXmlValidatorTest(Class<AbstractXmlValidator> implementation) {
this.implementation = implementation;
}
@Parameterized.Parameters
public static Collection<Object[]> data() {
Object[][] data = new Object[][]{
{XercesXmlValidator.class},
{JavaxXmlValidator.class}
};
return Arrays.asList(data);
}
@Test
public void straighforward() throws IllegalAccessException, InstantiationException, XmlValidatorException, IOException, PipeRunException, ConfigurationException {
AbstractXmlValidator instance = implementation.newInstance();
instance.setSchemasProvider(new SchemasProviderImpl("http://www.ing.com/testxmlns",
"/GetIntermediaryAgreementDetails/xsd/A_correct.xsd"));
instance.setIgnoreUnknownNamespaces(false);
instance.validate(getTestXml("/intermediaryagreementdetails.xml"), new PipeLineSessionBase(), "test");
}
@Test
public void addTargetNamespace() throws IllegalAccessException, InstantiationException, XmlValidatorException, IOException, PipeRunException, ConfigurationException {
AbstractXmlValidator instance = implementation.newInstance();
instance.setSchemasProvider(
new SchemasProviderImpl(
"http://www.ing.com/testxmlns",
"/GetIntermediaryAgreementDetails/xsd/A.xsd"));
instance.setAddNamespaceToSchema(true);
instance.setIgnoreUnknownNamespaces(false);
instance.validate(getTestXml("/intermediaryagreementdetails.xml"), new PipeLineSessionBase(), "test");
}
private String getTestXml(String testxml) throws IOException {
BufferedReader buf = new BufferedReader(new InputStreamReader(XmlValidator.class.getResourceAsStream(testxml)));
StringBuilder string = new StringBuilder();
String line = buf.readLine();
while (line != null) {
string.append(line);
line = buf.readLine();
}
return string.toString();
}
}