Esempio n. 1
0
        public async Task Invoke(HttpContext context)
        {
            if (_validationDelegate != null)
            {
                if (!await _validationDelegate(context).ConfigureAwait(false))
                {
                    return;
                }
            }
            else
            {
                var matchedRouteResult = await RoutesUtils.MatchRouteAsync(context, _routesRepository).ConfigureAwait(false);

                if (matchedRouteResult.Key != null)
                {
                    if (!await ValidationUtils
                        .ValidateClaimsAsync(matchedRouteResult.Key, context, matchedRouteResult.Value)
                        .ConfigureAwait(false))
                    {
                        return;
                    }
                }
            }

            await _next(context).ConfigureAwait(false);
        }
        public void MatchRouteAsyncTest_NoMatch()
        {
            TestingUtils.ResetRoutesRepository();
            var routesRepository = new RoutesRepository();

            routesRepository.RegisterRoutesAsync(new List <IRouteDefinitions>()
            {
                new SpecialRouteTemplateRoutes()
            }).Wait();
            var httpContext = new DefaultHttpContext();
            var request     = new DefaultHttpRequest(httpContext)
            {
                Method = HttpMethod.Post.Method,
                Path   = "/v1/yolo/nolo/asdf/kjlkjl"
            };
            var result = RoutesUtils.MatchRouteAsync(httpContext, routesRepository).Result;

            Assert.NotNull(request);
            Assert.Null(result.Key);
            Assert.Null(result.Value);
        }
        public void MatchRouteAsyncTest()
        {
            TestingUtils.ResetRoutesRepository();
            var routesRepository = new RoutesRepository();

            routesRepository.RegisterRoutesAsync(new List <IRouteDefinitions>()
            {
                new SpecialRouteTemplateRoutes()
            }).Wait();
            var httpContext = new DefaultHttpContext();
            var request     = new DefaultHttpRequest(httpContext)
            {
                Method = HttpMethod.Post.Method,
                Path   = "/v1/yolo/nolo/1"
            };
            var result = RoutesUtils.MatchRouteAsync(httpContext, routesRepository).Result;

            Assert.NotNull(request);
            Assert.Equal(4, result.Key.ClaimsConfig.ExtractionConfigs.Count);
            Assert.Equal(1, result.Key.ClaimsConfig.ValidationConfigs.Count);
            Assert.NotNull(result.Key.ClaimsConfig.BadRequestResponse);
            Assert.Equal("1", result.Value["id"]);
        }