public void HandleThrowsIfOnHandleReturnsTooLargeArray() { HttpParameter[] parameters = new HttpParameter[] { new HttpParameter("arg1", typeof(string)), }; SHttpOperationHandler handler = new SHttpOperationHandler() { CallBase = true }; handler.OnGetInputParameters01 = () => parameters; handler.OnGetOutputParameters01 = () => parameters; handler.OnHandleObjectArray = (oArray) => new object[2]; string errorMessage = SR.HttpOperationHandlerProducedWrongNumberOfValues( typeof(HttpOperationHandler).Name, handler.ToString(), handler.OperationName, 1, 2); ExceptionAssert.Throws <InvalidOperationException>( errorMessage, () => handler.Handle(new object[] { "fred" }) ); }
public void HandleConvertsStringValuesReturnedFromOnHandle() { TestDataAssert.Execute( HttpTestData.ConvertableValueTypes, TestDataVariations.AllSingleInstances, "Handle failed", (type, obj) => { Type convertType = obj.GetType(); if (HttpParameterAssert.CanConvertToStringAndBack(convertType)) { HttpParameter hpd = new HttpParameter("aName", convertType); HttpParameter[] parameters = new HttpParameter[] { hpd }; SHttpOperationHandler handler = new SHttpOperationHandler(); handler.OnGetInputParameters01 = () => parameters; handler.OnGetOutputParameters01 = () => parameters; handler.OnHandleObjectArray = (oArray) => new object[] { obj.ToString() }; object[] result = handler.Handle(new object[] { obj }); Assert.IsNotNull(result, "Null result returned from Handle."); Assert.AreEqual(1, result.Length, "Handle returned wrong length array."); Assert.AreEqual(convertType, result[0].GetType(), "Value did not convert to right type."); Assert.AreEqual(obj.ToString(), result[0].ToString(), "Object did not convert to the right value."); } }); }
public void HandleThrowsIfOnHandleReturnsArrayContainingNonconvertableTypes() { HttpParameter hpd = new HttpParameter("arg1", typeof(PocoType)); HttpParameter[] parameters = new HttpParameter[] { hpd }; SHttpOperationHandler handler = new SHttpOperationHandler() { CallBase = true }; handler.OnGetInputParameters01 = () => parameters; handler.OnGetOutputParameters01 = () => parameters; handler.OnHandleObjectArray = (oArray) => new object[] { "notAPocoType" }; string errorMessage = SR.HttpOperationHandlerReceivedWrongType( typeof(HttpOperationHandler).Name, handler.ToString(), handler.OperationName, hpd.Type.Name, hpd.Name, typeof(string).Name); ExceptionAssert.Throws <InvalidOperationException>( errorMessage, () => handler.Handle(new object[] { "fred" }) ); }
public void ConstructorCallsOnGetInputParametersOfAllRequestHandlers() { List<HttpOperationHandler> requestHandlers = new List<HttpOperationHandler>(); List<HttpOperationHandler> responseHandlers = new List<HttpOperationHandler>(); SHttpOperationHandler requestHandler1 = new SHttpOperationHandler(); requestHandlers.Add(requestHandler1); bool onGetInputParamters1Called = false; requestHandler1.OnGetOutputParameters01 = () => null; requestHandler1.OnGetInputParameters01 = () => { onGetInputParamters1Called = true; return null; }; SHttpOperationHandler requestHandler2 = new SHttpOperationHandler(); requestHandlers.Add(requestHandler2); bool onGetInputParamters2Called = false; requestHandler2.OnGetOutputParameters01 = () => null; requestHandler2.OnGetInputParameters01 = () => { onGetInputParamters2Called = true; return null; }; SHttpOperationDescription operation = new SHttpOperationDescription(); operation.ReturnValue = HttpParameter.ResponseMessage; OperationHandlerPipelineInfo pipelineInfo = new OperationHandlerPipelineInfo(requestHandlers, responseHandlers, operation); Assert.IsTrue(onGetInputParamters1Called, "The OnGetInputParameters() method of requestHandler1 was not called."); Assert.IsTrue(onGetInputParamters2Called, "The OnGetInputParameters() method of requestHandler2 was not called."); }
public void InputParametersCallsOnGetInputParmeters() { SHttpOperationHandler handler = new SHttpOperationHandler(); bool wereCalled = false; handler.OnGetInputParameters01 = () => { wereCalled = true; return(new HttpParameter[0]); }; ReadOnlyCollection <HttpParameter> arguments = handler.InputParameters; Assert.IsTrue(wereCalled, "OnGetInputParameters was not called."); }
public void InputParametersDoesNotCallOnGetInputParmetersTwice() { SHttpOperationHandler handler = new SHttpOperationHandler(); int callCount = 0; handler.OnGetInputParameters01 = () => { ++callCount; return(new HttpParameter[0]); }; ReadOnlyCollection <HttpParameter> arguments1 = handler.InputParameters; ReadOnlyCollection <HttpParameter> arguments2 = handler.InputParameters; Assert.AreEqual(1, callCount, "OnGetInputParameters was called more than once."); }
public void InputParametersAcceptsNullFromOnGetInputParmeters() { SHttpOperationHandler handler = new SHttpOperationHandler(); bool wereCalled = false; handler.OnGetInputParameters01 = () => { wereCalled = true; return(null); }; ReadOnlyCollection <HttpParameter> arguments = handler.InputParameters; Assert.IsTrue(wereCalled, "OnGetInputParameters was not called."); Assert.AreEqual(0, arguments.Count, "Collection should have been empty."); }
public void InputParametersReturnsReadOnlyCollection() { SHttpOperationHandler handler = new SHttpOperationHandler(); handler.OnGetInputParameters01 = () => new HttpParameter[] { new HttpParameter("arg1", typeof(string)) }; ReadOnlyCollection <HttpParameter> arguments = handler.InputParameters; Assert.IsNotNull(arguments, "InputParameters should never be null."); Assert.AreEqual(1, arguments.Count, "InputParameters.Count should have been 1."); HttpParameter hpd = arguments[0]; Assert.AreEqual("arg1", hpd.Name, "Did not set inputParameters[0] corectly."); }
public void OutputParametersPreservesOrderFromOnGetOutputParameters() { HttpParameter[] parameters = new HttpParameter[] { new HttpParameter("arg1", typeof(string)), new HttpParameter("arg2", typeof(int)) }; SHttpOperationHandler handler = new SHttpOperationHandler(); handler.OnGetOutputParameters01 = () => parameters; ReadOnlyCollection <HttpParameter> arguments = handler.OutputParameters; HttpParameterAssert.AreEqual(parameters, arguments, "Order was not preserved."); }
public void ConstructorAcceptsAnEmptyResponseHandlersCollection() { List<HttpOperationHandler> requestHandlers = new List<HttpOperationHandler>(); SHttpOperationHandler handler = new SHttpOperationHandler(); handler.OnGetInputParameters01 = () => null; handler.OnGetOutputParameters01 = () => null; requestHandlers.Add(handler); List<HttpOperationHandler> responseHandlers = new List<HttpOperationHandler>(); SHttpOperationDescription operation = new SHttpOperationDescription(); operation.ReturnValue = HttpParameter.ResponseMessage; OperationHandlerPipelineInfo pipelineInfo = new OperationHandlerPipelineInfo(requestHandlers, responseHandlers, operation); }
public void HandleThrowsWithNullInput() { HttpParameter[] parameters = new HttpParameter[] { new HttpParameter("arg1", typeof(string)), }; SHttpOperationHandler handler = new SHttpOperationHandler() { CallBase = true }; handler.OnGetInputParameters01 = () => parameters; handler.OnGetOutputParameters01 = () => parameters; ExceptionAssert.ThrowsArgumentNull("input", () => handler.Handle(null)); }
public void HandleCallsOnHandle() { HttpParameter[] parameters = new HttpParameter[] { new HttpParameter("arg1", typeof(string)), }; SHttpOperationHandler handler = new SHttpOperationHandler(); bool called = false; handler.OnGetInputParameters01 = () => parameters; handler.OnGetOutputParameters01 = () => parameters; handler.OnHandleObjectArray = (oArray) => { called = true; return(oArray); }; handler.Handle(new object[] { "fred" }); Assert.IsTrue(called, "Handle did not call OnHandle."); }
public void OutputParametersClonesParametersFromOnGetInputParameters() { HttpParameter[] parameters = new HttpParameter[] { new HttpParameter("arg1", typeof(string)), }; SHttpOperationHandler handler = new SHttpOperationHandler(); handler.OnGetOutputParameters01 = () => parameters; ReadOnlyCollection <HttpParameter> arguments = handler.OutputParameters; bool isContentParameterOriginal = parameters[0].IsContentParameter; bool isContentParameterCloned = arguments[0].IsContentParameter; Assert.AreEqual(isContentParameterOriginal, isContentParameterCloned, "IsContentParameter property was not properly cloned."); parameters[0].IsContentParameter = !isContentParameterOriginal; Assert.AreEqual(isContentParameterOriginal, isContentParameterCloned, "IsContentParameter property on original should not have affected clone."); }
public void HandlePropagatesExceptionFromOnHandle() { HttpParameter hpd = new HttpParameter("arg1", typeof(int)); HttpParameter[] parameters = new HttpParameter[] { hpd }; SHttpOperationHandler handler = new SHttpOperationHandler(); handler.OnGetInputParameters01 = () => parameters; handler.OnGetOutputParameters01 = () => parameters; handler.OnHandleObjectArray = (oArray) => { throw new NotSupportedException("myMessage"); }; ExceptionAssert.Throws <NotSupportedException>( "myMessage", () => handler.Handle(new object[] { 5 }) ); }
public void HandleReturnsEmptyArrayIfOnHandleReturnsNull() { HttpParameter[] parameters = new HttpParameter[] { new HttpParameter("arg1", typeof(string)), }; SHttpOperationHandler handler = new SHttpOperationHandler(); handler.OnGetInputParameters01 = () => parameters; handler.OnGetOutputParameters01 = () => parameters; handler.OnHandleObjectArray = (oArray) => null; object[] result = handler.Handle(new object[] { "fred" }); Assert.IsNotNull(result, "Handle returned null."); Assert.AreEqual(1, result.Length, "Handle returned wrong length array."); Assert.IsNull(result[0], "Handle did not return empty array."); }
public void HandleThrowsWithTooLargeInput() { HttpParameter[] parameters = new HttpParameter[] { new HttpParameter("arg1", typeof(string)), }; SHttpOperationHandler handler = new SHttpOperationHandler() { CallBase = true }; handler.OnGetInputParameters01 = () => parameters; handler.OnGetOutputParameters01 = () => parameters; string errorMessage = SR.HttpOperationHandlerReceivedWrongNumberOfValues( typeof(HttpOperationHandler).Name, handler.ToString(), handler.OperationName, parameters.Length, 2); ExceptionAssert.Throws <InvalidOperationException>(errorMessage, () => handler.Handle(new object[2])); }
public void HandleThrowsWitUnconvertableInput() { HttpParameter[] parameters = new HttpParameter[] { new HttpParameter("arg1", typeof(string)), }; SHttpOperationHandler handler = new SHttpOperationHandler() { CallBase = true }; handler.OnGetInputParameters01 = () => parameters; handler.OnGetOutputParameters01 = () => parameters; string errorMessage = SR.HttpOperationHandlerReceivedWrongType( typeof(HttpOperationHandler).Name, handler.ToString(), handler.OperationName, parameters[0].Type.Name, parameters[0].Name, typeof(PocoType).Name); ExceptionAssert.Throws <InvalidOperationException>(errorMessage, () => handler.Handle(new object[] { new PocoType() })); }
public void SetOutputValuesFromHandlerSetsValuesOnBoundInputs() { List<HttpOperationHandler> requestHandlers = new List<HttpOperationHandler>(); List<HttpOperationHandler> responseHandlers = new List<HttpOperationHandler>(); SHttpOperationHandler requestHandler1 = new SHttpOperationHandler(); requestHandlers.Add(requestHandler1); requestHandler1.OnGetInputParameters01 = () => new HttpParameter[] { HttpParameter.RequestMessage }; requestHandler1.OnGetOutputParameters01 = () => new HttpParameter[] { new HttpParameter("anotherMessage", typeof(HttpRequestMessage)), HttpParameter.RequestHeaders }; SHttpOperationDescription operation = new SHttpOperationDescription(); operation.Name = "operationName"; operation.ReturnValue = HttpParameter.ResponseMessage; operation.InputParameters.Add(HttpParameter.RequestHeaders); operation.InputParameters.Add(new HttpParameter("aThirdMessage", typeof(HttpRequestMessage))); operation.OutputParameters.Add(new HttpParameter("unknown", typeof(DateTime))); SHttpOperationHandler responseHandler1 = new SHttpOperationHandler(); responseHandlers.Add(responseHandler1); responseHandler1.OnGetInputParameters01 = () => new HttpParameter[] { new HttpParameter("aDateTime", typeof(DateTime)) }; responseHandler1.OnGetOutputParameters01 = () => null; OperationHandlerPipelineInfo pipelineInfo = new OperationHandlerPipelineInfo(requestHandlers, responseHandlers, operation); object[] array = pipelineInfo.GetEmptyPipelineValuesArray(); object obj1 = new object(); object obj2 = new object(); object[] requestHandlerOutputs = new object[] { obj1, obj2 }; object obj3 = new HttpResponseMessage(); object obj4 = DateTime.Now; object[] serviceOperationOutputs = new object[] { obj3, obj4 }; pipelineInfo.SetOutputValuesFromHandler(1, requestHandlerOutputs, array); Assert.AreSame(obj1, array[2], "SetOutputValuesFromHandler didn't set the correct output values for the request handler."); Assert.AreSame(obj2, array[1], "SetOutputValuesFromHandler didn't set the correct output values for the request handler."); pipelineInfo.SetOutputValuesFromHandler(2, serviceOperationOutputs, array); Assert.AreSame(obj3, array[4], "SetOutputValuesFromHandler didn't set the correct output values for the service operation."); Assert.AreSame(obj4, array[3], "SetOutputValuesFromHandler didn't set the correct output values for the service operation."); }
public void SetHttpRequestMessageAddsHttpRequestMessageToTheArray() { List<HttpOperationHandler> requestHandlers = new List<HttpOperationHandler>(); List<HttpOperationHandler> responseHandlers = new List<HttpOperationHandler>(); SHttpOperationHandler requestHandler1 = new SHttpOperationHandler(); requestHandlers.Add(requestHandler1); requestHandler1.OnGetInputParameters01 = () => new HttpParameter[] { HttpParameter.RequestMessage }; requestHandler1.OnGetOutputParameters01 = () => new HttpParameter[] { new HttpParameter("anotherMessage", typeof(HttpRequestMessage)), HttpParameter.RequestHeaders }; SHttpOperationDescription operation = new SHttpOperationDescription(); operation.Name = "operationName"; operation.ReturnValue = HttpParameter.ResponseMessage; operation.InputParameters.Add(HttpParameter.RequestHeaders); operation.InputParameters.Add(new HttpParameter("aThirdMessage", typeof(HttpRequestMessage))); operation.OutputParameters.Add(new HttpParameter("unknown", typeof(DateTime))); SHttpOperationHandler responseHandler1 = new SHttpOperationHandler(); responseHandlers.Add(responseHandler1); responseHandler1.OnGetInputParameters01 = () => new HttpParameter[] { new HttpParameter("aDateTime", typeof(DateTime)) }; responseHandler1.OnGetOutputParameters01 = () => null; OperationHandlerPipelineInfo pipelineInfo = new OperationHandlerPipelineInfo(requestHandlers, responseHandlers, operation); object[] array = pipelineInfo.GetEmptyPipelineValuesArray(); HttpRequestMessage request = new HttpRequestMessage(); pipelineInfo.SetHttpRequestMessage(request, array); Assert.AreSame(request, array[0], "The HttpRequestMessage was not added to the first array indice although the input parameter is bound to the HttpRequestMessage."); Assert.IsNull(array[1], "The HttpRequestMessage was added to the second array indice although the input parameter is not bound to the HttpRequestMessage."); Assert.AreSame(request, array[2], "The HttpRequestMessage was not added to the third array indice although the input parameter is bound to the HttpRequestMessage."); Assert.IsNull(array[3], "The HttpRequestMessage was added to the fourth array indice although the input parameter is not bound to the HttpRequestMessage."); Assert.IsNull(array[4], "The HttpRequestMessage was added to the fifth array indice although the input parameter is not bound to the HttpRequestMessage."); }
public void GetInputValuesForHandlerReturnsInputsForAGivenHandler() { List<HttpOperationHandler> requestHandlers = new List<HttpOperationHandler>(); List<HttpOperationHandler> responseHandlers = new List<HttpOperationHandler>(); SHttpOperationHandler requestHandler1 = new SHttpOperationHandler(); requestHandlers.Add(requestHandler1); requestHandler1.OnGetInputParameters01 = () => new HttpParameter[] { HttpParameter.RequestMessage }; requestHandler1.OnGetOutputParameters01 = () => new HttpParameter[] { new HttpParameter("anotherMessage", typeof(HttpRequestMessage)), HttpParameter.RequestHeaders }; SHttpOperationDescription operation = new SHttpOperationDescription(); operation.Name = "operationName"; operation.ReturnValue = HttpParameter.ResponseMessage; operation.InputParameters.Add(HttpParameter.RequestHeaders); operation.InputParameters.Add(new HttpParameter("aThirdMessage", typeof(HttpRequestMessage))); operation.OutputParameters.Add(new HttpParameter("unknown", typeof(DateTime))); SHttpOperationHandler responseHandler1 = new SHttpOperationHandler(); responseHandlers.Add(responseHandler1); responseHandler1.OnGetInputParameters01 = () => new HttpParameter[] { new HttpParameter("aDateTime", typeof(DateTime)) }; responseHandler1.OnGetOutputParameters01 = () => null; OperationHandlerPipelineInfo pipelineInfo = new OperationHandlerPipelineInfo(requestHandlers, responseHandlers, operation); object[] array = pipelineInfo.GetEmptyPipelineValuesArray(); object obj1 = new object(); array[0] = obj1; object obj2 = new HttpRequestMessage().Headers; array[1] = obj2; object obj3 = new HttpRequestMessage(); array[2] = obj3; object obj4 = new object(); array[3] = obj4; object[] requestSourceInputs = pipelineInfo.GetInputValuesForHandler(0, array); object[] requestHandlerInputs = pipelineInfo.GetInputValuesForHandler(1, array); object[] serviceOperationInputs = pipelineInfo.GetInputValuesForHandler(2, array); object[] responseHandlerInputs = pipelineInfo.GetInputValuesForHandler(3, array); object[] responseSinkInputs = pipelineInfo.GetInputValuesForHandler(4, array); Assert.AreEqual(0, requestSourceInputs.Length, "GetInputValuesForHandler returned the wrong number of input values for the request source handler."); Assert.AreEqual(1, requestHandlerInputs.Length, "GetInputValuesForHandler returned the wrong number of input values for the request handler."); Assert.AreSame(obj1, requestHandlerInputs[0], "GetInputValuesForHandler returned the wrong input value for the request handler."); Assert.AreEqual(2, serviceOperationInputs.Length, "GetInputValuesForHandler returned the wrong number of input values for the service operation."); Assert.AreSame(obj2, serviceOperationInputs[0], "GetInputValuesForHandler returned the wrong input value for the service operation."); Assert.AreSame(obj3, serviceOperationInputs[1], "GetInputValuesForHandler returned the wrong input value for the service operation."); Assert.AreEqual(1, responseHandlerInputs.Length, "GetInputValuesForHandler returned the wrong number of input values for the response handler."); Assert.AreSame(obj4, responseHandlerInputs[0], "GetInputValuesForHandler returned the wrong input value for the response handler."); Assert.AreEqual(1, responseSinkInputs.Length, "GetInputValuesForHandler returned the wrong number of input values for the response sink handler."); }
public void GetHttpResponseMessageReturnsNullIfNoHttpResponseMessage() { List<HttpOperationHandler> requestHandlers = new List<HttpOperationHandler>(); List<HttpOperationHandler> responseHandlers = new List<HttpOperationHandler>(); SHttpOperationHandler requestHandler1 = new SHttpOperationHandler(); requestHandlers.Add(requestHandler1); requestHandler1.OnGetInputParameters01 = () => new HttpParameter[] { HttpParameter.RequestMessage }; requestHandler1.OnGetOutputParameters01 = () => new HttpParameter[] { new HttpParameter("anInt", typeof(string)) }; SHttpOperationDescription operation = new SHttpOperationDescription(); operation.Name = "operationName"; operation.ReturnValue = HttpParameter.ResponseMessage; operation.InputParameters.Add(new HttpParameter("anInt", typeof(int))); operation.OutputParameters.Add(new HttpParameter("unknown", typeof(DateTime))); SHttpOperationHandler responseHandler1 = new SHttpOperationHandler(); responseHandlers.Add(responseHandler1); responseHandler1.OnGetInputParameters01 = () => new HttpParameter[] { new HttpParameter("aDateTime", typeof(DateTime)) }; responseHandler1.OnGetOutputParameters01 = () => null; OperationHandlerPipelineInfo pipelineInfo = new OperationHandlerPipelineInfo(requestHandlers, responseHandlers, operation); object[] array = pipelineInfo.GetEmptyPipelineValuesArray(); array[array.Length - 1] = null; HttpResponseMessage responseFromArray = pipelineInfo.GetHttpResponseMessage(array); Assert.IsNull(responseFromArray, "GetHttpResponseMessage() did not return the null value from the last indice of the array."); }
public void GetEmptyPipelineValueArrayReturnsAnArrayInstance() { List<HttpOperationHandler> requestHandlers = new List<HttpOperationHandler>(); List<HttpOperationHandler> responseHandlers = new List<HttpOperationHandler>(); SHttpOperationHandler requestHandler1 = new SHttpOperationHandler(); requestHandlers.Add(requestHandler1); requestHandler1.OnGetInputParameters01 = () => new HttpParameter[] { HttpParameter.RequestMessage }; requestHandler1.OnGetOutputParameters01 = () => new HttpParameter[] { new HttpParameter("anInt", typeof(string)) }; SHttpOperationDescription operation = new SHttpOperationDescription(); operation.Name = "operationName"; operation.ReturnValue = HttpParameter.ResponseMessage; operation.InputParameters.Add(new HttpParameter("anInt", typeof(int))); operation.OutputParameters.Add(new HttpParameter("unknown", typeof(DateTime))); SHttpOperationHandler responseHandler1 = new SHttpOperationHandler(); responseHandlers.Add(responseHandler1); responseHandler1.OnGetInputParameters01 = () => new HttpParameter[] { new HttpParameter("aDateTime", typeof(DateTime)) }; responseHandler1.OnGetOutputParameters01 = () => null; OperationHandlerPipelineInfo pipelineInfo = new OperationHandlerPipelineInfo(requestHandlers, responseHandlers, operation); object[] array = pipelineInfo.GetEmptyPipelineValuesArray(); Assert.AreEqual(4, array.Length, "The returned array length was not the count of input parameters plus one for the HttpResponseMessage."); }
public void ConstructorThrowsIfAServiceOperationInputHasMultipleTypeOnlyBindings() { List<HttpOperationHandler> requestHandlers = new List<HttpOperationHandler>(); List<HttpOperationHandler> responseHandlers = new List<HttpOperationHandler>(); SHttpOperationHandler requestHandler1 = new SHttpOperationHandler(); requestHandler1.CallBase = true; requestHandlers.Add(requestHandler1); requestHandler1.OnGetInputParameters01 = () => null; requestHandler1.OnGetOutputParameters01 = () => new HttpParameter[] { new HttpParameter("dateTime1", typeof(DateTime)) }; SHttpOperationHandler requestHandler2 = new SHttpOperationHandler(); requestHandler2.CallBase = true; requestHandlers.Add(requestHandler2); requestHandler2.OnGetInputParameters01 = () => null; requestHandler2.OnGetOutputParameters01 = () => new HttpParameter[] { new HttpParameter("dateTime2", typeof(DateTime)) }; SHttpOperationDescription operation = new SHttpOperationDescription(); operation.Name = "operationName"; operation.ReturnValue = HttpParameter.ResponseMessage; operation.InputParameters.Add(new HttpParameter("dateTime3", typeof(DateTime))); string exceptionMessage = SR.ServiceOperationWithMultipleTypeOnlyBindings( "operationName", "dateTime3", "DateTime", HttpOperationHandler.HttpOperationHandlerType.Name); string paramMessage1 = SR.RequestHandlerTypeOnlyOutputParameter( HttpOperationHandler.HttpOperationHandlerType.Name, requestHandler2.ToString(), "dateTime2", "DateTime"); string paramMessage2 = SR.RequestHandlerTypeOnlyOutputParameter( HttpOperationHandler.HttpOperationHandlerType.Name, requestHandler1.ToString(), "dateTime1", "DateTime"); string completeMessage = string.Format("{0}{3}{1}{3}{2}", exceptionMessage, paramMessage1, paramMessage2, Environment.NewLine); ExceptionAssert.Throws<InvalidOperationException>(completeMessage, () => new OperationHandlerPipelineInfo(requestHandlers, responseHandlers, operation)); }
public void ConstructorThrowsIfAServiceOperationInputCanNotBeBoundAndItCanBeConvertedToFromAString() { List<HttpOperationHandler> requestHandlers = new List<HttpOperationHandler>(); List<HttpOperationHandler> responseHandlers = new List<HttpOperationHandler>(); SHttpOperationHandler requestHandler1 = new SHttpOperationHandler(); requestHandlers.Add(requestHandler1); requestHandler1.OnGetInputParameters01 = () => null; requestHandler1.OnGetOutputParameters01 = () => new HttpParameter[] { new HttpParameter("someOutput", typeof(string)) }; SHttpOperationDescription operation = new SHttpOperationDescription(); operation.Name = "operationName"; operation.ReturnValue = HttpParameter.ResponseMessage; operation.InputParameters.Add(new HttpParameter("someInt", typeof(int))); string exceptionMessage = SR.ServiceOperationWithNoPossibleBindingForStringConvertableType( "operationName", "someInt", "Int32", HttpOperationHandler.HttpOperationHandlerType.Name); ExceptionAssert.Throws<InvalidOperationException>(exceptionMessage, () => new OperationHandlerPipelineInfo(requestHandlers, responseHandlers, operation)); }
public void ConstructorThrowsIfAResponseHandlerInputCanNotBeBound() { List<HttpOperationHandler> requestHandlers = new List<HttpOperationHandler>(); List<HttpOperationHandler> responseHandlers = new List<HttpOperationHandler>(); SHttpOperationDescription operation = new SHttpOperationDescription(); operation.Name = "operationName"; operation.ReturnValue = HttpParameter.ResponseMessage; operation.OutputParameters.Add(new HttpParameter("someOutput", typeof(string))); SHttpOperationHandler responseHandler1 = new SHttpOperationHandler(); responseHandler1.CallBase = true; responseHandlers.Add(responseHandler1); responseHandler1.OnGetInputParameters01 = () => new HttpParameter[] { new HttpParameter("pocoType", typeof(PocoType)) }; responseHandler1.OnGetOutputParameters01 = () => null; string exceptionMessage = SR.ResponseHandlerWithNoPossibleBindingForNonStringConvertableType( HttpOperationHandler.HttpOperationHandlerType.Name, responseHandler1.ToString(), "operationName", "pocoType", "PocoType", responseHandler1.GetType().Name); ExceptionAssert.Throws<InvalidOperationException>(exceptionMessage, () => new OperationHandlerPipelineInfo(requestHandlers, responseHandlers, operation)); }
public void ConstructorDoesNotThrowIfTheOperationHandlerPipelineCanBindSuccessfully() { List<HttpOperationHandler> requestHandlers = new List<HttpOperationHandler>(); List<HttpOperationHandler> responseHandlers = new List<HttpOperationHandler>(); SHttpOperationHandler requestHandler1 = new SHttpOperationHandler(); requestHandlers.Add(requestHandler1); requestHandler1.OnGetInputParameters01 = () => new HttpParameter[] { HttpParameter.RequestMessage }; requestHandler1.OnGetOutputParameters01 = () => new HttpParameter[] { new HttpParameter("anInt", typeof(string)) }; SHttpOperationDescription operation = new SHttpOperationDescription(); operation.Name = "operationName"; operation.ReturnValue = HttpParameter.ResponseMessage; operation.InputParameters.Add(new HttpParameter("anInt", typeof(int))); operation.OutputParameters.Add(new HttpParameter("unknown", typeof(DateTime))); SHttpOperationHandler responseHandler1 = new SHttpOperationHandler(); responseHandlers.Add(responseHandler1); responseHandler1.OnGetInputParameters01 = () => new HttpParameter[] { new HttpParameter("aDateTime", typeof(DateTime)) }; responseHandler1.OnGetOutputParameters01 = () => null; OperationHandlerPipelineInfo pipelineInfo = new OperationHandlerPipelineInfo(requestHandlers, responseHandlers, operation); }
public void ConstructorDoesNotCallOnHandleOfAnyResponseHandlers() { List<HttpOperationHandler> requestHandlers = new List<HttpOperationHandler>(); List<HttpOperationHandler> responseHandlers = new List<HttpOperationHandler>(); SHttpOperationHandler responseHandler1 = new SHttpOperationHandler(); responseHandlers.Add(responseHandler1); responseHandler1.OnGetInputParameters01 = () => null; responseHandler1.OnGetOutputParameters01 = () => null; responseHandler1.OnHandleObjectArray = (inputs) => { Assert.Fail("OnHandle() was called."); return null; }; SHttpOperationHandler responseHandler2 = new SHttpOperationHandler(); responseHandlers.Add(responseHandler2); responseHandler2.OnGetInputParameters01 = () => null; responseHandler2.OnGetOutputParameters01 = () => null; responseHandler2.OnHandleObjectArray = (inputs) => { Assert.Fail("OnHandle() was called."); return null; }; SHttpOperationDescription operation = new SHttpOperationDescription(); operation.ReturnValue = HttpParameter.ResponseMessage; OperationHandlerPipelineInfo pipelineInfo = new OperationHandlerPipelineInfo(requestHandlers, responseHandlers, operation); }