Exemplo n.º 1
0
        private static HttpContext GetHttpContext()
        {
            var httpContext = new DefaultHttpContext();

            httpContext.Request.PathBase = new PathString("");
            httpContext.Response.Body    = new MemoryStream();

            var services = new Mock <IServiceProvider>();

            httpContext.RequestServices = services.Object;

            var optionsAccessor = new MockMvcOptionsAccessor();

            optionsAccessor.Options.OutputFormatters.Add(new StringOutputFormatter());
            optionsAccessor.Options.OutputFormatters.Add(new JsonOutputFormatter());
            services.Setup(p => p.GetService(typeof(IOptions <MvcOptions>)))
            .Returns(optionsAccessor);
            services.Setup(s => s.GetService(typeof(ILogger <ObjectResult>)))
            .Returns(new Mock <ILogger <ObjectResult> >().Object);

            var mockContextAccessor = new Mock <IScopedInstance <ActionBindingContext> >();

            mockContextAccessor
            .SetupGet(o => o.Value)
            .Returns(new ActionBindingContext()
            {
                OutputFormatters = optionsAccessor.Options.OutputFormatters
            });

            services.Setup(o => o.GetService(typeof(IScopedInstance <ActionBindingContext>)))
            .Returns(mockContextAccessor.Object);

            return(httpContext);
        }
Exemplo n.º 2
0
        private static HttpContext GetHttpContext()
        {
            var httpContext = new Mock <HttpContext>();
            var realContext = new DefaultHttpContext();
            var request     = realContext.Request;

            request.PathBase = new PathString("");
            var response = realContext.Response;

            response.Body = new MemoryStream();

            httpContext.Setup(o => o.Request)
            .Returns(request);
            var optionsAccessor = new MockMvcOptionsAccessor();

            optionsAccessor.Options.OutputFormatters.Add(new StringOutputFormatter());
            optionsAccessor.Options.OutputFormatters.Add(new JsonOutputFormatter());
            httpContext.Setup(o => o.RequestServices.GetService(typeof(IOptions <MvcOptions>)))
            .Returns(optionsAccessor);
            httpContext.Setup(o => o.RequestServices.GetService(typeof(ILogger <ObjectResult>)))
            .Returns(new Mock <ILogger <ObjectResult> >().Object);
            httpContext.Setup(o => o.Response)
            .Returns(response);

            httpContext.Setup(o => o.RequestServices.GetService(typeof(IActionBindingContextAccessor)))
            .Returns(new ActionBindingContextAccessor());

            return(httpContext.Object);
        }
Exemplo n.º 3
0
        private IServiceProvider CreateServices()
        {
            var services = new ServiceCollection();

            services.Add(new ServiceDescriptor(
                             typeof(ILogger <ObjectResult>),
                             new Logger <ObjectResult>(NullLoggerFactory.Instance)));

            var optionsAccessor = new MockMvcOptionsAccessor();

            optionsAccessor.Options.OutputFormatters.Add(new JsonOutputFormatter());
            services.Add(new ServiceDescriptor(typeof(IOptions <MvcOptions>), optionsAccessor));

            var bindingContext = new ActionBindingContext
            {
                OutputFormatters = optionsAccessor.Options.OutputFormatters,
            };
            var bindingContextAccessor = new ActionBindingContextAccessor
            {
                ActionBindingContext = bindingContext,
            };

            services.Add(new ServiceDescriptor(typeof(IActionBindingContextAccessor), bindingContextAccessor));

            return(services.BuildServiceProvider());
        }
Exemplo n.º 4
0
        private static ActionContext CreateMockActionContext(
            HttpResponse response             = null,
            string requestAcceptHeader        = "application/*",
            string requestContentType         = "application/json",
            string requestAcceptCharsetHeader = "",
            bool respectBrowserAcceptHeader   = false)
        {
            var httpContext = new Mock <HttpContext>();

            if (response != null)
            {
                httpContext.Setup(o => o.Response).Returns(response);
            }

            var content      = "{name: 'Person Name', Age: 'not-an-age'}";
            var contentBytes = Encoding.UTF8.GetBytes(content);

            var request = new DefaultHttpContext().Request;

            request.Headers["Accept-Charset"] = requestAcceptCharsetHeader;
            request.Headers["Accept"]         = requestAcceptHeader;
            request.ContentType = requestContentType;
            request.Body        = new MemoryStream(contentBytes);

            httpContext.Setup(o => o.Request).Returns(request);
            httpContext.Setup(o => o.RequestServices).Returns(GetServiceProvider());
            var optionsAccessor = new MockMvcOptionsAccessor();

            optionsAccessor.Options.OutputFormatters.Add(new StringOutputFormatter());
            optionsAccessor.Options.OutputFormatters.Add(new JsonOutputFormatter());
            optionsAccessor.Options.RespectBrowserAcceptHeader = respectBrowserAcceptHeader;
            var mockContextAccessor = new Mock <IScopedInstance <ActionBindingContext> >();

            mockContextAccessor
            .SetupGet(o => o.Value)
            .Returns(new ActionBindingContext()
            {
                OutputFormatters = optionsAccessor.Options.OutputFormatters
            });

            httpContext.Setup(o => o.RequestServices.GetService(typeof(IScopedInstance <ActionBindingContext>)))
            .Returns(mockContextAccessor.Object);
            httpContext.Setup(o => o.RequestServices.GetService(typeof(IOptions <MvcOptions>)))
            .Returns(optionsAccessor);
            httpContext.Setup(o => o.RequestServices.GetService(typeof(ILogger <ObjectResult>)))
            .Returns(new Mock <ILogger <ObjectResult> >().Object);

            return(new ActionContext(httpContext.Object, new RouteData(), new ActionDescriptor()));
        }
