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