public void ResolveByCanonicalFromZip() { var extDefn = source.ResolveByCanonicalUri("http://hl7.org/fhir/StructureDefinition/data-absent-reason"); Assert.IsNotNull(extDefn); Assert.IsInstanceOfType(extDefn, typeof(StructureDefinition)); extDefn = source.ResolveByCanonicalUri("http://hl7.org/fhir/StructureDefinition/Patient"); Assert.IsNotNull(extDefn); Assert.IsInstanceOfType(extDefn, typeof(StructureDefinition)); extDefn = source.ResolveByCanonicalUri("http://hl7.org/fhir/StructureDefinition/Patient"); Assert.IsNotNull(extDefn); Assert.IsInstanceOfType(extDefn, typeof(StructureDefinition)); var dirSource = new DirectorySource(@"TestData\validation"); extDefn = dirSource.ResolveByCanonicalUri("http://example.com/StructureDefinition/patient-telecom-reslice-ek|1.0"); Assert.ThrowsException <ArgumentException>(() => dirSource.ResolveByCanonicalUri("http://example.com/StructureDefinition/patient-telecom-reslice-ek|1.0|")); }
public void TestCanonicalUrlConflicts() { //const string srcFileName = "extension-definitions.xml"; const string dupFileName = "diagnosticorder-reason-duplicate"; const string url = "http://hl7.org/fhir/StructureDefinition/diagnosticorder-reason"; var za = ZipSource.CreateValidationSource(); // Try to find a core extension var ext = za.ResolveByCanonicalUri(url); Assert.IsNotNull(ext); Assert.IsTrue(ext is StructureDefinition); // Save back to disk to create a conflicting duplicate var b = new Bundle(); b.AddResourceEntry(ext, url); var xml = new FhirXmlSerializer().SerializeToString(b); var filePath = Path.Combine(DirectorySource.SpecificationDirectory, dupFileName) + ".xml"; var filePath2 = Path.Combine(DirectorySource.SpecificationDirectory, dupFileName) + "2.xml"; File.WriteAllText(filePath, xml); File.WriteAllText(filePath2, xml); bool conflictException = false; try { var fa = new DirectorySource(); var res = fa.ResolveByCanonicalUri(url); } catch (ResolvingConflictException ex) { Debug.WriteLine("{0}:\r\n{1}", ex.GetType().Name, ex.Message); Assert.IsNotNull(ex.Conflicts); Assert.AreEqual(1, ex.Conflicts.Length); var conflict = ex.Conflicts[0]; Assert.AreEqual(url, conflict.Identifier); Assert.IsTrue(conflict.Origins.Contains(filePath)); Assert.IsTrue(conflict.Origins.Contains(filePath2)); conflictException = true; } finally { try { File.Delete(filePath); } catch { } File.Delete(filePath2); } Assert.IsTrue(conflictException); }