Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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));
                }
            }
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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()));
        }