Index: Ringtoets/Piping/src/Ringtoets.Piping.IO/Readers/PipingConfigurationReader.cs
===================================================================
diff -u -refdfbe3c54d3743aa50b0fc7be73e417638f2732 -r14bc51c4c374a77f6e5b7e4f707eb0f412bb668a
--- Ringtoets/Piping/src/Ringtoets.Piping.IO/Readers/PipingConfigurationReader.cs (.../PipingConfigurationReader.cs) (revision efdfbe3c54d3743aa50b0fc7be73e417638f2732)
+++ Ringtoets/Piping/src/Ringtoets.Piping.IO/Readers/PipingConfigurationReader.cs (.../PipingConfigurationReader.cs) (revision 14bc51c4c374a77f6e5b7e4f707eb0f412bb668a)
@@ -60,7 +60,7 @@
XDocument xmlDocument = LoadDocument(xmlFilePath);
- ValidateToSchema(xmlDocument);
+ ValidateToSchema(xmlDocument, xmlFilePath);
}
///
@@ -112,18 +112,20 @@
/// Validates the provided XML document based on a predefined XML Schema Definition (XSD).
///
/// The XML document to validate.
+ /// The file path the XML document is loaded from.
/// Thrown when the provided XML document does not match the predefined XML Schema Definition (XSD).
- private static void ValidateToSchema(XDocument document)
+ private static void ValidateToSchema(XDocument document, string xmlFilePath)
{
XmlSchemaSet schema = LoadXmlSchema();
try
{
document.Validate(schema, null);
}
- catch (XmlSchemaValidationException e)
+ catch (XmlSchemaValidationException exception)
{
- throw new CriticalFileReadException(Resources.PipingConfigurationReader_Configuration_contains_no_valid_xml, e);
+ string message = new FileReaderErrorMessageBuilder(xmlFilePath).Build(Resources.PipingConfigurationReader_Configuration_contains_no_valid_xml);
+ throw new CriticalFileReadException(message, exception);
}
}
Index: Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Readers/PipingConfigurationReaderTest.cs
===================================================================
diff -u -r808d8de82712c31f26cf21ea82f849d7bb728caa -r14bc51c4c374a77f6e5b7e4f707eb0f412bb668a
--- Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Readers/PipingConfigurationReaderTest.cs (.../PipingConfigurationReaderTest.cs) (revision 808d8de82712c31f26cf21ea82f849d7bb728caa)
+++ Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Readers/PipingConfigurationReaderTest.cs (.../PipingConfigurationReaderTest.cs) (revision 14bc51c4c374a77f6e5b7e4f707eb0f412bb668a)
@@ -22,6 +22,7 @@
using System;
using System.IO;
using System.Xml;
+using System.Xml.Schema;
using Core.Common.IO.Exceptions;
using Core.Common.TestUtil;
using NUnit.Framework;
@@ -132,5 +133,23 @@
Assert.IsInstanceOf(exception.InnerException);
}
}
+
+ [Test]
+ [TestCase("invalidNoItems.xml")]
+ [TestCase("invalidFolderWithoutName.xml")]
+ public void Constructor_FileInvalidBasedOnSchemaDefinition_ThrowCriticalFileReadException(string fileName)
+ {
+ // Setup
+ string filePath = Path.Combine(testDirectoryPath, fileName);
+
+ // Call
+ TestDelegate call = () => new PipingConfigurationReader(filePath);
+
+ // Assert
+ string expectedMessage = $"Fout bij het lezen van bestand '{filePath}': het XML-document dat de configuratie voor de berekeningen beschrijft is niet geldig.";
+ var exception = Assert.Throws(call);
+ Assert.AreEqual(expectedMessage, exception.Message);
+ Assert.IsInstanceOf(exception.InnerException);
+ }
}
}
\ No newline at end of file
Index: Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/test-data/PipingConfigurationReader/invalidFolderWithoutName.xml
===================================================================
diff -u
--- Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/test-data/PipingConfigurationReader/invalidFolderWithoutName.xml (revision 0)
+++ Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/test-data/PipingConfigurationReader/invalidFolderWithoutName.xml (revision 14bc51c4c374a77f6e5b7e4f707eb0f412bb668a)
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
Index: Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/test-data/PipingConfigurationReader/invalidNoItems.xml
===================================================================
diff -u
--- Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/test-data/PipingConfigurationReader/invalidNoItems.xml (revision 0)
+++ Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/test-data/PipingConfigurationReader/invalidNoItems.xml (revision 14bc51c4c374a77f6e5b7e4f707eb0f412bb668a)
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file