Exemplo n.º 1
0
        public async Task Retrieve_Series_BadUids()
        {
            var httpClient = new HttpClient();
            var wado       = new WadoService(httpClient, new Uri("http://dummy/api/"));

            await Assert.ThrowsAsync <ArgumentNullException>(async() =>
            {
                await foreach (var instance in wado.Retrieve(null, seriesInstanceUid: null))
                {
                }
            });

            await Assert.ThrowsAsync <DicomValidationException>(async() =>
            {
                await foreach (var instance in wado.Retrieve("bad uid", seriesInstanceUid: null))
                {
                }
            });

            await Assert.ThrowsAsync <ArgumentNullException>(async() =>
            {
                await foreach (var instance in
                               wado.Retrieve(DicomUIDGenerator.GenerateDerivedFromUUID().UID, seriesInstanceUid: null))
                {
                }
            });

            await Assert.ThrowsAsync <DicomValidationException>(async() =>
            {
                await foreach (var instance in
                               wado.Retrieve(DicomUIDGenerator.GenerateDerivedFromUUID().UID, seriesInstanceUid: "bad uid"))
                {
                }
            });
        }
Exemplo n.º 2
0
        public async Task Retrieve_Bulkdata_WithCustomTransferSyntax(string transferSyntaxUid)
        {
            var transferSyntax = transferSyntaxUid != null?DicomTransferSyntax.Parse(transferSyntaxUid) : null;

            var studyUid    = DicomUIDGenerator.GenerateDerivedFromUUID();
            var seriesUid   = DicomUIDGenerator.GenerateDerivedFromUUID();
            var instanceUid = DicomUIDGenerator.GenerateDerivedFromUUID();

            var response = new HttpResponseMessage
            {
                StatusCode = HttpStatusCode.OK,
                Content    = _fixture.GenerateByteData(),
            };

            Mock <HttpMessageHandler> handlerMock;
            HttpClient httpClient;

            GenerateHttpClient(response, out handlerMock, out httpClient);

            var wado = new WadoService(httpClient, new Uri("http://dummy/api/"));

            await wado.Retrieve(studyUid.UID, seriesUid.UID, instanceUid.UID, DicomTag.PixelData, transferSyntaxes : transferSyntax);

            handlerMock.Protected().Verify(
                "SendAsync",
                Times.Exactly(1),
                ItExpr.Is <HttpRequestMessage>(req =>
                                               req.Method == HttpMethod.Get &&
                                               req.Headers.Accept.First().Parameters.Any(
                                                   p => p.Value.Contains(transferSyntaxUid ?? MimeMappings.MimeTypeMappings[MimeType.Dicom]))),
                ItExpr.IsAny <CancellationToken>());
        }
Exemplo n.º 3
0
        public async Task Retrieve_Instance_HandleEmptyDataWithHttpOk()
        {
            var studyUid    = DicomUIDGenerator.GenerateDerivedFromUUID();
            var seriesUid   = DicomUIDGenerator.GenerateDerivedFromUUID();
            var instanceUid = DicomUIDGenerator.GenerateDerivedFromUUID();

            var response = new HttpResponseMessage
            {
                StatusCode = HttpStatusCode.OK,
                Content    = new StringContent("")
            };

            Mock <HttpMessageHandler> handlerMock;
            HttpClient httpClient;

            GenerateHttpClient(response, out handlerMock, out httpClient);

            var wado = new WadoService(httpClient, new Uri("http://dummy/api/"));

            var result = await wado.Retrieve(studyUid.UID, seriesUid.UID, instanceUid.UID);

            Assert.Null(result);
            handlerMock.Protected().Verify(
                "SendAsync",
                Times.Exactly(1),
                ItExpr.Is <HttpRequestMessage>(req =>
                                               req.Method == HttpMethod.Get &&
                                               req.Headers.Accept.First().Parameters.Any(
                                                   p => p.Value.Contains(MimeMappings.MimeTypeMappings[MimeType.Dicom]))),
                ItExpr.IsAny <CancellationToken>());
        }
        public async Task Retrieve_Instance_WithCustomTransferSyntax(string transferSyntaxUid)
        {
            var transferSyntax = transferSyntaxUid != null?DicomTransferSyntax.Parse(transferSyntaxUid) : null;

            var studyUid    = DicomUIDGenerator.GenerateDerivedFromUUID();
            var seriesUid   = DicomUIDGenerator.GenerateDerivedFromUUID();
            var instanceUid = DicomUIDGenerator.GenerateDerivedFromUUID();

            var response = new HttpResponseMessage
            {
                StatusCode = HttpStatusCode.OK,
                Content    = await _fixture.GenerateInstances(2, studyUid, seriesUid, instanceUid, transferSynx : transferSyntax),
            };

            Mock <HttpMessageHandler> handlerMock;
            HttpClient httpClient;

            GenerateHttpClient(response, out handlerMock, out httpClient);

            var wado = new WadoService(httpClient);

            await wado.Retrieve(studyUid.UID, seriesUid.UID, instanceUid.UID, transferSyntax);

            handlerMock.Protected().Verify(
                "SendAsync",
                Times.Exactly(1),
                ItExpr.Is <HttpRequestMessage>(req =>
                                               req.Method == HttpMethod.Get &&
                                               req.RequestUri.ToString().Equals($"{BaseUri}studies/{studyUid.UID}/series/{seriesUid.UID}/instances/{instanceUid.UID}/") &&
                                               req.Headers.Accept.First().Parameters.Any(
                                                   p => p.Value.Contains(transferSyntaxUid ?? MimeMappings.MimeTypeMappings[MimeType.Dicom]))),
                ItExpr.IsAny <CancellationToken>());
        }
