public void RouteData_PushStateAndThenModify_WithInitialData() { // Arrange var original = new RouteData(); original.DataTokens.Add("data", "token1"); original.Routers.Add(Mock.Of <IRouter>()); original.Values.Add("route", "value1"); var routeData = new RouteData(original); // Act var snapshot = routeData.PushState( Mock.Of <IRouter>(), new RouteValueDictionary(new { route = "value2" }), new RouteValueDictionary(new { data = "token2" })); routeData.DataTokens.Add("data2", "token"); routeData.Routers.Add(Mock.Of <IRouter>()); routeData.Values.Add("route2", "value"); var copy = new RouteData(routeData); snapshot.Restore(); // Assert Assert.Equal(original.DataTokens, routeData.DataTokens); Assert.NotEqual(routeData.DataTokens, copy.DataTokens); Assert.Equal(original.Routers, routeData.Routers); Assert.NotEqual(routeData.Routers, copy.Routers); Assert.Equal(original.Values, routeData.Values); Assert.NotEqual(routeData.Values, copy.Values); }
public override IEndpointConventionBuilder MapApiDocument(string name, string title, string description, string version) { var assembly = typeof(TModule).Assembly; ServiceProvider .GetRequiredService <SubstrateApiVisibilityConvention>() .Declare(assembly.FullName !, name); var sgo = ServiceProvider.GetRequiredService <IOptions <SwaggerGenOptions> >().Value; sgo.SwaggerDoc(name, new Microsoft.OpenApi.Models.OpenApiInfo { Title = title, Description = description, Version = version, }); var file = System.IO.Path.ChangeExtension(assembly.Location, "xml"); if (System.IO.File.Exists(file)) { sgo.IncludeXmlComments(file); } else { ServiceProvider .GetRequiredService <ILoggerFactory>() .CreateLogger("Microsoft.Hosting.Lifetime") .LogWarning($"Documentation '{file}' is not found. Specification comments will not be registered into swagger."); } var actionLazy = new ControllerActionDescriptorWrapper("Dashboard", "ApiDoc", "Display"); return(MapRequestDelegate( "/api/doc/" + name, context => { var routeData = new RouteData(); routeData.PushState(router: null, context.Request.RouteValues, new RouteValueDictionary()); routeData.Values["name"] = name; var actionContext = new ActionContext(context, routeData, actionLazy.GetValue(context.RequestServices)); var invoker = context.RequestServices .GetRequiredService <IActionInvokerFactory>() .CreateInvoker(actionContext); return invoker.InvokeAsync(); }) .WithDisplayName($"Swagger Document ({name})") .WithMetadata(new HttpMethodMetadata(new[] { "GET" }))); }
public void RouteData_PushStateAndRestore_EmptyValues() { // Arrange var routeData = new RouteData(); // Act var snapshot = routeData.PushState(null, new RouteValueDictionary(), new RouteValueDictionary()); var copy = new RouteData(routeData); snapshot.Restore(); // Assert Assert.Equal(routeData.DataTokens, copy.DataTokens); Assert.Equal(routeData.Routers, copy.Routers); Assert.Equal(routeData.Values, copy.Values); }
public void RouteData_PushStateAndRestore_NullRouteValueNotSet() { // Arrange var original = new RouteData(); original.Values.Add("bleh", "16"); var routeData = new RouteData(original); // Act var snapshot = routeData.PushState( null, new RouteValueDictionary(new { bleh = (string)null }), new RouteValueDictionary()); snapshot.Restore(); // Assert Assert.Equal(routeData.Values, original.Values); }
public IErrorHandlerBuilder MapFallbackNotFound(string pattern) { var actionLazy = ActionDescriptor; Builder.MapFallback(actionLazy.GetPattern(pattern), context => { context.Response.StatusCode = 404; var routeData = new RouteData(); routeData.PushState(router: null, context.Request.RouteValues, new RouteValueDictionary()); var actionContext = new ActionContext(context, routeData, actionLazy.GetValue(context.RequestServices)); var invoker = context.RequestServices .GetRequiredService <IActionInvokerFactory>() .CreateInvoker(actionContext); return(invoker.InvokeAsync()); }) .WithDisplayName($"Status Code Page {pattern} (Fallback NotFound)"); return(this); }
public void RouteData_PushStateAndThenModify() { // Arrange var routeData = new RouteData(); // Act var snapshot = routeData.PushState(null, null, null); routeData.DataTokens.Add("data", "token"); routeData.Routers.Add(Mock.Of <IRouter>()); routeData.Values.Add("route", "value"); var copy = new RouteData(routeData); snapshot.Restore(); // Assert Assert.Empty(routeData.DataTokens); Assert.NotEqual(routeData.DataTokens, copy.DataTokens); Assert.Empty(routeData.Routers); Assert.NotEqual(routeData.Routers, copy.Routers); Assert.Empty(routeData.Values); Assert.NotEqual(routeData.Values, copy.Values); }
public void RouteData_PushStateAndThenModify_WithInitialData() { // Arrange var original = new RouteData(); original.DataTokens.Add("data", "token1"); original.Routers.Add(Mock.Of<IRouter>()); original.Values.Add("route", "value1"); var routeData = new RouteData(original); // Act var snapshot = routeData.PushState( Mock.Of<IRouter>(), new RouteValueDictionary(new { route = "value2" }), new RouteValueDictionary(new { data = "token2" })); routeData.DataTokens.Add("data2", "token"); routeData.Routers.Add(Mock.Of<IRouter>()); routeData.Values.Add("route2", "value"); var copy = new RouteData(routeData); snapshot.Restore(); // Assert Assert.Equal(original.DataTokens, routeData.DataTokens); Assert.NotEqual(routeData.DataTokens, copy.DataTokens); Assert.Equal(original.Routers, routeData.Routers); Assert.NotEqual(routeData.Routers, copy.Routers); Assert.Equal(original.Values, routeData.Values); Assert.NotEqual(routeData.Values, copy.Values); }
public void RouteData_PushStateAndThenModify() { // Arrange var routeData = new RouteData(); // Act var snapshot = routeData.PushState(null, null, null); routeData.DataTokens.Add("data", "token"); routeData.Routers.Add(Mock.Of<IRouter>()); routeData.Values.Add("route", "value"); var copy = new RouteData(routeData); snapshot.Restore(); // Assert Assert.Empty(routeData.DataTokens); Assert.NotEqual(routeData.DataTokens, copy.DataTokens); Assert.Empty(routeData.Routers); Assert.NotEqual(routeData.Routers, copy.Routers); Assert.Empty(routeData.Values); Assert.NotEqual(routeData.Values, copy.Values); }