Index: Ringtoets/Common/src/Ringtoets.Common.IO/Readers/CombinedXmlSchemaDefinition.cs =================================================================== diff -u -r0d6159f5ff86ecb8733595159267c32d68bd4bfb -r7683c48cab2de71c7e6e3960f43d491660a4b552 --- Ringtoets/Common/src/Ringtoets.Common.IO/Readers/CombinedXmlSchemaDefinition.cs (.../CombinedXmlSchemaDefinition.cs) (revision 0d6159f5ff86ecb8733595159267c32d68bd4bfb) +++ Ringtoets/Common/src/Ringtoets.Common.IO/Readers/CombinedXmlSchemaDefinition.cs (.../CombinedXmlSchemaDefinition.cs) (revision 7683c48cab2de71c7e6e3960f43d491660a4b552) @@ -26,6 +26,7 @@ using System.Net; using System.Text; using System.Xml; +using System.Xml.Linq; using System.Xml.Schema; namespace Ringtoets.Common.IO.Readers @@ -77,6 +78,16 @@ } /// + /// Validates the provided XML document based on the combined schema definition. + /// + /// The XML document to validate. + /// Thrown when the provided XML document does not match the combined schema definition. + public void Validate(XDocument document) + { + document.Validate(xmlSchemaSet, null); + } + + /// /// Check the provided schema definitions for not being null, empty or only containing white spaces. /// /// A string representing the main schema definition. Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/Readers/CombinedXmlSchemaDefinitionTest.cs =================================================================== diff -u -rc2e949a351b7f5d3d112a7e02d3baf8370bfb40b -r7683c48cab2de71c7e6e3960f43d491660a4b552 --- Ringtoets/Common/test/Ringtoets.Common.IO.Test/Readers/CombinedXmlSchemaDefinitionTest.cs (.../CombinedXmlSchemaDefinitionTest.cs) (revision c2e949a351b7f5d3d112a7e02d3baf8370bfb40b) +++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/Readers/CombinedXmlSchemaDefinitionTest.cs (.../CombinedXmlSchemaDefinitionTest.cs) (revision 7683c48cab2de71c7e6e3960f43d491660a4b552) @@ -23,6 +23,7 @@ using System.Collections.Generic; using System.IO; using System.Xml; +using System.Xml.Linq; using System.Xml.Schema; using Core.Common.TestUtil; using NUnit.Framework; @@ -200,6 +201,54 @@ Assert.DoesNotThrow(call); } + [Test] + public void Validate_ValidXmlDocument_DoesNotThrowException() + { + // Setup + string xmlFilePath = Path.Combine(testDirectoryPath, "validXmlDocument.xml"); + XDocument validXmlDocument = XDocument.Load(xmlFilePath, LoadOptions.PreserveWhitespace | LoadOptions.SetLineInfo | LoadOptions.SetBaseUri); + + var combinedXmlSchemaDefinition = new CombinedXmlSchemaDefinition(validMainSchemaDefinition, new Dictionary + { + { + "NestedSchemaDefinition1.xsd", validNestedSchemaDefinition1 + }, + { + "NestedSchemaDefinition2.xsd", validNestedSchemaDefinition2 + } + }); + + // Call + TestDelegate call = () => combinedXmlSchemaDefinition.Validate(validXmlDocument); + + // Assert + Assert.DoesNotThrow(call); + } + + [Test] + public void Validate_InvalidXmlDocument_ThrowXmlSchemaValidationException() + { + // Setup + string xmlFilePath = Path.Combine(testDirectoryPath, "invalidXmlDocument.xml"); + XDocument validXmlDocument = XDocument.Load(xmlFilePath, LoadOptions.PreserveWhitespace | LoadOptions.SetLineInfo | LoadOptions.SetBaseUri); + + var combinedXmlSchemaDefinition = new CombinedXmlSchemaDefinition(validMainSchemaDefinition, new Dictionary + { + { + "NestedSchemaDefinition1.xsd", validNestedSchemaDefinition1 + }, + { + "NestedSchemaDefinition2.xsd", validNestedSchemaDefinition2 + } + }); + + // Call + TestDelegate call = () => combinedXmlSchemaDefinition.Validate(validXmlDocument); + + // Assert + Assert.Throws(call); + } + public CombinedXmlSchemaDefinitionTest() { validMainSchemaDefinition = File.ReadAllText(Path.Combine(testDirectoryPath, "validMainSchemaDefinition.xsd")); Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/CombinedXmlSchemaDefinition/invalidXmlDocument.xml =================================================================== diff -u --- Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/CombinedXmlSchemaDefinition/invalidXmlDocument.xml (revision 0) +++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/CombinedXmlSchemaDefinition/invalidXmlDocument.xml (revision 7683c48cab2de71c7e6e3960f43d491660a4b552) @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/CombinedXmlSchemaDefinition/validXmlDocument.xml =================================================================== diff -u --- Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/CombinedXmlSchemaDefinition/validXmlDocument.xml (revision 0) +++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/CombinedXmlSchemaDefinition/validXmlDocument.xml (revision 7683c48cab2de71c7e6e3960f43d491660a4b552) @@ -0,0 +1,6 @@ + + + + Test + + \ No newline at end of file