Exemplo n.º 5
0
        public async Task Retrieve_Bulkdata_BadUri()
        {
            var httpClient = new HttpClient();
            var wado       = new WadoService(httpClient, new Uri("http://dummy/api/"));

            await Assert.ThrowsAsync <ArgumentNullException>(async() =>
            {
                await wado.Retrieve(
                    bulkdataUri: null);
            });

            await Assert.ThrowsAsync <UriFormatException>(async() =>
            {
                await wado.Retrieve(
                    bulkdataUri: new Uri("www.contoso.com/api/"));
            });
        }
Exemplo n.º 6
0
        public async Task Retrieve_Study_BadStudyUid()
        {
            var httpClient = new HttpClient();
            var wado       = new WadoService(httpClient, new Uri("http://dummy/api/"));

            await Assert.ThrowsAsync <ArgumentNullException>(async() =>
            {
                await foreach (var instance in wado.Retrieve(studyInstanceUid: null))
                {
                }
            });

            await Assert.ThrowsAsync <DicomValidationException>(async() =>
            {
                await foreach (var instance in wado.Retrieve(studyInstanceUid: "bad uid"))
                {
                }
            });
        }
        public async Task Retrieve_Instance_BadUids()
        {
            var httpClient = GetHttpClient();
            var wado       = new WadoService(httpClient);

            await Assert.ThrowsAsync <ArgumentNullException>(async() =>
            {
                await wado.Retrieve(null, seriesInstanceUid: null, sopInstanceUid: null);
            });

            await Assert.ThrowsAsync <DicomValidationException>(async() =>
            {
                await wado.Retrieve("bad uid", seriesInstanceUid: null, sopInstanceUid: null);
            });

            await Assert.ThrowsAsync <ArgumentNullException>(async() =>
            {
                await wado.Retrieve(DicomUIDGenerator.GenerateDerivedFromUUID().UID, seriesInstanceUid: null, sopInstanceUid: null);
            });

            await Assert.ThrowsAsync <DicomValidationException>(async() =>
            {
                await wado.Retrieve(DicomUIDGenerator.GenerateDerivedFromUUID().UID, seriesInstanceUid: "bad id", sopInstanceUid: null);
            });

            await Assert.ThrowsAsync <ArgumentNullException>(async() =>
            {
                await wado.Retrieve(DicomUIDGenerator.GenerateDerivedFromUUID().UID, seriesInstanceUid: DicomUIDGenerator.GenerateDerivedFromUUID().UID, sopInstanceUid: null);
            });

            await Assert.ThrowsAsync <DicomValidationException>(async() =>
            {
                await wado.Retrieve(DicomUIDGenerator.GenerateDerivedFromUUID().UID, seriesInstanceUid: DicomUIDGenerator.GenerateDerivedFromUUID().UID, sopInstanceUid: "bad uid");
            });
        }
