public void SendAsync_WritesETagToResponseHeaders_InUntyped() { // Arrange IEdmModel model = GetUnTypeEdmModel(); HttpRequestMessage request = SetupRequest(HttpMethod.Get, "Customers(3)", model); IEdmEntityType entityType = model.SchemaElements.OfType <IEdmEntityType>().First(c => c.Name == "Customer"); EdmEntityObject customer = new EdmEntityObject(entityType); customer.TrySetPropertyValue("ID", 3); customer.TrySetPropertyValue("Name", "Sam"); HttpResponseMessage originalResponse = SetupResponse(HttpStatusCode.OK, typeof(EdmEntityObject), customer); ETagMessageHandler handler = new ETagMessageHandler() { InnerHandler = new TestHandler(originalResponse) }; // Act HttpResponseMessage response = handler.SendAsync(request).Result; // Assert Assert.NotNull(response.Headers.ETag); Assert.Equal("\"J1NhbSc=\"", response.Headers.ETag.Tag); }
public void SendAsync_ThrowsIfRequestIsNull() { // Arrange ETagMessageHandler handler = new ETagMessageHandler(); // Act & Assert Assert.ThrowsArgumentNull(() => { var result = handler.SendAsync(null).Result; }, "request"); }
public async Task SendAsync_ThrowsIfRequestIsNull() { // Arrange ETagMessageHandler handler = new ETagMessageHandler(); // Act & Assert await ExceptionAssert.ThrowsArgumentNullAsync(() => handler.SendAsync(null), "request"); }
public async Task SendAsync_ThrowsInvalidOperationExceptionIfRequestDoesntHaveConfiguration() { // Arrange ETagMessageHandler handler = new ETagMessageHandler(); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "http://host/"); // Act & Assert await ExceptionAssert.ThrowsAsync <InvalidOperationException>( () => handler.SendAsync(request), "Request message does not contain an HttpConfiguration object."); }
public void SendAsync_ThrowsInvalidOperationExceptionIfRequestDoesntHaveConfiguration() { // Arrange ETagMessageHandler handler = new ETagMessageHandler(); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "http://host/"); // Act & Assert Assert.Throws <InvalidOperationException>( () => { var result = handler.SendAsync(request).Result; }, "Request message does not contain an HttpConfiguration object."); }
public void SendAsync_ThrowsInvalidOperationExceptionIfRequestDoesntHaveConfiguration() { // Arrange ETagMessageHandler handler = new ETagMessageHandler(); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "http://host/"); // Act & Assert Assert.Throws<InvalidOperationException>( () => { var result = handler.SendAsync(request).Result; }, "Request message does not contain an HttpConfiguration object."); }
public void SendAsync_ReturnsNullIfInnerHandlerReturnsNull() { // Arrange HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "/Customers(3)"); request.SetConfiguration(new HttpConfiguration()); ETagMessageHandler handler = new ETagMessageHandler() { InnerHandler = new TestHandler(null) }; // Act HttpResponseMessage response = handler.SendAsync(request).Result; // Assert Assert.Null(response); }
public void SendAsync_DoesntWriteETagIfResponseIsNoContent() { // Arrange HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "/Customers(3)"); request.SetConfiguration(new HttpConfiguration()); HttpResponseMessage originalResponse = new HttpResponseMessage(HttpStatusCode.NoContent); ETagMessageHandler handler = new ETagMessageHandler() { InnerHandler = new TestHandler(originalResponse) }; // Act HttpResponseMessage response = handler.SendAsync(request).Result; // Assert Assert.Null(response.Headers.ETag); }
public void GetSingleEntityEntityType_ReturnsEntityTypeForSingleEntityResources(string odataPath, string typeName) { // Arrange IEdmModel model = SetupModel(); IODataPathHandler pathHandler = new DefaultODataPathHandler(); ODataPath path = pathHandler.Parse(model, "http://localhost/any", odataPath); // Guard Assert.NotNull(path); // Act IEdmEntityType entityType = ETagMessageHandler.GetSingleEntityEntityType(path); // Assert Assert.NotNull(entityType); Assert.Equal(typeName, entityType.FullName()); }
public async Task SendAsync_DoesntWriteETagIfResponseIsNotSuccessful() { // Arrange HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "/Customers(3)"); request.SetConfiguration(new HttpConfiguration()); HttpResponseMessage originalResponse = new HttpResponseMessage(HttpStatusCode.NotFound); ETagMessageHandler handler = new ETagMessageHandler() { InnerHandler = new TestHandler(originalResponse) }; // Act HttpResponseMessage response = await handler.SendAsync(request); // Assert Assert.Null(response.Headers.ETag); }
public void SendAsync_DoesntWriteETagIfContentIsntObjectContent() { // Arrange HttpRequestMessage request = SetupRequest(HttpMethod.Get, "Customers(3)"); HttpResponseMessage originalResponse = new HttpResponseMessage(HttpStatusCode.OK); originalResponse.Content = new StringContent("Some content"); ETagMessageHandler handler = new ETagMessageHandler() { InnerHandler = new TestHandler(originalResponse) }; // Act HttpResponseMessage response = handler.SendAsync(request).Result; // Assert Assert.Null(response.Headers.ETag); }
public void SendAsync_DoesntWriteETagIfContentIsNull() { // Arrange HttpRequestMessage request = SetupRequest(HttpMethod.Get, "Customers(3)"); HttpResponseMessage originalResponse = SetupResponse(HttpStatusCode.OK, typeof(ETagCustomer), null); ETagMessageHandler handler = new ETagMessageHandler() { InnerHandler = new TestHandler(originalResponse) }; // Act HttpResponseMessage response = handler.SendAsync(request).Result; // Assert Assert.Null(response.Headers.ETag); }
public void SendAsync_WritesETagToResponseHeaders() { // Arrange HttpRequestMessage request = SetupRequest(HttpMethod.Get, "Customers(3)"); HttpResponseMessage originalResponse = SetupResponse(HttpStatusCode.OK, typeof(ETagCustomer), new ETagCustomer { Id = 3, Timestamp = new byte[] { (byte)3 } }); ETagMessageHandler handler = new ETagMessageHandler() { InnerHandler = new TestHandler(originalResponse) }; // Act HttpResponseMessage response = handler.SendAsync(request).Result; // Assert Assert.NotNull(response.Headers.ETag); }
public void SendAsync_DoesntWriteETagIfETagIsNull() { // Arrange HttpRequestMessage request = SetupRequest(HttpMethod.Get, "NonEtagEntity(3)"); HttpResponseMessage originalResponse = SetupResponse(HttpStatusCode.OK, typeof(NonEtagEntity), new NonEtagEntity { Id = 3 }); ETagMessageHandler handler = new ETagMessageHandler() { InnerHandler = new TestHandler(originalResponse) }; // Act HttpResponseMessage response = handler.SendAsync(request).Result; // Assert Assert.Null(response.Headers.ETag); }
/// <summary> /// Add an <see cref="ETagMessageHandler"/> to the configuration. /// </summary> /// <param name="handler"></param> /// <returns></returns> public void AddETagMessageHandler(ETagMessageHandler handler) { this.MessageHandlers.Add(new ETagMessageHandler()); }
public void SendAsync_WritesETagToResponseHeaders_InUntyped() { // Arrange IEdmModel model = GetUnTypeEdmModel(); HttpRequestMessage request = SetupRequest(HttpMethod.Get, "Customers(3)", model); IEdmEntityType entityType = model.SchemaElements.OfType<IEdmEntityType>().First(c => c.Name == "Customer"); EdmEntityObject customer = new EdmEntityObject(entityType); customer.TrySetPropertyValue("ID", 3); customer.TrySetPropertyValue("Name", "Sam"); HttpResponseMessage originalResponse = SetupResponse(HttpStatusCode.OK, typeof(EdmEntityObject), customer); ETagMessageHandler handler = new ETagMessageHandler() { InnerHandler = new TestHandler(originalResponse) }; // Act HttpResponseMessage response = handler.SendAsync(request).Result; // Assert Assert.NotNull(response.Headers.ETag); Assert.Equal("\"J1NhbSc=\"", response.Headers.ETag.Tag); }