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 ThrowInvalidOperationWhenNoUrlIsProvidedAsync()
 {
     // 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);
     // Act & Assert
     await Assert.ThrowsAsync <InvalidOperationException>(() => sut.RelayCallAsync(httpRequest, TestHelper.TenantId.ToString(), logger));
 }
        public async Task ReturnBadRequestStatusCodeWhenCalledWithInvalidTenantIdAsync()
        {
            // 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);
            // Act
            IActionResult actual = await sut.RelayCallAsync(httpRequest, "NotGuid", logger);

            // Assert
            Assert.Equal(HttpStatusCode.BadRequest, (HttpStatusCode)((StatusCodeResult)actual).StatusCode);
        }