public async Task HttpOkObjectResult_SetsStatusCode(object value)
    {
        // Arrange
        var result = new OkObjectResult(value);

        var httpContext = new DefaultHttpContext
        {
            RequestServices = CreateServices(),
        };
        var actionContext = new ActionContext(httpContext, new RouteData(), new ActionDescriptor());

        // Act
        await result.ExecuteResultAsync(actionContext);

        // Assert
        Assert.Equal(StatusCodes.Status200OK, httpContext.Response.StatusCode);
    }
示例#2
0
        public async Task Execute(HttpContext context)
        {
            RouteData routeData = context.GetRouteData();

            var tasks = _appenders.Select((a, i) =>
            {
                // Create binder for the tempalte
                var templateBinder = new TemplateBinder(
                    context.RequestServices.GetRequiredService <UrlEncoder>(),
                    context.RequestServices.GetRequiredService <ObjectPool <UriBuildingContext> >(),
                    _routeTemplates[i].Item2,
                    null);

                // Transform the uri
                Uri fullUri = _routeTemplates[i].Item1 ?? context.Request.GetUri();
                string url  = templateBinder.BindValues(new RouteValueDictionary(routeData.Values));

                var ub  = new UriBuilder(fullUri);
                ub.Path = url;

                // Make the request
                return(a.GetAsync(ub.ToString(), context.RequestAborted));
            });

            // Wait for answer from all requests
            IAppenderResult[] results = await Task.WhenAll(tasks);

            // Merge reults
            object result = MergeResults(results);

            // Write output using formatters
            var actionContext = new ActionContext {
                HttpContext = context, RouteData = routeData
            };
            var objectResult = new OkObjectResult(result);
            await objectResult.ExecuteResultAsync(actionContext);
        }