public override async Task <IList <ODataBatchRequestItem> > ParseBatchRequestsAsync( HttpRequestMessage request, CancellationToken cancellationToken) { IList <ODataBatchRequestItem> requests = await base.ParseBatchRequestsAsync(request, cancellationToken); foreach (ODataBatchRequestItem requestItem in requests) { OperationRequestItem operation = requestItem as OperationRequestItem; if (operation != null) { operation.Request.RequestUri = RemoveSessionIdFromUri(operation.Request.RequestUri); } else { ChangeSetRequestItem changeset = requestItem as ChangeSetRequestItem; if (changeset != null) { foreach (HttpRequestMessage changesetOperation in changeset.Requests) { changesetOperation.RequestUri = RemoveSessionIdFromUri(changesetOperation.RequestUri); } } } } return(requests); }
public void Parameter_Constructor() { HttpRequestMessage request = new HttpRequestMessage(); OperationRequestItem requestItem = new OperationRequestItem(request); Assert.Same(request, requestItem.Request); }
public void Dispose_DisposesHttpRequestMessage() { OperationRequestItem requestItem = new OperationRequestItem(new MockHttpRequestMessage()); requestItem.Dispose(); Assert.True(((MockHttpRequestMessage)requestItem.Request).IsDisposed); }
public async Task SendRequestAsync_NullInvoker_Throws() { OperationRequestItem requestItem = new OperationRequestItem(new HttpRequestMessage()); await ExceptionAssert.ThrowsArgumentNullAsync( () => requestItem.SendRequestAsync(null, CancellationToken.None), "invoker"); }
public void SendRequestAsync_NullInvoker_Throws() { OperationRequestItem requestItem = new OperationRequestItem(new HttpRequestMessage()); Assert.ThrowsArgumentNull( () => requestItem.SendRequestAsync(null, CancellationToken.None).Wait(), "invoker"); }
public async Task SendRequestAsync_NullHandler_Throws() { // Arrange Mock <HttpContext> context = new Mock <HttpContext>(); OperationRequestItem requestItem = new OperationRequestItem(context.Object); // Act & Assert await ExceptionAssert.ThrowsArgumentNullAsync(() => requestItem.SendRequestAsync(null), "handler"); }
public void Parameter_Constructor() { // Arrange & Act Mock <HttpContext> context = new Mock <HttpContext>(); OperationRequestItem requestItem = new OperationRequestItem(context.Object); // Assert Assert.Same(context.Object, requestItem.Context); }
public void GetResourcesForDisposal_ReturnsResourceRegisteredForDispose() { var disposeObject = new StringContent("foo"); var request = new HttpRequestMessage(HttpMethod.Get, "http://example.com"); request.RegisterForDispose(disposeObject); OperationRequestItem requestItem = new OperationRequestItem(request); var resourcesForDisposal = requestItem.GetResourcesForDisposal(); Assert.Single(resourcesForDisposal); Assert.Contains(disposeObject, resourcesForDisposal); }
public async Task SendRequestAsync_ReturnsOperationResponse() { HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "http://example.com"); OperationRequestItem requestItem = new OperationRequestItem(request); Mock <HttpMessageInvoker> invoker = new Mock <HttpMessageInvoker>(new HttpServer()); invoker.Setup(i => i.SendAsync(It.IsAny <HttpRequestMessage>(), CancellationToken.None)) .Returns(() => { return(Task.FromResult(new HttpResponseMessage(HttpStatusCode.NotModified))); }); var response = await requestItem.SendRequestAsync(invoker.Object, CancellationToken.None); var operationResponse = Assert.IsType <OperationResponseItem>(response); Assert.Equal(HttpStatusCode.NotModified, operationResponse.Response.StatusCode); }
public async Task SendRequestAsync_ReturnsOperationResponse() { // Arrange HttpContext context = HttpContextHelper.Create("Get", "http://example.com"); OperationRequestItem requestItem = new OperationRequestItem(context); RequestDelegate handler = context => { context.Response.StatusCode = StatusCodes.Status304NotModified; return(Task.FromResult(context.Response)); }; // Act ODataBatchResponseItem response = await requestItem.SendRequestAsync(handler); // Assert OperationResponseItem operationResponse = Assert.IsType <OperationResponseItem>(response); Assert.Equal(StatusCodes.Status304NotModified, operationResponse.Context.Response.StatusCode); }
/// <summary> /// Executes the batch request and associates a <see cref="ShoppingContext"/>instance with all the requests of /// a single changeset and wraps the execution of the whole changeset within a transaction. /// </summary> /// <param name="requests">The <see cref="ODataBatchRequestItem"/> instances of this batch request.</param> /// <param name="cancellation">The <see cref="CancellationToken"/> associated with the request.</param> /// <returns>The list of responses associated with the batch request.</returns> public async override Task <IList <ODataBatchResponseItem> > ExecuteRequestMessagesAsync( IEnumerable <ODataBatchRequestItem> requests, CancellationToken cancellation) { if (requests == null) { throw new ArgumentNullException("requests"); } IList <ODataBatchResponseItem> responses = new List <ODataBatchResponseItem>(); try { foreach (ODataBatchRequestItem request in requests) { OperationRequestItem operation = request as OperationRequestItem; if (operation != null) { responses.Add(await request.SendRequestAsync(Invoker, cancellation)); } else { await ExecuteChangeSet((ChangeSetRequestItem)request, responses, cancellation); } } } catch { foreach (ODataBatchResponseItem response in responses) { if (response != null) { response.Dispose(); } } throw; } return(responses); }