Exemplo n.º 8
0
        public async Task Retrieve_Bulkdata_BadUid()
        {
            var httpClient = new HttpClient();
            var wado       = new WadoService(httpClient, new Uri("http://dummy/api/"));

            await Assert.ThrowsAsync <ArgumentNullException>(async() =>
            {
                await wado.Retrieve(
                    null,
                    seriesInstanceUid: null,
                    sopInstanceUid: null,
                    DicomTag.PixelData);
            });

            await Assert.ThrowsAsync <DicomValidationException>(async() =>
            {
                await wado.Retrieve(
                    "bad uid",
                    seriesInstanceUid: null,
                    sopInstanceUid: null,
                    DicomTag.PixelData);
            });

            await Assert.ThrowsAsync <ArgumentNullException>(async() =>
            {
                await wado.Retrieve(
                    DicomUIDGenerator.GenerateDerivedFromUUID().UID,
                    seriesInstanceUid: null,
                    sopInstanceUid: null,
                    DicomTag.PixelData);
            });

            await Assert.ThrowsAsync <DicomValidationException>(async() =>
            {
                await wado.Retrieve(
                    DicomUIDGenerator.GenerateDerivedFromUUID().UID,
                    seriesInstanceUid: "bad id",
                    sopInstanceUid: null,
                    DicomTag.PixelData);
            });

            await Assert.ThrowsAsync <ArgumentNullException>(async() =>
            {
                await wado.Retrieve(
                    DicomUIDGenerator.GenerateDerivedFromUUID().UID,
                    seriesInstanceUid: DicomUIDGenerator.GenerateDerivedFromUUID().UID,
                    sopInstanceUid: null,
                    DicomTag.PixelData);
            });

            await Assert.ThrowsAsync <DicomValidationException>(async() =>
            {
                await wado.Retrieve(
                    DicomUIDGenerator.GenerateDerivedFromUUID().UID,
                    seriesInstanceUid: DicomUIDGenerator.GenerateDerivedFromUUID().UID,
                    sopInstanceUid: "bad uid",
                    DicomTag.PixelData);
            });
        }
Exemplo n.º 9
0
        public async Task Retrieve_Frames_ShallTHrow()
        {
            var httpClient = new HttpClient();
            var wado       = new WadoService(httpClient, new Uri("http://dummy/api/"));

            await Assert.ThrowsAsync <NotImplementedException>(async() =>
            {
                await wado.Retrieve(
                    DicomUIDGenerator.GenerateDerivedFromUUID().UID,
                    DicomUIDGenerator.GenerateDerivedFromUUID().UID,
                    DicomUIDGenerator.GenerateDerivedFromUUID().UID,
                    new uint[] { 1, 2, 3 });
            });
        }
        public async Task Retrieve_Bulkdata_IncludesRangeHeaders()
        {
            var studyUid    = DicomUIDGenerator.GenerateDerivedFromUUID();
            var seriesUid   = DicomUIDGenerator.GenerateDerivedFromUUID();
            var instanceUid = DicomUIDGenerator.GenerateDerivedFromUUID();

            var response = new HttpResponseMessage
            {
                StatusCode = HttpStatusCode.OK,
                Content    = _fixture.GenerateByteData(),
            };

            Mock <HttpMessageHandler> handlerMock;
            HttpClient httpClient;

            GenerateHttpClient(response, out handlerMock, out httpClient);

            var wado = new WadoService(httpClient);

            await wado.Retrieve(
                studyUid.UID,
                seriesUid.UID,
                instanceUid.UID,
                DicomTag.PixelData,
                new Tuple <int, int?>(1, 3));

            handlerMock.Protected().Verify(
                "SendAsync",
                Times.Exactly(1),
                ItExpr.Is <HttpRequestMessage>(req =>
                                               req.Method == HttpMethod.Get &&
                                               req.RequestUri.ToString().Equals($"{BaseUri}studies/{studyUid.UID}/series/{seriesUid.UID}/instances/{instanceUid.UID}/bulk/{DicomTag.PixelData.Group:X4}{DicomTag.PixelData.Element:X4}") &&
                                               req.Headers.Accept.First().Parameters.Any(
                                                   p => p.Value.Contains(MimeMappings.MimeTypeMappings[MimeType.Dicom])) &&
                                               req.Headers.Range.ToString() == "byte=1-3"),
                ItExpr.IsAny <CancellationToken>());
        }
Exemplo n.º 11
0
        public async Task Retrieve_Study_BadTransferSyntax()
        {
            var studyUid = DicomUIDGenerator.GenerateDerivedFromUUID();

            var response = new HttpResponseMessage
            {
                StatusCode = HttpStatusCode.OK,
                Content    = await _fixture.GenerateInstances(1, studyUid),
            };

            Mock <HttpMessageHandler> handlerMock;
            HttpClient httpClient;

            GenerateHttpClient(response, out handlerMock, out httpClient);

            var wado = new WadoService(httpClient, new Uri("http://dummy/api/"));

            await Assert.ThrowsAsync <ArgumentException>(async() =>
            {
                await foreach (var instance in wado.Retrieve(studyUid.UID, DicomTransferSyntax.ImplicitVRLittleEndian))
                {
                }
            });
        }