public void ExecuteChangeSet_Throws_IfRequestIsNull() { var httpContent = new StringContent(String.Empty, Encoding.UTF8, "multipart/mixed"); httpContent.Headers.ContentType.Parameters.Add(new NameValueHeaderValue("boundary", Guid.NewGuid().ToString())); var reader = httpContent.GetODataMessageReaderAsync(new ODataMessageReaderSettings()).Result; UnbufferedODataBatchHandler batchHandler = new UnbufferedODataBatchHandler(new HttpServer()); Assert.ThrowsArgumentNull( () => batchHandler.ExecuteChangeSetAsync(reader.CreateODataBatchReader(), Guid.NewGuid(), null, CancellationToken.None).Wait(), "originalRequest"); }
public void ExecuteChangeSetAsync_ReturnsSingleErrorResponse() { MockHttpServer server = new MockHttpServer(request => { if (request.Method == HttpMethod.Post) { return Task.FromResult(new HttpResponseMessage(HttpStatusCode.BadRequest)); } return Task.FromResult(new HttpResponseMessage()); }); UnbufferedODataBatchHandler batchHandler = new UnbufferedODataBatchHandler(server); HttpRequestMessage batchRequest = new HttpRequestMessage(HttpMethod.Post, "http://example.com/$batch") { Content = new MultipartContent("mixed") { new MultipartContent("mixed") // ChangeSet { ODataBatchRequestHelper.CreateODataRequestContent(new HttpRequestMessage(HttpMethod.Put, "http://example.com/values")), ODataBatchRequestHelper.CreateODataRequestContent(new HttpRequestMessage(HttpMethod.Post, "http://example.com/values")), ODataBatchRequestHelper.CreateODataRequestContent(new HttpRequestMessage(HttpMethod.Delete, "http://example.com/values")), } } }; ODataMessageReader reader = batchRequest.Content .GetODataMessageReaderAsync(new ODataMessageReaderSettings { BaseUri = new Uri("http://example.com") }, CancellationToken.None) .Result; ODataBatchReader batchReader = reader.CreateODataBatchReader(); var response = batchHandler.ExecuteChangeSetAsync(batchReader, Guid.NewGuid(), batchRequest, CancellationToken.None).Result; var changesetResponse = Assert.IsType<ChangeSetResponseItem>(response); Assert.Equal(1, changesetResponse.Responses.Count()); Assert.Equal(HttpStatusCode.BadRequest, changesetResponse.Responses.First().StatusCode); }
public void ExecuteChangeSet_Throws_IfReaderIsNull() { UnbufferedODataBatchHandler batchHandler = new UnbufferedODataBatchHandler(new HttpServer()); Assert.ThrowsArgumentNull( () => batchHandler.ExecuteChangeSetAsync(null, Guid.NewGuid(), new HttpRequestMessage(), CancellationToken.None).Wait(), "batchReader"); }
public void ExecuteChangeSetAsync_CopiesPropertiesFromRequest_WithoutExcludedProperties() { MockHttpServer server = new MockHttpServer(request => { return new HttpResponseMessage { RequestMessage = request }; }); UnbufferedODataBatchHandler batchHandler = new UnbufferedODataBatchHandler(server); HttpRequestMessage batchRequest = new HttpRequestMessage(HttpMethod.Post, "http://example.com/$batch") { Content = new MultipartContent("mixed") { new MultipartContent("mixed") // ChangeSet { ODataBatchRequestHelper.CreateODataRequestContent(new HttpRequestMessage(HttpMethod.Post, "http://example.com/values") { Content = new StringContent("foo") }) } } }; batchRequest.Properties.Add("foo", "bar"); batchRequest.SetRouteData(new HttpRouteData(new HttpRoute())); batchRequest.RegisterForDispose(new StringContent(String.Empty)); ODataMessageReader reader = batchRequest.Content .GetODataMessageReaderAsync(new ODataMessageReaderSettings { BaseUri = new Uri("http://example.com") }, CancellationToken.None) .Result; ODataBatchReader batchReader = reader.CreateODataBatchReader(); List<ODataBatchResponseItem> responses = new List<ODataBatchResponseItem>(); Guid batchId = Guid.NewGuid(); batchReader.Read(); var response = batchHandler.ExecuteChangeSetAsync(batchReader, Guid.NewGuid(), batchRequest, CancellationToken.None).Result; var changeSetResponses = ((ChangeSetResponseItem)response).Responses; foreach (var changeSetResponse in changeSetResponses) { var changeSetRequest = changeSetResponse.RequestMessage; Assert.Equal("bar", changeSetRequest.Properties["foo"]); Assert.Null(changeSetRequest.GetRouteData()); Assert.Same(changeSetRequest, changeSetRequest.GetUrlHelper().Request); Assert.Empty(changeSetRequest.GetResourcesForDisposal()); } }