public async Task ReturnCorrectStatusCodeAfterProxyingCallAsync()
        {
            // Arrange
            IProxyRelayCallService proxyRelayCallService = A.Fake <IProxyRelayCallService>();
            ILogger logger      = A.Fake <ILogger>();
            var     sut         = new ProxyRelayCallApi(proxyRelayCallService);
            var     httpContext = new DefaultHttpContext();
            var     httpRequest = new DefaultHttpRequest(httpContext)
            {
                Query = new QueryCollection(new Dictionary <string, StringValues>()
                {
                    { "url", "/testhost/value" }
                }),
                Method = HttpMethods.Post,
                Body   = new MemoryStream(Encoding.UTF8.GetBytes("bodyContent"))
            };

            var contentResult = "randomContent";

            A.CallTo(() => proxyRelayCallService.ProxyRelayCallAsync(TestHelper.TenantId.ToString(), "bodyContent", new HttpMethod("post"), null, "/testhost/value")).WithAnyArguments().Returns(new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new StringContent(contentResult)
            });

            // Act
            IActionResult actual = await sut.RelayCallAsync(httpRequest, TestHelper.TenantId.ToString(), logger);

            // Assert
            Assert.Equal(HttpStatusCode.OK, (HttpStatusCode)((ContentResult)actual).StatusCode);
            Assert.Equal(contentResult, ((ContentResult)actual).Content);
        }
        public async Task <IActionResult> RelayCallAsync(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", "put", "patch", "delete", Route = "proxyrelay/{tenantid}")] HttpRequest req, string tenantId, ILogger log)
        {
            if (!Guid.TryParse(tenantId, out Guid tenantIdGuid))
            {
                return(new BadRequestResult());
            }
            var    requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            string url         = req.Query["url"];

            if (string.IsNullOrWhiteSpace(url))
            {
                throw new InvalidOperationException(nameof(url));
            }
            HttpResponseMessage response = await _proxyRelayCallService.ProxyRelayCallAsync(tenantId, requestBody, new HttpMethod(req.Method), req.Headers, url);

            return(new ContentResult()
            {
                Content = await response.Content.ReadAsStringAsync(),
                ContentType = "text/plain",
                StatusCode = (int)response.StatusCode
            });
        }