public void ProvideResponse_Null_Error_Argument_Throws()
 {
     IErrorHandler errorHandler = new MockHttpMessageErrorHandler();
     Message faultMessage = null;
     ExceptionAssert.ThrowsArgumentNull(
         "Null error argument should throw ArgumentNull",
         "error",
         () =>
         {
             errorHandler.ProvideFault(/*error*/ null, MessageVersion.None, ref faultMessage);
         });
 }
        public void ProvideResponse_Returns_Custom_Response_Message()
        {
            Exception error = new InvalidOperationException("problem");
            HttpResponseMessage customResponseMessage = new HttpResponseMessage();
            Message faultMessage = null;

            IErrorHandler errorHandler = new MockHttpMessageErrorHandler()
            {
                OnGetDefaultResponse = () => { return customResponseMessage; },
                OnProvideResponse = (e, m) => { return; }
            };

            errorHandler.ProvideFault(error, MessageVersion.None, ref faultMessage);

            Assert.IsNotNull(faultMessage, "ProvideFault cannot yield null response");
            HttpResponseMessage responseMessage = faultMessage.ToHttpResponseMessage();
            Assert.AreSame(customResponseMessage, responseMessage, "ProvideFault should return custom message");
            Assert.IsTrue(((MockHttpMessageErrorHandler)errorHandler).WasProvideResponseCalled, "Derived class's ProvideFault was not called");
        }
        public void ProvideResponse_Null_GetDefaultResponse_Throws()
        {
            Exception error = new InvalidOperationException("problem");
            Message faultMessage = null;

            IErrorHandler errorHandler = new MockHttpMessageErrorHandler()
            {
                OnGetDefaultResponse = () => { return null; },
                OnProvideResponse = (e, m) => { Assert.Fail("ProvideResponse should not be called if throw occurs"); }
            };

            ExceptionAssert.Throws(
                typeof(InvalidOperationException),
                "Null from GetReponse should throw InvalidOperationException",
                () =>
                {
                    errorHandler.ProvideFault(error, MessageVersion.None, ref faultMessage);
                });
        }