public void Constructor() { SHttpOperationDescription operation = new SHttpOperationDescription() { CallBase = true, ReturnValue = HttpParameter.ResponseMessage }; IEnumerable<HttpOperationHandler> emptyHandlers = Enumerable.Empty<HttpOperationHandler>(); OperationHandlerPipeline pipeline = new OperationHandlerPipeline(emptyHandlers, emptyHandlers, operation); OperationHandlerFormatter formatter = new OperationHandlerFormatter(pipeline); }
public void Constructor() { SHttpOperationDescription operation = new SHttpOperationDescription() { CallBase = true, ReturnValue = HttpParameter.ResponseMessage }; IEnumerable <HttpOperationHandler> emptyHandlers = Enumerable.Empty <HttpOperationHandler>(); OperationHandlerPipeline pipeline = new OperationHandlerPipeline(emptyHandlers, emptyHandlers, operation); OperationHandlerFormatter formatter = new OperationHandlerFormatter(pipeline); }
public void OnDeserializeRequestExecutesRequestPipeline() { SHttpOperationDescription operation = new SHttpOperationDescription() { CallBase = true, ReturnValue = HttpParameter.ResponseMessage }; IEnumerable <HttpOperationHandler> emptyHandlers = Enumerable.Empty <HttpOperationHandler>(); OperationHandlerPipeline pipeline = new OperationHandlerPipeline(emptyHandlers, emptyHandlers, operation); MOperationHandlerPipeline molePipeline = new MOperationHandlerPipeline(pipeline); molePipeline.BehaveAsDefaultValue(); MOperationHandlerPipelineContext moleContext = new MOperationHandlerPipelineContext(); HttpRequestMessage setRequest = null; object[] setValues = null; OperationHandlerPipelineContext setContext = null; molePipeline.ExecuteRequestPipelineHttpRequestMessageObjectArray = (request, values) => { setRequest = request; setValues = values; return(setContext = moleContext); }; OperationHandlerFormatter formatter = new OperationHandlerFormatter(molePipeline); IDispatchMessageFormatter dispatchMessageFormatter = (IDispatchMessageFormatter)formatter; Uri uri = new Uri("http://somehost/Fred"); HttpRequestMessage httpRequest = new HttpRequestMessage(HttpMethod.Get, uri); httpRequest.Content = new StringContent(""); Message message = httpRequest.ToMessage(); object[] parameters = new object[0]; dispatchMessageFormatter.DeserializeRequest(message, parameters); HttpAssert.AreEqual(httpRequest, setRequest); Assert.IsNotNull(setValues, "Input values were not passed to the pipeline."); Assert.AreEqual(0, ((object[])setValues).Length, "Incorrect number of values."); Assert.IsNotNull(setContext, "Context was not set."); }
public void OnSerializeReplyExecutesResponsePipeline() { SHttpOperationDescription operation = new SHttpOperationDescription() { CallBase = true, ReturnValue = HttpParameter.ResponseMessage }; IEnumerable <HttpOperationHandler> emptyHandlers = Enumerable.Empty <HttpOperationHandler>(); OperationHandlerPipeline pipeline = new OperationHandlerPipeline(emptyHandlers, emptyHandlers, operation); MOperationHandlerPipeline molePipeline = new MOperationHandlerPipeline(pipeline); molePipeline.BehaveAsDefaultValue(); MOperationHandlerPipelineContext moleContext = new MOperationHandlerPipelineContext(); HttpResponseMessage response = new HttpResponseMessage(); OperationHandlerPipelineContext setContext = null; object[] setValues = null; object setResult = null; molePipeline.ExecuteResponsePipelineOperationHandlerPipelineContextObjectArrayObject = (context, values, result) => { setContext = context; setValues = values; setResult = result; return(response); }; OperationHandlerFormatter formatter = new OperationHandlerFormatter(molePipeline); IDispatchMessageFormatter dispatchMessageFormatter = (IDispatchMessageFormatter)formatter; object[] parameters = new object[] { 1, "text" }; Message message = dispatchMessageFormatter.SerializeReply(MessageVersion.None, parameters, "theResult"); Assert.IsNotNull(setValues, "Input values were not passed to the pipeline."); CollectionAssert.AreEqual(new List <object>(parameters), new List <object>(setValues), "Parameters were not passed correctly."); Assert.AreEqual("theResult", setResult, "Result was not passed correctly."); Assert.IsNotNull(setContext, "Context was not set."); }
public void OnDeserializeRequestExecutesRequestPipeline() { SHttpOperationDescription operation = new SHttpOperationDescription() { CallBase = true, ReturnValue = HttpParameter.ResponseMessage }; IEnumerable<HttpOperationHandler> emptyHandlers = Enumerable.Empty<HttpOperationHandler>(); OperationHandlerPipeline pipeline = new OperationHandlerPipeline(emptyHandlers, emptyHandlers, operation); MOperationHandlerPipeline molePipeline = new MOperationHandlerPipeline(pipeline); molePipeline.BehaveAsDefaultValue(); MOperationHandlerPipelineContext moleContext = new MOperationHandlerPipelineContext(); HttpRequestMessage setRequest = null; object[] setValues = null; OperationHandlerPipelineContext setContext = null; molePipeline.ExecuteRequestPipelineHttpRequestMessageObjectArray = (request, values) => { setRequest = request; setValues = values; return setContext = moleContext; }; OperationHandlerFormatter formatter = new OperationHandlerFormatter(molePipeline); IDispatchMessageFormatter dispatchMessageFormatter = (IDispatchMessageFormatter)formatter; Uri uri = new Uri("http://somehost/Fred"); HttpRequestMessage httpRequest = new HttpRequestMessage(HttpMethod.Get, uri); httpRequest.Content = new StringContent(""); Message message = httpRequest.ToMessage(); object[] parameters = new object[0]; dispatchMessageFormatter.DeserializeRequest(message, parameters); HttpAssert.AreEqual(httpRequest, setRequest); Assert.IsNotNull(setValues, "Input values were not passed to the pipeline."); Assert.AreEqual(0, ((object[])setValues).Length, "Incorrect number of values."); Assert.IsNotNull(setContext, "Context was not set."); }
/// <summary> /// Gets the <see cref="HttpMessageFormatter"/> to use for the given /// <paramref name="operations"/> for the specified <paramref name="endpoint"/>. /// </summary> /// <remarks> /// The base implementation returns an <see cref="HttpMessageFormatter"/> with the /// <see cref="HttpOperationHandler"/> insances applied to the given operation. /// </remarks> /// <param name="endpoint">The endpoint exposing the operations.</param> /// <param name="operation">The <see cref="HttpOperationDescription"/>.</param> /// <returns>The <see cref="HttpMessageFormatter"/> to use for the <paramref name="operation"/>.</returns> protected virtual HttpMessageFormatter OnGetMessageFormatter(ServiceEndpoint endpoint, HttpOperationDescription operation) { Fx.Assert(endpoint != null, "The 'endpoint' parameter should not be null."); Fx.Assert(operation != null, "The 'operation' parameter should not be null."); OperationHandlerPipeline pipeline = null; if (this.OperationHandlerFactory == null) { Collection<HttpOperationHandler> handlers = new Collection<HttpOperationHandler>(); pipeline = new OperationHandlerPipeline(handlers, handlers, operation); } else { Collection<HttpOperationHandler> requestHandlers = this.OperationHandlerFactory.CreateRequestHandlers(endpoint, operation); Collection<HttpOperationHandler> responseHandlers = this.OperationHandlerFactory.CreateResponseHandlers(endpoint, operation); pipeline = new OperationHandlerPipeline(requestHandlers, responseHandlers, operation); } OperationHandlerFormatter formatter = new OperationHandlerFormatter(pipeline); return formatter; }
public void OnSerializeReplyExecutesResponsePipeline() { SHttpOperationDescription operation = new SHttpOperationDescription() { CallBase = true, ReturnValue = HttpParameter.ResponseMessage }; IEnumerable<HttpOperationHandler> emptyHandlers = Enumerable.Empty<HttpOperationHandler>(); OperationHandlerPipeline pipeline = new OperationHandlerPipeline(emptyHandlers, emptyHandlers, operation); MOperationHandlerPipeline molePipeline = new MOperationHandlerPipeline(pipeline); molePipeline.BehaveAsDefaultValue(); MOperationHandlerPipelineContext moleContext = new MOperationHandlerPipelineContext(); HttpResponseMessage response = new HttpResponseMessage(); OperationHandlerPipelineContext setContext = null; object[] setValues = null; object setResult = null; molePipeline.ExecuteResponsePipelineOperationHandlerPipelineContextObjectArrayObject = (context, values, result) => { setContext = context; setValues = values; setResult = result; return response; }; OperationHandlerFormatter formatter = new OperationHandlerFormatter(molePipeline); IDispatchMessageFormatter dispatchMessageFormatter = (IDispatchMessageFormatter)formatter; object[] parameters = new object[] { 1, "text" }; Message message = dispatchMessageFormatter.SerializeReply(MessageVersion.None, parameters, "theResult"); Assert.IsNotNull(setValues, "Input values were not passed to the pipeline."); CollectionAssert.AreEqual(new List<object>(parameters), new List<object>(setValues), "Parameters were not passed correctly."); Assert.AreEqual("theResult", setResult, "Result was not passed correctly."); Assert.IsNotNull(setContext, "Context was not set."); }