public void GetGroupedEndpoints_ForwardedToChildDataSources() { var endpoint = CreateEndpoint("/a"); var dataSource = new TestGroupDataSource(new RouteEndpoint[] { endpoint }); var compositeDataSource = new CompositeEndpointDataSource(new[] { dataSource }); var prefix = RoutePatternFactory.Parse("/prefix"); var applicationServices = new ServiceCollection().BuildServiceProvider(); var metadata = new EndpointNameMetadata("name"); var conventions = new Action <EndpointBuilder>[] { b => b.Metadata.Add(metadata), }; var context = new RouteGroupContext(prefix, conventions, applicationServices); var groupedEndpoints = compositeDataSource.GetGroupedEndpoints(context); var receivedContext = Assert.Single(dataSource.ReceivedRouteGroupContexts); Assert.Same(context, receivedContext); var resolvedEndpoint = Assert.IsType <RouteEndpoint>(Assert.Single(groupedEndpoints)); Assert.Equal("/prefix/a", resolvedEndpoint.RoutePattern.RawText); var resolvedMetadata = Assert.Single(resolvedEndpoint.Metadata); Assert.Same(metadata, resolvedMetadata); }
public void CreatesShallowCopyOf_ListOfGroupedEndpoints() { var endpoint1 = CreateEndpoint("/a"); var endpoint2 = CreateEndpoint("/b"); var dataSource = new TestGroupDataSource(new RouteEndpoint[] { endpoint1, endpoint2 }); var compositeDataSource = new CompositeEndpointDataSource(new[] { dataSource }); var prefix = RoutePatternFactory.Parse("/"); var conventions = Array.Empty <Action <EndpointBuilder> >(); var applicationServices = new ServiceCollection().BuildServiceProvider(); var groupedEndpoints = compositeDataSource.GetGroupedEndpoints(new RouteGroupContext(prefix, conventions, applicationServices)); var resolvedGroupEndpoints = Assert.Single(dataSource.ResolvedGroupedEndpoints); Assert.NotSame(groupedEndpoints, resolvedGroupEndpoints); Assert.Equal(groupedEndpoints, resolvedGroupEndpoints); }