public void ExtractedResponse_CanBeGeneratedFromRestResponse()
        {
            var bodyContent  = "{\"test\":\"banana\"}";
            var responseMock = new Mock <IRestResponse>();

            responseMock.Setup(s => s.StatusCode).Returns(HttpStatusCode.NotFound);
            responseMock.Setup(s => s.Content).Returns(bodyContent);

            var response = new ExtractedResponse(responseMock.Object);

            response.Body.Should().Be(bodyContent);
            response.StatusCode.Should().Be(HttpStatusCode.NotFound);
        }
Example #2
0
        public async Task <ExtractedResponse> RouteRequest(ExtractedRequest request)
        {
            // Organise the path to the final endpoint
            string basePath = '/' + request.Path.Split('/')[1];

            ExtractedResponse response = new ExtractedResponse();

            // Get the correct endpoint for the route requested
            Route route;

            try
            {
                route = Endpoints.First(r => r.Endpoint.Equals(basePath));
            }
            catch
            {
                throw new NotFoundCustomException("Route not found", $"Route matching {basePath} not found");
            }

            if (route.Destination.RequiresAuthentication)
            {
                // Auth stuff would go here, throwing exception for now
                throw new NotAuthorizedCustomException("Unauthorized", "You do not have permission to access this resource");
            }

            if (route.TransportType == TransportType.Http)
            {
                response = await httpClient.SendRequest(request, route);
            }
            else if (route.TransportType == TransportType.MessageQueue)
            {
                messageClient.PushMessageIntoQueue(request.GetJsonBytes(), route.Destination.MessageQueue);

                response.Body       = "{message: \"Message client does not support responses at the moment\"}";
                response.StatusCode = HttpStatusCode.OK;
            }

            return(response);
        }
        public void ExtractedResponse_CanGenerateFromHttpResponse()
        {
            var bodyContent = "{\"test\":\"banana\"}";

            var body = new MemoryStream();
            var sw   = new StreamWriter(body);
            var json = JsonConvert.SerializeObject(bodyContent);

            sw.Write(json);
            sw.Flush();

            body.Position = 0;

            var responseMock = new Mock <Microsoft.AspNetCore.Http.HttpResponse>();

            responseMock.Setup(s => s.StatusCode).Returns(200);
            responseMock.Setup(s => s.Body).Returns(body);

            var response = new ExtractedResponse(responseMock.Object);

            response.Body.Should().Be(json);
            response.StatusCode.Should().Be((HttpStatusCode)200);
        }
Example #4
0
        public static ExtractedResponse ConstructResponseMessage(HttpResponse response)
        {
            var responseMessage = new ExtractedResponse(response);

            return(responseMessage);
        }