From ea3be2a42b2560dca35ea694c46e65a87cd9058a Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <markus.quaritsch@tugraz.at> Date: Thu, 27 Jun 2019 18:37:05 +0200 Subject: [PATCH] adding testcase for checking hashes in reports --- .../Integration/XMLReportTest.cs | 49 +++++++++++++++++++ VectoCore/VectoCoreTest/VectoCoreTest.csproj | 4 ++ 2 files changed, 53 insertions(+) diff --git a/VectoCore/VectoCoreTest/Integration/XMLReportTest.cs b/VectoCore/VectoCoreTest/Integration/XMLReportTest.cs index 6d45954ac2..5ae0634b3d 100644 --- a/VectoCore/VectoCoreTest/Integration/XMLReportTest.cs +++ b/VectoCore/VectoCoreTest/Integration/XMLReportTest.cs @@ -37,6 +37,7 @@ using System.Xml.Linq; using System.Xml.XPath; using Ninject; using NUnit.Framework; +using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; @@ -49,6 +50,7 @@ using TUGraz.VectoCore.OutputData.FileIO; using TUGraz.VectoCore.OutputData.XML; using TUGraz.VectoCore.Tests.XML; using TUGraz.VectoCore.Utils; +using TUGraz.VectoHashing; using XmlDocumentType = TUGraz.VectoCore.Utils.XmlDocumentType; @@ -235,5 +237,52 @@ namespace TUGraz.VectoCore.Tests.Integration } } } + + + [TestCase] + public void TestXMLReportCorrectHashes() + { + var jobfile = @"Testdata\XML\XMLReaderDeclaration\vecto_vehicle-sample.xml"; + var dataProvider = xmlInputReader.CreateDeclaration(jobfile); + var writer = new FileOutputWriter(jobfile); + var xmlReport = new XMLDeclarationReport(writer); + var sumData = new SummaryDataContainer(writer); + var jobContainer = new JobContainer(sumData); + + if (File.Exists(writer.SumFileName)) { + File.Delete(writer.SumFileName); + } + + var runsFactory = new SimulatorFactory(ExecutionMode.Declaration, dataProvider, writer, xmlReport) { + WriteModalResults = false, + Validate = false, + }; + jobContainer.AddRuns(runsFactory); + + // no need to run the simulation, we only check whether the meta-data is correct, no results are considered + //jobContainer.Execute(); + //jobContainer.WaitFinished(); + xmlReport.DoWriteReport(); + + + var inputHash = VectoHash.Load(jobfile); + + var mrfDigestData = new DigestData(xmlReport.FullReport.Document.XPathSelectElement("//*[local-name()='InputDataSignature']")); + var mrfInputDigest = inputHash.ComputeHash(mrfDigestData.CanonicalizationMethods, mrfDigestData.DigestMethod); + + Assert.AreEqual(mrfInputDigest, mrfDigestData.DigestValue); + + var cifDigestData = new DigestData(xmlReport.CustomerReport.Document.XPathSelectElement("//*[local-name()='InputDataSignature']")); + var cifInputDigest = inputHash.ComputeHash(cifDigestData.CanonicalizationMethods, cifDigestData.DigestMethod); + + Assert.AreEqual(cifInputDigest, cifDigestData.DigestValue); + + var mrfHash = VectoHash.Load(writer.XMLFullReportName); + var mrfCifDigestData = new DigestData(xmlReport.CustomerReport.Document.XPathSelectElement("//*[local-name()='ResultDataSignature']")); + var mrfCifDigest = mrfHash.ComputeHash(mrfCifDigestData.CanonicalizationMethods, mrfCifDigestData.DigestMethod); + + Assert.AreEqual(mrfCifDigest, mrfCifDigestData.DigestValue); + + } } } diff --git a/VectoCore/VectoCoreTest/VectoCoreTest.csproj b/VectoCore/VectoCoreTest/VectoCoreTest.csproj index 2bccef5ae2..c986de6dbe 100644 --- a/VectoCore/VectoCoreTest/VectoCoreTest.csproj +++ b/VectoCore/VectoCoreTest/VectoCoreTest.csproj @@ -209,6 +209,10 @@ <Project>{79a066ad-69a9-4223-90f6-6ed5d2d084f4}</Project> <Name>VectoCommon</Name> </ProjectReference> + <ProjectReference Include="..\..\VectoCommon\VectoHashing\VectoHashing.csproj"> + <Project>{B673E12F-D323-4C4C-8805-9915B2C72D3D}</Project> + <Name>VectoHashing</Name> + </ProjectReference> <ProjectReference Include="..\..\VECTO\VECTO.vbproj"> <Project>{AAC0F132-0A9F-45B3-B682-77AC9B24B352}</Project> <Name>VECTO</Name> -- GitLab