Exemplo n.º 5
0
        private ControllerActionDescriptorProvider GetActionDescriptorProvider()
        {
            var controllerTypes = typeof(DefaultActionSelectorTests)
                                  .GetNestedTypes(BindingFlags.NonPublic)
                                  .Select(t => t.GetTypeInfo())
                                  .ToList();

            var options = new MockMvcOptionsAccessor();

            var controllerTypeProvider = new FixedSetControllerTypeProvider(controllerTypes);
            var modelProvider          = new DefaultApplicationModelProvider(options);

            var provider = new ControllerActionDescriptorProvider(
                controllerTypeProvider,
                new[] { modelProvider },
                options);

            return(provider);
        }
Exemplo n.º 6
0
        private RouteContext CreateRouteContext(
            ActionDescriptor actionDescriptor     = null,
            IActionSelector actionSelector        = null,
            IActionInvokerFactory invokerFactory  = null,
            ILoggerFactory loggerFactory          = null,
            IOptions <MvcOptions> optionsAccessor = null,
            object notificationListener           = null)
        {
            var mockContextAccessor = new Mock <IScopedInstance <ActionContext> >();

            if (actionDescriptor == null)
            {
                var mockAction = new Mock <ActionDescriptor>();
                actionDescriptor = mockAction.Object;
            }

            if (actionSelector == null)
            {
                var mockActionSelector = new Mock <IActionSelector>();
                mockActionSelector.Setup(a => a.SelectAsync(It.IsAny <RouteContext>()))
                .Returns(Task.FromResult(actionDescriptor));

                actionSelector = mockActionSelector.Object;
            }

            if (invokerFactory == null)
            {
                var mockInvoker = new Mock <IActionInvoker>();
                mockInvoker.Setup(i => i.InvokeAsync())
                .Returns(Task.FromResult(true));

                var mockInvokerFactory = new Mock <IActionInvokerFactory>();
                mockInvokerFactory.Setup(f => f.CreateInvoker(It.IsAny <ActionContext>()))
                .Returns(mockInvoker.Object);

                invokerFactory = mockInvokerFactory.Object;
            }

            if (loggerFactory == null)
            {
                loggerFactory = NullLoggerFactory.Instance;
            }

            if (optionsAccessor == null)
            {
                optionsAccessor = new MockMvcOptionsAccessor();
            }

            var notifier = new Notifier(new NotifierMethodAdapter());

            if (notificationListener != null)
            {
                notifier.EnlistTarget(notificationListener);
            }

            var httpContext = new Mock <HttpContext>();

            httpContext.Setup(h => h.RequestServices.GetService(typeof(IScopedInstance <ActionContext>)))
            .Returns(mockContextAccessor.Object);
            httpContext.Setup(h => h.RequestServices.GetService(typeof(IActionSelector)))
            .Returns(actionSelector);
            httpContext.Setup(h => h.RequestServices.GetService(typeof(IActionInvokerFactory)))
            .Returns(invokerFactory);
            httpContext.Setup(h => h.RequestServices.GetService(typeof(ILoggerFactory)))
            .Returns(loggerFactory);
            httpContext.Setup(h => h.RequestServices.GetService(typeof(MvcMarkerService)))
            .Returns(new MvcMarkerService());
            httpContext.Setup(h => h.RequestServices.GetService(typeof(IOptions <MvcOptions>)))
            .Returns(optionsAccessor);
            httpContext.Setup(h => h.RequestServices.GetService(typeof(INotifier)))
            .Returns(notifier);

            return(new RouteContext(httpContext.Object));
        }