public void GetMatchingRouteTest_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"
            };
            var result = RoutesUtils.GetMatchingRoute(httpContext, routesRepository).Result;

            Assert.NotNull(request);
            Assert.NotNull(result.Route);
            Assert.NotNull(result.RouteValues);
        }
 // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
 public void Configure(IApplicationBuilder app, IHostingEnvironment env, IMemoryCache memoryCache)
 {
     if (env.IsDevelopment())
     {
         app.UseDeveloperExceptionPage();
     }
     app.UseMiddleware <TokenMiddleware>();
     app.UseCustomClaimsValidationAsync(new List <IRouteDefinitions> {
         new ValuesRoutes()
     }).Wait();
     app.UseCustomClaimsValidationAsync(new CachedValidRouteDefinitionProvider(memoryCache), async(context) =>
     {
         var matchedRouteResult = await RoutesUtils.GetMatchingRoute(context).ConfigureAwait(false);
         if (matchedRouteResult.Route != null)
         {
             return(await ValidationUtils
                    .ValidateClaimsAsync(matchedRouteResult.Route, context, matchedRouteResult.RouteValues)
                    .ConfigureAwait(false));
         }
         return(true);
     }).Wait();
     app.UseMvc();
 }
        public void GetMatchingRouteTest()
        {
            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.GetMatchingRoute(httpContext, routesRepository).Result;

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