Beispiel #1
0
        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"]);
        }
Beispiel #2
0
    /// <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);
        }
    }
Beispiel #3
0
        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);
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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);
        }
Beispiel #8
0
        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);
        }
Beispiel #9
0
        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);
        }
Beispiel #11
0
        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);
        }
Beispiel #12
0
        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);
        }
Beispiel #13
0
        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);
        }
Beispiel #14
0
        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);
        }
Beispiel #16
0
        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;
        }