public void GivenImportRequestInParamtersFormat_WhenConvert_ThenImportRequestShouldBeReturned() { ImportRequest input = new ImportRequest(); input.InputFormat = "test"; input.Force = true; input.Mode = "test"; input.InputSource = new Uri("http://dummy"); input.Input = new List <InputResource>() { new InputResource() { Etag = "etag", Type = "type", Url = new Uri("http://dummy/resource") } }; input.StorageDetail = new ImportRequestStorageDetail() { Type = "blob" }; ImportRequest output = input.ToParameters().ExtractImportRequest(); Assert.Equal(input.InputFormat, output.InputFormat); Assert.Equal(input.InputSource, output.InputSource); Assert.Equal(input.Force, output.Force); Assert.Equal(input.Mode, output.Mode); Assert.Equal(input.StorageDetail.Type, output.StorageDetail.Type); Assert.Equal(input.Input[0].Type, output.Input[0].Type); Assert.Equal(input.Input[0].Url, output.Input[0].Url); Assert.Equal(input.Input[0].Etag, output.Input[0].Etag); }
public void GivenEmptyImportRequestInParamtersFormat_WhenConvert_ThenDefaultValueShouldBeFilled() { ImportRequest input = new ImportRequest(); ImportRequest output = input.ToParameters().ExtractImportRequest(); Assert.Equal(output.InputFormat, ImportRequestExtensions.DefaultInputFormat); Assert.Equal(output.StorageDetail.Type, ImportRequestExtensions.DefaultStorageDetailType); }
public static async Task <Uri> CreateImportTaskAsync(TestFhirClient testFhirClient, ImportRequest request) { while (true) { try { request.Mode = ImportConstants.InitialLoadMode; request.Force = true; Uri checkLocation = await testFhirClient.ImportAsync(request.ToParameters()); return(checkLocation); } catch (FhirException fhirException) { if (!HttpStatusCode.Conflict.Equals(fhirException.StatusCode)) { throw; } await Task.Delay(TimeSpan.FromSeconds(5)); } } }
public async Task GivenAUserWithoutImportPermissions_WhenImportData_ThenServerShouldReturnForbidden() { TestFhirClient tempClient = _client.CreateClientForUser(TestUsers.ReadOnlyUser, TestApplications.NativeClient); string patientNdJsonResource = Samples.GetNdJson("Import-Patient"); (Uri location, string etag) = await ImportTestHelper.UploadFileAsync(patientNdJsonResource, _fixture.CloudStorageAccount); var request = new ImportRequest() { InputFormat = "application/fhir+ndjson", InputSource = new Uri("https://other-server.example.org"), StorageDetail = new ImportRequestStorageDetail() { Type = "azure-blob" }, Input = new List <InputResource>() { new InputResource() { Url = location, Type = "Patient", }, }, }; request.Mode = ImportConstants.InitialLoadMode; request.Force = true; FhirException fhirException = await Assert.ThrowsAsync <FhirException>(async() => await tempClient.ImportAsync(request.ToParameters(), CancellationToken.None)); Assert.Equal(ForbiddenMessage, fhirException.Message); Assert.Equal(HttpStatusCode.Forbidden, fhirException.StatusCode); }
public async Task GivenImportOperationEnabled_WhenImportOperationTriggeredBeforePreviousTaskCompleted_ThenConflictShouldBeReturned() { string patientNdJsonResource = Samples.GetNdJson("Import-Patient"); patientNdJsonResource = Regex.Replace(patientNdJsonResource, "##PatientID##", m => Guid.NewGuid().ToString("N")); (Uri location, string etag) = await ImportTestHelper.UploadFileAsync(patientNdJsonResource, _fixture.CloudStorageAccount); var request = new ImportRequest() { InputFormat = "application/fhir+ndjson", InputSource = new Uri("https://other-server.example.org"), StorageDetail = new ImportRequestStorageDetail() { Type = "azure-blob" }, Input = new List <InputResource>() { new InputResource() { Url = location, Etag = etag, Type = "Patient", }, }, }; request.Mode = ImportConstants.InitialLoadMode; request.Force = true; Uri checkLocation = await ImportTestHelper.CreateImportTaskAsync(_client, request); FhirException fhirException = await Assert.ThrowsAsync <FhirException>(async() => await _client.ImportAsync(request.ToParameters(), CancellationToken.None)); Assert.Equal(HttpStatusCode.Conflict, fhirException.StatusCode); HttpResponseMessage response; while ((response = await _client.CheckImportAsync(checkLocation, CancellationToken.None)).StatusCode == System.Net.HttpStatusCode.Accepted) { await Task.Delay(TimeSpan.FromSeconds(5)); } }
public async Task GivenAnBulkImportRequest_WhenRequestWithoutMode_ThenRequestNotValidExceptionShouldBeThrown(ImportRequest body) { var bulkImportController = GetController(new ImportTaskConfiguration() { Enabled = true }); await Assert.ThrowsAsync <RequestNotValidException>(() => bulkImportController.Import(body.ToParameters())); }
public async Task GivenAnBulkImportRequest_WhenDisabled_ThenRequestNotValidExceptionShouldBeThrown(ImportRequest body) { var bulkImportController = GetController(new ImportTaskConfiguration() { Enabled = false }); body.Mode = ImportConstants.InitialLoadMode; await Assert.ThrowsAsync <RequestNotValidException>(() => bulkImportController.Import(body.ToParameters())); }