Exemple #1
0
        private async Task <InterceptedResponse> GetResponseFromLocalTargetAsync(IOnPremiseTargetConnector connector, string url, IOnPremiseTargetRequest onPremiseTargetRequest, string relayedRequestHeader)
        {
            var request = new InterceptedRequest(onPremiseTargetRequest);

            try
            {
                var requestInterceptor = _onPremiseInterceptorFactory.CreateOnPremiseRequestInterceptor();
                requestInterceptor?.HandleRequest(request);
            }
            catch (Exception ex)
            {
                _logger?.Error(ex, "Error during intercepting the request. request-id={RequestId}", request.RequestId);
            }

            var onPremiseTargetResponse = await connector.GetResponseFromLocalTargetAsync(url, request, relayedRequestHeader).ConfigureAwait(false);

            var response = new InterceptedResponse(onPremiseTargetResponse);

            try
            {
                var responseInterceptor = _onPremiseInterceptorFactory.CreateOnPremiseResponseInterceptor();
                responseInterceptor?.HandleResponse(request, response);
            }
            catch (Exception ex)
            {
                _logger?.Error(ex, "Error during intercepting the response. request-id={RequestId}", request.RequestId);
            }

            return(response);
        }
        public void CanSetRequestPayloadAndReceiveItBackInInterceptedRequest()
        {
            // ARRANGE
            var requestPayload = "Test Payload";

            InterceptedRequest interceptedRequest = null;
            var responseCreator = new Func <InterceptedRequest, HttpWebResponse>(req =>
            {
                interceptedRequest = req;
                return(null);
            });

            IWebRequestCreate creator = new HttpWebRequestWrapperInterceptorCreator(responseCreator);
            var request = creator.Create(new Uri("http://fakeSite.fake"));

            request.Method = "POST";

            using (var sw = new StreamWriter(request.GetRequestStream()))
                sw.Write(requestPayload);

            // ACT
            request.GetResponse();

            // ASSERT
            interceptedRequest.ShouldNotBeNull();
            interceptedRequest.RequestPayload.ShouldEqual(requestPayload);
        }