public void Reply_Throws_If__Message_Is_Closed() { HttpResponseMessage response = new HttpResponseMessage(); HttpMessage message = new HttpMessage(response); message.Close(); MockRequestContext innerRequestContext = new MockRequestContext(); HttpMessageEncodingRequestContext requestContext = new HttpMessageEncodingRequestContext(innerRequestContext); ExceptionAssert.Throws<ObjectDisposedException>( SR.MessageClosed, () => { requestContext.Reply(message); }); }
public void Reply_With_TimeOut_Calls_Inner_RequestContext() { Message message = Message.CreateMessage(MessageVersion.None, string.Empty); MockRequestContext innerRequestContext = new MockRequestContext(); HttpMessageEncodingRequestContext requestContext = new HttpMessageEncodingRequestContext(innerRequestContext); TimeSpan timeout = new TimeSpan(0, 1, 0); requestContext.Reply(message, timeout); Assert.IsTrue(innerRequestContext.ReplyCalled, "Reply should have been called on the inner RequestContext."); Assert.AreEqual(timeout, innerRequestContext.Timeout, "HttpMessageEncodingRequestContext.Reply should have passed along the timeout instance to the inner RequestContext."); }
public void Reply_Returns_Same_HttpMessage_Instance_When_Response_Is_HttpMessage() { HttpResponseMessage response = new HttpResponseMessage(); response.StatusCode = HttpStatusCode.OK; HttpMessage message = new HttpMessage(response); MockRequestContext innerRequestContext = new MockRequestContext(); innerRequestContext.OnReplyReceived = innerMessage => { Assert.IsNotNull(innerMessage, "HttpMessageEncodingRequestContext.Reply should not have returned null."); Assert.IsInstanceOfType(innerMessage, typeof(HttpMessage), "HttpMessageEncodingRequestContext.Reply should have returned an HttpMessage instance."); Assert.AreSame(message, innerMessage, "HttpMessageEncodingRequestContext.Reply should have provided the same message instance as the HttpMessageEncodingRequestContext received."); HttpResponseMessage innerResponse = innerMessage.ToHttpResponseMessage(); Assert.IsNotNull(innerResponse, "ToHttpResponseMessage should not have returned null."); Assert.AreSame(response, innerResponse, "HttpMessageEncodingRequestContext.Reply should have provided the same HttpResponseMessage instance as the HttpMessageEncodingRequestContext received."); }; HttpMessageEncodingRequestContext requestContext = new HttpMessageEncodingRequestContext(innerRequestContext); requestContext.Reply(message); Assert.IsTrue(innerRequestContext.ReplyCalled, "HttpMessageEncodingRequestContext.Reply should have called Reply on the inner RequestContext."); }
public void Reply_Sets_SuppressEntityBody_When_HttpContent_Of_HttpMessage_Is_Null() { HttpResponseMessage response = new HttpResponseMessage(); response.Content = null; response.StatusCode = HttpStatusCode.OK; HttpMessage message = new HttpMessage(response); MockRequestContext innerRequestContext = new MockRequestContext(); innerRequestContext.OnReplyReceived = innerMessage => { HttpResponseMessageProperty innerProperty = innerMessage.Properties[HttpResponseMessageProperty.Name] as HttpResponseMessageProperty; Assert.IsTrue(innerProperty.SuppressEntityBody, "HttpResponseMessageProperty.SuppressEntityBody should have been 'true'."); }; HttpMessageEncodingRequestContext requestContext = new HttpMessageEncodingRequestContext(innerRequestContext); requestContext.Reply(message); Assert.IsTrue(innerRequestContext.ReplyCalled, "HttpMessageEncodingRequestContext.Reply should have called Reply on the inner RequestContext."); }
public void Reply_Replaces_HttpResponseMessageProperty_When_Response_Is_HttpMessage() { HttpResponseMessage response = new HttpResponseMessage(); response.Content = new ByteArrayContent(new byte[5] { 1, 2, 3, 4, 5 }); response.StatusCode = HttpStatusCode.Moved; response.ReasonPhrase = "SomeReason"; response.Headers.Add("SomeHeader", "SomeHeaderValue"); HttpMessage message = new HttpMessage(response); MockRequestContext innerRequestContext = new MockRequestContext(); innerRequestContext.OnReplyReceived = innerMessage => { HttpResponseMessageProperty innerProperty = innerMessage.Properties[HttpResponseMessageProperty.Name] as HttpResponseMessageProperty; Assert.IsNotNull(innerProperty, "The inner HttpMessage instance should have had an HttpResponseMessageProperty."); Assert.AreEqual(HttpStatusCode.Moved, innerProperty.StatusCode, "HttpResponseMessageProperty.StatusCode should have been HttpStatusCode.Moved."); Assert.IsFalse(innerProperty.SuppressEntityBody, "HttpResponseMessageProperty.SuppressEntityBody should have been 'false'."); Assert.AreEqual(1, innerProperty.Headers.Count, "HttpResponseMessageProperty.Header.Count should have been 1."); Assert.AreEqual("SomeHeaderValue", innerProperty.Headers["SomeHeader"], "HttpResponseMessageProperty.Header 'SomeHeader' value should have been 'SomeHeaderValue'."); Assert.AreEqual("SomeReason", innerProperty.StatusDescription, "HttpResponseMessageProperty.StatusDescription value should have been 'SomeReason'."); }; HttpMessageEncodingRequestContext requestContext = new HttpMessageEncodingRequestContext(innerRequestContext); requestContext.Reply(message); Assert.IsTrue(innerRequestContext.ReplyCalled, "HttpMessageEncodingRequestContext.Reply should have called Reply on the inner RequestContext."); }
public void Reply_Provides_Same_Message_Instance_To_Inner_RequestContext_When_Response_Is_Not_HttpMessage() { Message message = Message.CreateMessage(MessageVersion.None, string.Empty); MockRequestContext innerRequestContext = new MockRequestContext(); innerRequestContext.OnReplyReceived = innerMessage => { Assert.IsNotNull(innerMessage, "HttpMessageEncodingRequestContext.Reply should not have provided null."); Assert.AreSame(message, innerMessage, "HttpMessageEncodingRequestContext.Reply should have provided the same message instance."); }; HttpMessageEncodingRequestContext requestContext = new HttpMessageEncodingRequestContext(innerRequestContext); requestContext.Reply(message); Assert.IsTrue(innerRequestContext.ReplyCalled, "HttpMessageEncodingRequestContext.Reply should have called Reply on the inner RequestContext."); }
public void Reply_Ignores_HttpResponseMessageProperty_When_Response_Is_Not_HttpMessage() { Message message = Message.CreateMessage(MessageVersion.None, string.Empty, "some content"); HttpResponseMessageProperty property = new HttpResponseMessageProperty(); property.StatusCode = HttpStatusCode.OK; property.StatusDescription = "SomeStatusDescription"; property.SuppressEntityBody = false; property.Headers.Add(HttpResponseHeader.ContentType, "someType/someSubType"); message.Properties.Add(HttpResponseMessageProperty.Name, property); MockRequestContext innerRequestContext = new MockRequestContext(); innerRequestContext.OnReplyReceived = innerMessage => { HttpResponseMessageProperty innerProperty = innerMessage.Properties[HttpResponseMessageProperty.Name] as HttpResponseMessageProperty; Assert.IsNotNull(innerProperty, "The inner HttpMessage instance should have had an HttpResponseMessageProperty."); Assert.AreNotSame(property, innerProperty, "The inner HttpResponseMessageProperty should have been a different instance from the one on the response message."); Assert.AreEqual(HttpStatusCode.InternalServerError, innerProperty.StatusCode, "HttpResponseMessageProperty.StatusCode should have been HttpStatusCode.InternalServerError."); Assert.IsTrue(innerProperty.SuppressEntityBody, "HttpResponseMessageProperty.SuppressEntityBody should have been 'true'."); Assert.AreEqual(0, innerProperty.Headers.Count, "HttpResponseMessageProperty.Header.Count should have been zero."); Assert.IsNull(innerProperty.StatusDescription, "HttpResponseMessageProperty.StatusDescription should have been null."); }; HttpMessageEncodingRequestContext requestContext = new HttpMessageEncodingRequestContext(innerRequestContext); requestContext.Reply(message); Assert.IsTrue(innerRequestContext.ReplyCalled, "HttpMessageEncodingRequestContext.Reply should have called Reply on the inner RequestContext."); }
public void Reply_Ignores_HttpResponseMessageProperty_If_Contains_HttpRequestMessage() { HttpRequestMessage request = new HttpRequestMessage(); HttpMessage message = new HttpMessage(request); MockRequestContext innerRequestContext = new MockRequestContext(); innerRequestContext.OnReplyReceived = innerMessage => { Assert.IsNotNull(innerMessage, "HttpMessageEncodingRequestContext.Reply should not have returned null."); Assert.IsInstanceOfType(innerMessage, typeof(HttpMessage), "HttpMessageEncodingRequestContext.Reply should have returned an HttpMessage instance."); Assert.AreSame(message, innerMessage, "HttpMessageEncodingRequestContext.Reply should have provided the same message instance as the HttpMessageEncodingRequestContext received."); HttpResponseMessageProperty innerProperty = innerMessage.Properties[HttpResponseMessageProperty.Name] as HttpResponseMessageProperty; Assert.IsNotNull(innerProperty, "The inner HttpMessage instance should have had an HttpResponseMessageProperty."); Assert.AreEqual(HttpStatusCode.InternalServerError, innerProperty.StatusCode, "HttpResponseMessageProperty.StatusCode should have been HttpStatusCode.InternalServerError."); Assert.IsTrue(innerProperty.SuppressEntityBody, "HttpResponseMessageProperty.SuppressEntityBody should have been 'true'."); Assert.AreEqual(0, innerProperty.Headers.Count, "HttpResponseMessageProperty.Header.Count should have been zero."); }; HttpMessageEncodingRequestContext requestContext = new HttpMessageEncodingRequestContext(innerRequestContext); requestContext.Reply(message); Assert.IsTrue(innerRequestContext.ReplyCalled, "HttpMessageEncodingRequestContext.Reply should have called Reply on the inner RequestContext."); }
public void Reply_Does_Not_Change_Message_State_When_Response_Is_HttpMessage() { HttpResponseMessage response = new HttpResponseMessage(); HttpMessage message = new HttpMessage(response); response.StatusCode = HttpStatusCode.OK; MessageState originalState = message.State; MockRequestContext innerRequestContext = new MockRequestContext(); innerRequestContext.OnReplyReceived = innerMessage => { Assert.AreEqual(originalState, innerMessage.State, "HttpMessageEncodingRequestContext.Reply should not have changed the message state."); }; HttpMessageEncodingRequestContext requestContext = new HttpMessageEncodingRequestContext(innerRequestContext); requestContext.Reply(message); Assert.IsTrue(innerRequestContext.ReplyCalled, "HttpMessageEncodingRequestContext.Reply should have called Reply on the inner RequestContext."); }