public async Task <IActionResult> PostAsync([Required][FromBody] IReadOnlyCollection <AddExtendedQueryTagEntry> extendedQueryTags) { _logger.LogInformation("DICOM Web Add Extended Query Tag request received, with extendedQueryTags {ExtendedQueryTags}.", extendedQueryTags); EnsureFeatureIsEnabled(); AddExtendedQueryTagResponse response = await _mediator.AddExtendedQueryTagsAsync(extendedQueryTags, HttpContext.RequestAborted); Response.AddLocationHeader(response.Operation.Href); return(StatusCode((int)HttpStatusCode.Accepted, response.Operation)); }
public async Task <IActionResult> PostAsync([FromBody] IEnumerable <AddExtendedQueryTagEntry> extendedQueryTags) { _logger.LogInformation("DICOM Web Add Extended Query Tag request received, with extendedQueryTags {extendedQueryTags}.", extendedQueryTags); EnsureFeatureIsEnabled(); AddExtendedQueryTagResponse response = await _mediator.AddExtendedQueryTagsAsync(extendedQueryTags, HttpContext.RequestAborted); return(StatusCode( (int)HttpStatusCode.Accepted, response)); }
public async Task GivenOperationId_WhenAddingTags_ReturnIdWithHeader() { Guid id = Guid.NewGuid(); var expected = new AddExtendedQueryTagResponse( new OperationReference(id, new Uri("https://dicom.contoso.io/unit/test/Operations/" + id, UriKind.Absolute))); IMediator mediator = Substitute.For <IMediator>(); var controller = new ExtendedQueryTagController( mediator, Options.Create(new FeatureConfiguration { EnableExtendedQueryTags = true }), NullLogger <ExtendedQueryTagController> .Instance); controller.ControllerContext.HttpContext = new DefaultHttpContext(); var input = new List <AddExtendedQueryTagEntry> { new AddExtendedQueryTagEntry { Level = QueryTagLevel.Instance, Path = "00101001", VR = DicomVRCode.PN, }, new AddExtendedQueryTagEntry { Level = QueryTagLevel.Instance, Path = "11330001", PrivateCreator = "Microsoft", VR = DicomVRCode.SS, } }; mediator .Send( Arg.Is <AddExtendedQueryTagRequest>(x => ReferenceEquals(x.ExtendedQueryTags, input)), Arg.Is(controller.HttpContext.RequestAborted)) .Returns(expected); var actual = await controller.PostAsync(input) as ObjectResult; Assert.NotNull(actual); Assert.IsType <OperationReference>(actual.Value); Assert.True(controller.Response.Headers.TryGetValue(HeaderNames.Location, out StringValues header)); Assert.Single(header); Assert.Equal((int)HttpStatusCode.Accepted, actual.StatusCode); Assert.Same(expected.Operation, actual.Value); Assert.Equal("https://dicom.contoso.io/unit/test/Operations/" + id, header[0]); await mediator.Received(1).Send( Arg.Is <AddExtendedQueryTagRequest>(x => ReferenceEquals(x.ExtendedQueryTags, input)), Arg.Is(controller.HttpContext.RequestAborted)); }