public void TestFhirUri_ResourceIdOnly(FhirVersion fhirVersion, string serversBase, string resourceId) { // Prepare FhirUriFactory FhirUriFactory = GetFhirUriFactory(serversBase, new string[] { }); string RequestUrl = resourceId; //Act if (FhirUriFactory.TryParse(RequestUrl, fhirVersion, out IFhirUri? IFhirUri, out string ErrorMessage)) { //Assert if (IFhirUri is object) { if (resourceId.StartsWith('#')) { Assert.True(IFhirUri.IsContained); } else { Assert.False(IFhirUri.IsContained); } Assert.Equal(string.Empty, IFhirUri.ResourseName); Assert.False(IFhirUri.IsRelativeToServer); Assert.Equal(resourceId.TrimStart('#'), IFhirUri.ResourceId); Assert.Null(IFhirUri.UriPrimaryServiceRoot); Assert.False(IFhirUri.IsHistoryReferance); Assert.Equal(string.Empty, IFhirUri.VersionId); Assert.Null(IFhirUri.PrimaryServiceRootRemote); Assert.Equal(new Uri(serversBase), IFhirUri.PrimaryServiceRootServers); Assert.False(IFhirUri.IsCompartment); Assert.False(IFhirUri.ErrorInParseing); Assert.False(IFhirUri.IsMetaData); Assert.False(IFhirUri.IsOperation); Assert.False(IFhirUri.IsCompartment); Assert.False(IFhirUri.IsUrn); Assert.False(IFhirUri.IsFormDataSearch); Assert.Equal(RequestUrl, IFhirUri.OriginalString); Assert.Equal(string.Empty, IFhirUri.CompartmentalisedResourseName); Assert.Equal(fhirVersion, IFhirUri.FhirVersion); Assert.Equal(string.Empty, IFhirUri.OperationName); Assert.Null(IFhirUri.OperationType); Assert.Equal(string.Empty, IFhirUri.Query); Assert.Equal(string.Empty, IFhirUri.Urn); Assert.Null(IFhirUri.UrnType); Assert.Equal(string.Empty, IFhirUri.ParseErrorMessage); } } else { Assert.Equal("some error message", ErrorMessage); } }
public void TestFhirUri__urn_uuid_invalid(FhirVersion fhirVersion, string serversBase, string resourceName, string uuid) { // Prepare FhirUriFactory FhirUriFactory = GetFhirUriFactory(serversBase, new string[] { resourceName }); string RequestUrl = uuid; //Act if (FhirUriFactory.TryParse(RequestUrl, fhirVersion, out IFhirUri? IFhirUri, out string ErrorMessage)) { Assert.False(true); } else { Assert.True(!string.IsNullOrWhiteSpace(ErrorMessage)); Assert.Null(IFhirUri); } }
public void TestFhirUri_RubbishOnTheEnd(FhirVersion fhirVersion, string serversBase, string requestBase, string resourceName) { // Prepare FhirUriFactory FhirUriFactory = GetFhirUriFactory(serversBase, new string[] { resourceName }); string RequestUrl = $"{requestBase}/{resourceName}/10/Rubbish"; //Act if (FhirUriFactory.TryParse(RequestUrl, fhirVersion, out IFhirUri? IFhirUri, out string ErrorMessage)) { Assert.False(true); } else { Assert.True(!string.IsNullOrWhiteSpace(ErrorMessage)); Assert.Null(IFhirUri); } }
public void TestFhirUri_OperationResourceInstance(FhirVersion fhirVersion, string serversBase, string requestBase, string resourceName, string resourceId, string operationName, string query) { // Prepare FhirUriFactory FhirUriFactory = GetFhirUriFactory(serversBase, new string[] { resourceName }); string RequestUrl = $"{requestBase}/{resourceName}/{resourceId}/${operationName}?{query}"; //Act if (FhirUriFactory.TryParse(RequestUrl, fhirVersion, out IFhirUri? IFhirUri, out string ErrorMessage)) { //Assert if (IFhirUri is object) { Assert.Equal(operationName, IFhirUri.OperationName); Assert.Equal(OperationScope.Instance, IFhirUri.OperationType); Assert.Equal(resourceName, IFhirUri.ResourseName); Assert.Equal(resourceId, IFhirUri.ResourceId); Assert.False(IFhirUri.IsContained); Assert.True(IFhirUri.IsRelativeToServer); Assert.Equal(new Uri(serversBase), IFhirUri.UriPrimaryServiceRoot); Assert.False(IFhirUri.IsHistoryReferance); Assert.Equal(string.Empty, IFhirUri.VersionId); Assert.Null(IFhirUri.PrimaryServiceRootRemote); Assert.Equal(new Uri(serversBase), IFhirUri.PrimaryServiceRootServers); Assert.False(IFhirUri.IsCompartment); Assert.False(IFhirUri.ErrorInParseing); Assert.False(IFhirUri.IsMetaData); Assert.False(IFhirUri.IsCompartment); Assert.False(IFhirUri.IsUrn); Assert.False(IFhirUri.IsFormDataSearch); Assert.Equal(RequestUrl, IFhirUri.OriginalString); Assert.Equal(string.Empty, IFhirUri.CompartmentalisedResourseName); Assert.Equal(fhirVersion, IFhirUri.FhirVersion); Assert.Equal(query, IFhirUri.Query); Assert.Equal(string.Empty, IFhirUri.Urn); Assert.Null(IFhirUri.UrnType); Assert.Equal(string.Empty, IFhirUri.ParseErrorMessage); } } else { Assert.Equal("some error message", ErrorMessage); } }
public void TestFhirUriCanonical(FhirVersion fhirVersion, string resourceName, string resourceId, string CanonicalVersionId) { // Prepare FhirUriFactory FhirUriFactory = GetFhirUriFactory(TestData.BaseUrlServer, new string[] { resourceName }); string RequestUrl = $"{resourceName}/{resourceId}|{CanonicalVersionId}"; //Act if (FhirUriFactory.TryParse(RequestUrl, fhirVersion, out IFhirUri? IFhirUri, out string ErrorMessage)) { //Assert if (IFhirUri is object) { Assert.Equal(resourceName, IFhirUri.ResourseName); Assert.Equal(resourceId, IFhirUri.ResourceId); Assert.Equal(string.Empty, IFhirUri.VersionId); Assert.Equal(CanonicalVersionId, IFhirUri.CanonicalVersionId); Assert.Equal(new Uri(TestData.BaseUrlServer), IFhirUri.PrimaryServiceRootServers); Assert.False(IFhirUri.IsCompartment); Assert.False(IFhirUri.ErrorInParseing); Assert.False(IFhirUri.IsMetaData); Assert.False(IFhirUri.IsOperation); Assert.False(IFhirUri.IsCompartment); Assert.False(IFhirUri.IsUrn); Assert.False(IFhirUri.IsFormDataSearch); Assert.Equal(RequestUrl, IFhirUri.OriginalString); Assert.Equal(string.Empty, IFhirUri.CompartmentalisedResourseName); Assert.Equal(fhirVersion, IFhirUri.FhirVersion); Assert.Equal(string.Empty, IFhirUri.OperationName); Assert.Null(IFhirUri.OperationType); Assert.Equal(string.Empty, IFhirUri.Query); Assert.Equal(string.Empty, IFhirUri.Urn); Assert.Null(IFhirUri.UrnType); Assert.Equal(string.Empty, IFhirUri.ParseErrorMessage); } } else { Assert.Equal("some error message", ErrorMessage); } }
public void TestFhirUri_Compartment(FhirVersion fhirVersion, string serversBase, string requestBase, string resourceName, string resourceId, string compartmentName, string query) { // Prepare //hit: the resource is unknown because we do not pass it into the GetFhirUriFactory below, we only pass in the resourceName and not the compatmentName FhirUriFactory FhirUriFactory; if (compartmentName == "Unknown") { FhirUriFactory = GetFhirUriFactory(serversBase, new string[] { resourceName }); } else { FhirUriFactory = GetFhirUriFactory(serversBase, new string[] { resourceName, compartmentName }); } string RequestUrl; if (string.IsNullOrWhiteSpace(query)) { RequestUrl = $"{requestBase}/{resourceName}/{resourceId}/{compartmentName}"; } else { RequestUrl = $"{requestBase}/{resourceName}/{resourceId}/{compartmentName}?{query}"; } //Act if (FhirUriFactory.TryParse(RequestUrl, fhirVersion, out IFhirUri? IFhirUri, out string ErrorMessage)) { //Assert if (IFhirUri is object) { Assert.Equal(string.Empty, IFhirUri.OperationName); Assert.Null(IFhirUri.OperationType); Assert.Equal(resourceName, IFhirUri.ResourseName); Assert.Equal(resourceId, IFhirUri.ResourceId); Assert.False(IFhirUri.IsContained); Assert.True(IFhirUri.IsRelativeToServer); Assert.Equal(new Uri(serversBase), IFhirUri.UriPrimaryServiceRoot); Assert.False(IFhirUri.IsHistoryReferance); Assert.Equal(string.Empty, IFhirUri.VersionId); Assert.Null(IFhirUri.PrimaryServiceRootRemote); Assert.Equal(new Uri(serversBase), IFhirUri.PrimaryServiceRootServers); Assert.True(IFhirUri.IsCompartment); Assert.Equal(compartmentName, IFhirUri.CompartmentalisedResourseName); Assert.False(IFhirUri.ErrorInParseing); Assert.False(IFhirUri.IsMetaData); Assert.False(IFhirUri.IsUrn); Assert.False(IFhirUri.IsFormDataSearch); Assert.Equal(RequestUrl, IFhirUri.OriginalString); Assert.Equal(compartmentName, IFhirUri.CompartmentalisedResourseName); Assert.True(IFhirUri.IsCompartment); Assert.Equal(fhirVersion, IFhirUri.FhirVersion); Assert.Equal(string.Empty, IFhirUri.Urn); Assert.Null(IFhirUri.UrnType); Assert.Equal(string.Empty, IFhirUri.ParseErrorMessage); if (string.IsNullOrWhiteSpace(query)) { Assert.Equal(string.Empty, IFhirUri.Query); } else { Assert.Equal(query, IFhirUri.Query); } } } else { if (string.IsNullOrWhiteSpace(query)) { Assert.Equal("The URI has extra unknown content near the end of : 'Unknown'. The full URI was: 'http://base/stuff/Patient/10/Unknown'", ErrorMessage); } else { Assert.Equal("The URI has extra unknown content near the end of : 'Unknown'. The full URI was: 'http://base/stuff/Patient/10/Unknown?query_one=one, query_two=two'", ErrorMessage); } } }
public void TestFhirUri_ResourceNameValidForFhirVersion(FhirVersion fhirVersion, string serversBase, string resourceNameR4, string resourceNameStu3, string resourceId) { // Prepare Mock <IServiceBaseUrlConfi> IServiceBaseUrlMock = IServiceBaseUrl_MockFactory.Get(serversBase, serversBase); Mock <IR4ValidateResourceName> IR4ValidateResourceNameMock = IR4ValidateResourceName_MockFactory.Get(new string[] { resourceNameR4 }); Mock <IStu3ValidateResourceName> IStu3ValidateResourceNameMock = IStu3ValidateResourceName_MockFactory.Get(new string[] { resourceNameStu3 }); Mock <IValidateResourceNameFactory> IValidateResourceNameFactoryMock = IValidateResourceNameFactory_MockFactory.Get(IStu3ValidateResourceNameMock.Object, IR4ValidateResourceNameMock.Object); FhirUriFactory FhirUriFactory = new FhirUriFactory(IServiceBaseUrlMock.Object, IValidateResourceNameFactoryMock.Object); string RequestUrl; if (fhirVersion == FhirVersion.Stu3) { RequestUrl = $"{resourceNameStu3}/{resourceId}"; } else { RequestUrl = $"{resourceNameR4}/{resourceId}"; } //Act if (FhirUriFactory.TryParse(RequestUrl, fhirVersion, out IFhirUri? IFhirUri, out string ErrorMessage)) { //Assert if (IFhirUri is object) { if (fhirVersion == FhirVersion.Stu3) { Assert.Equal(resourceNameStu3, IFhirUri.ResourseName); } else { Assert.Equal(resourceNameR4, IFhirUri.ResourseName); } Assert.Equal(fhirVersion, IFhirUri.FhirVersion); Assert.False(IFhirUri.IsContained); Assert.Equal(resourceId.TrimStart('#'), IFhirUri.ResourceId); Assert.True(IFhirUri.IsRelativeToServer); Assert.Equal(new Uri(serversBase), IFhirUri.UriPrimaryServiceRoot); Assert.False(IFhirUri.IsHistoryReferance); Assert.Equal(string.Empty, IFhirUri.VersionId); Assert.Null(IFhirUri.PrimaryServiceRootRemote); Assert.Equal(new Uri(serversBase), IFhirUri.PrimaryServiceRootServers); Assert.False(IFhirUri.IsCompartment); Assert.False(IFhirUri.ErrorInParseing); Assert.False(IFhirUri.IsMetaData); Assert.False(IFhirUri.IsOperation); Assert.False(IFhirUri.IsCompartment); Assert.False(IFhirUri.IsUrn); Assert.False(IFhirUri.IsFormDataSearch); Assert.Equal(RequestUrl, IFhirUri.OriginalString); Assert.Equal(string.Empty, IFhirUri.CompartmentalisedResourseName); Assert.Equal(string.Empty, IFhirUri.OperationName); Assert.Null(IFhirUri.OperationType); Assert.Equal(string.Empty, IFhirUri.Query); Assert.Equal(string.Empty, IFhirUri.Urn); Assert.Null(IFhirUri.UrnType); Assert.Equal(string.Empty, IFhirUri.ParseErrorMessage); } else { Assert.Equal("some error message", ErrorMessage); } } }