public RServiceMiddleware(RequestDelegate next, ILoggerFactory logFactory, RService service, IServiceProvider serviceProvider, IOptions <RServiceOptions> options) { _next = next; _logger = logFactory.CreateLogger <RServiceMiddleware>(); _service = service; _serviceProvider = serviceProvider; _options = options.Value; }
private RServiceMiddleware BuildMiddleware(TestSink sink, string routePath = null, Delegate.Activator routeActivator = null, RequestDelegate handler = null, IOptions <RServiceOptions> options = null, IServiceProvider serviceProvider = null, IService service = null) { options = options ?? _options; var loggerFactory = new TestLoggerFactory(sink, true); var next = handler ?? (c => Task.FromResult <object>(null)); var rservice = new RService(options); if (serviceProvider == null) { var mockServiceProvider = new Mock <IServiceProvider>().SetupAllProperties(); mockServiceProvider.Setup(x => x.Invoke(It.IsAny <HttpContext>())) .Returns(Task.FromResult(0)); serviceProvider = mockServiceProvider.Object; } if (!routePath.IsNullOrEmpty() && routeActivator != null) { rservice.Routes.Add(routePath, new ServiceDef { ServiceMethod = routeActivator, ServiceType = service?.GetType() ?? typeof(IService) }); } return(new RServiceMiddleware(next, loggerFactory, rservice, serviceProvider, options)); }