public void GetRequestParameters_Test() { HttpContext c = new DefaultHttpContext(); c.Request.Headers["device-id"] = "20317"; c.Request.Query = new QueryCollection(new Dictionary <string, StringValues>() { { "q1", new StringValues("q1_value") } }); c.Request.Form = new FormCollection(new Dictionary <string, StringValues>() { { "f1", new StringValues("f1_value") } }); RoutingFeature routingFeature = new RoutingFeature(); routingFeature.RouteData = new RouteData(new RouteValueDictionary(new Dictionary <string, string>() { { "controller", "ctest" }, { "action", "atest" } })); c.Features[typeof(IRoutingFeature)] = routingFeature; var(controller, action, parameters) = Utils.GetRequestParameters(c); Assert.Equal("ctest", controller); Assert.Equal("atest", action); Assert.Equal(2, parameters.Count); Assert.Equal("q1_value", parameters["q1"]); Assert.Equal("f1_value", parameters["f1"]); }
/// <summary> /// Evaluates the handler associated with the <see cref="RouteContext"/> /// derived from <paramref name="httpContext"/>. /// </summary> /// <param name="httpContext">A <see cref="HttpContext"/> instance.</param> public async Task Invoke(HttpContext httpContext) { var context = new RouteContext(httpContext); context.RouteData.Routers.Add(_router); await _router.RouteAsync(context); if (context.Handler == null) { Log.RequestNotMatched(_logger); await _next.Invoke(httpContext); } else { var routingFeature = new RoutingFeature() { RouteData = context.RouteData }; // Set the RouteValues on the current request, this is to keep the IRouteValuesFeature inline with the IRoutingFeature httpContext.Request.RouteValues = context.RouteData.Values; httpContext.Features.Set <IRoutingFeature>(routingFeature); await context.Handler(context.HttpContext); } }
static HttpRequest RequestAfterApiVersionConstraintHasBeenMatched(string requestedVersion) { const string ParmaterName = "version"; const string ItemKey = "MS_ApiVersionRequestProperties"; var request = new Mock <HttpRequest>(); var routeData = new RouteData() { Values = { [ParmaterName] = requestedVersion } }; var feature = new RoutingFeature() { RouteData = routeData }; var featureCollection = new Mock <IFeatureCollection>(); var items = new Dictionary <object, object>(); var httpContext = new Mock <HttpContext>(); var reader = new UrlSegmentApiVersionReader(); featureCollection.SetupGet(fc => fc[typeof(IRoutingFeature)]).Returns(feature); httpContext.SetupProperty(c => c.Items, items); httpContext.SetupGet(c => c.Features).Returns(featureCollection.Object); var properties = new ApiVersionRequestProperties(httpContext.Object) { RouteParameterName = ParmaterName }; items[ItemKey] = properties; request.SetupGet(r => r.HttpContext).Returns(httpContext.Object); return(request.Object); }
static HttpRequest RequestAfterApiVersionConstraintHasBeenMatched(string requestedVersion, IApiVersionReader apiVersionReader) { const string ParmaterName = "version"; const string ItemKey = "MS_ApiVersionRequestProperties"; var request = new Mock <HttpRequest>(); var routeData = new RouteData() { Values = { [ParmaterName] = requestedVersion } }; var feature = new RoutingFeature() { RouteData = routeData }; var featureCollection = new Mock <IFeatureCollection>(); var requestServices = new Mock <IServiceProvider>(); var items = new Dictionary <object, object>(); var httpContext = new Mock <HttpContext>(); featureCollection.SetupGet(fc => fc[typeof(IRoutingFeature)]).Returns(feature); requestServices.Setup(rs => rs.GetService(typeof(IApiVersionReader))).Returns(apiVersionReader); httpContext.SetupGet(c => c.Features).Returns(featureCollection.Object); httpContext.SetupProperty(c => c.Items, items); httpContext.SetupProperty(c => c.RequestServices, requestServices.Object); httpContext.SetupGet(c => c.Request).Returns(() => request.Object); var properties = new ApiVersionRequestProperties(httpContext.Object); items[ItemKey] = properties; request.SetupGet(r => r.HttpContext).Returns(httpContext.Object); return(request.Object); }
public AuthorizationContextProviderTestsFixture SetInvalidCohortId() { CohortReference = "BBB"; var cohortId = CohortId; RouteData.Values[RouteValueKeys.CohortReference] = CohortReference; RoutingFeature.Setup(f => f.RouteData).Returns(RouteData); EncodingService.Setup(h => h.TryDecode(CohortReference, EncodingType.CohortReference, out cohortId)).Returns(false); return(this); }
public AuthorizationContextProviderTestsFixture SetInvalidDraftApprenticeshipId() { DraftApprenticeshipHashedId = "CCCC"; var draftApprenticeshipId = DraftApprenticeshipId; RouteData.Values[RouteValueKeys.DraftApprenticeshipHashedId] = DraftApprenticeshipHashedId; RoutingFeature.Setup(f => f.RouteData).Returns(RouteData); EncodingService.Setup(h => h.TryDecode(DraftApprenticeshipHashedId, EncodingType.ApprenticeshipId, out draftApprenticeshipId)).Returns(false); return(this); }
public AuthorizationContextProviderTestsFixture SetInvalidAccountLegalEntityId() { AccountLegalEntityPublicHashedId = "AAA"; var accountLegalEntityId = 0L; RouteData.Values[RouteValueKeys.AccountLegalEntityPublicHashedId] = AccountLegalEntityPublicHashedId; RoutingFeature.Setup(f => f.RouteData).Returns(RouteData); EncodingService.Setup(h => h.TryDecode(AccountLegalEntityPublicHashedId, EncodingType.PublicAccountLegalEntityId, out accountLegalEntityId)).Returns(false); return(this); }
public AuthorizationContextProviderTestsFixture SetValidApprenticeshipId() { ApprenticeshipHashedId = "XYRZ"; ApprenticeshipId = 887; long decodedApprenticeshipId; RouteData.Values[RouteValueKeys.ApprenticeshipHashedId] = ApprenticeshipHashedId; RoutingFeature.Setup(f => f.RouteData).Returns(RouteData); EncodingService.Setup(h => h.TryDecode(ApprenticeshipHashedId, EncodingType.ApprenticeshipId, out decodedApprenticeshipId)).Returns(true); return(this); }
public AuthorizationContextProviderTestsFixture SetInvalidAccountId() { AccountHashedId = "AAA"; var routeData = new RouteData(); var accountId = 0L; routeData.Values[RouteValueKeys.AccountHashedId] = AccountHashedId; RoutingFeature.Setup(f => f.RouteData).Returns(routeData); HashingService.Setup(h => h.TryDecodeLong(AccountHashedId, out accountId)).Returns(false); return(this); }
private RouteContext CreateRouteContext() { var routingFeature = new RoutingFeature(); var httpContext = new Mock <HttpContext>(); httpContext .Setup(h => h.Features[typeof(IRoutingFeature)]) .Returns(routingFeature); var routeContext = new RouteContext(httpContext.Object); routingFeature.RouteData = routeContext.RouteData; return(routeContext); }
public AuthorizationContextProviderTestsFixture SetValidCohortId() { CohortReference = "CDE"; CohortId = 345; //var routeData = new RouteData(); var cohortId = CohortId; RouteData.Values[RouteValueKeys.CohortReference] = CohortReference; RoutingFeature.Setup(f => f.RouteData).Returns(RouteData); EncodingService.Setup(h => h.TryDecode(CohortReference, EncodingType.CohortReference, out cohortId)).Returns(true); return(this); }
public AuthorizationContextProviderTestsFixture SetValidAccountId() { AccountHashedId = "ABC"; AccountId = 123; //var routeData = new RouteData(); var accountId = AccountId; RouteData.Values[RouteValueKeys.AccountHashedId] = AccountHashedId; RoutingFeature.Setup(f => f.RouteData).Returns(RouteData); EncodingService.Setup(h => h.TryDecode(AccountHashedId, EncodingType.AccountId, out accountId)).Returns(true); return(this); }
public void Populate_RouteData_SetToScope() { const string controller = "Ctrl"; const string action = "Actn"; var routeFeature = new RoutingFeature() { RouteData = new RouteData() { Values = { { "controller", controller }, { "action", action }, } } }; var features = new FeatureCollection(); features.Set <IRoutingFeature>(routeFeature); _httpContext.Features.Returns(features); _sut.Populate(_httpContext, SentryAspNetCoreOptions); Assert.Equal($"{controller}.{action}", _sut.Transaction); }
public Middleware_Tests() { Context = new DefaultHttpContext(); Context.Request.Headers["device-id"] = "20317"; Context.Request.Query = new QueryCollection(new Dictionary <string, StringValues>() { { "q1", new StringValues("q1_value") } }); Context.Request.Form = new FormCollection(new Dictionary <string, StringValues>() { { "f1", new StringValues("f1_value") } }); RoutingFeature routingFeature = new RoutingFeature(); routingFeature.RouteData = new RouteData(new RouteValueDictionary(new Dictionary <string, string>() { { "controller", "ctest" }, { "action", "atest" } })); Context.Features[typeof(IRoutingFeature)] = routingFeature; RemoteLoggerMock = new Mock <ILoggingService>(); RemoteLoggerMock.Setup(f => f.ReportAccessLog(It.IsAny <ElasticsearchAccessLogDocument>())) .Returns((Func <ElasticsearchAccessLogDocument, Task>)(async(d) => await Task.CompletedTask)); RemoteLoggerMock.Setup(f => f.ReportErrorLog(It.IsAny <ElasticsearchErrorDocument>())) .Returns((Func <ElasticsearchErrorDocument, Task>)(async(d) => await Task.CompletedTask)); AppClienMock = SetupAppCliMock(new Mock <IAppClient>()); StoreAppClientMock = new Mock <IAppCustomErrorReportingClient>(); SetupAppCliMock(StoreAppClientMock.As <IAppClient>()); StoreAppClientMock.Setup(e => e.ReportException(It.IsAny <ElasticsearchErrorDocument>(), It.IsAny <IServiceProvider>())) .Returns(Task.FromResult("errorfile.json")); middlewareOptions = Options.Create(new LogMiddlewareOptions { //AppName = "mock_app_name" }); }
private RouteContext CreateRouteContext( ActionDescriptor actionDescriptor = null, IActionSelector actionSelector = null, IActionInvokerFactory invokerFactory = null, ILoggerFactory loggerFactory = null, IOptions <MvcOptions> optionsAccessor = null, object diagnosticListener = null) { if (actionDescriptor == null) { var mockAction = new Mock <ActionDescriptor>(); actionDescriptor = mockAction.Object; } if (actionSelector == null) { var mockActionSelector = new Mock <IActionSelector>(); mockActionSelector.Setup(a => a.Select(It.IsAny <RouteContext>())) .Returns(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 TestOptionsManager <MvcOptions>(); } var diagnosticSource = new DiagnosticListener("Microsoft.AspNetCore"); if (diagnosticListener != null) { diagnosticSource.SubscribeWithAdapter(diagnosticListener); } var routingFeature = new RoutingFeature(); var httpContext = new Mock <HttpContext>(); httpContext .Setup(h => h.RequestServices.GetService(typeof(IActionContextAccessor))) .Returns(new ActionContextAccessor()); 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(DiagnosticSource))) .Returns(diagnosticSource); httpContext .Setup(h => h.Features[typeof(IRoutingFeature)]) .Returns(routingFeature); var routeContext = new RouteContext(httpContext.Object); routingFeature.RouteData = routeContext.RouteData; return(routeContext); }
private RouteContext CreateRouteContext() { var routingFeature = new RoutingFeature(); var httpContext = new Mock<HttpContext>(); httpContext .Setup(h => h.Features[typeof(IRoutingFeature)]) .Returns(routingFeature); var routeContext = new RouteContext(httpContext.Object); routingFeature.RouteData = routeContext.RouteData; return routeContext; }
private RouteContext CreateRouteContext( ActionDescriptor actionDescriptor = null, IActionSelector actionSelector = null, IActionInvokerFactory invokerFactory = null, ILoggerFactory loggerFactory = null, IOptions<MvcOptions> optionsAccessor = null, object diagnosticListener = null) { if (actionDescriptor == null) { var mockAction = new Mock<ActionDescriptor>(); actionDescriptor = mockAction.Object; } if (actionSelector == null) { var mockActionSelector = new Mock<IActionSelector>(); mockActionSelector.Setup(a => a.Select(It.IsAny<RouteContext>())) .Returns(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 TestOptionsManager<MvcOptions>(); } var diagnosticSource = new DiagnosticListener("Microsoft.AspNetCore"); if (diagnosticListener != null) { diagnosticSource.SubscribeWithAdapter(diagnosticListener); } var routingFeature = new RoutingFeature(); var httpContext = new Mock<HttpContext>(); httpContext .Setup(h => h.RequestServices.GetService(typeof(IActionContextAccessor))) .Returns(new ActionContextAccessor()); 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(DiagnosticSource))) .Returns(diagnosticSource); httpContext .Setup(h => h.Features[typeof(IRoutingFeature)]) .Returns(routingFeature); var routeContext = new RouteContext(httpContext.Object); routingFeature.RouteData = routeContext.RouteData; return routeContext; }