Fix DfaGraphWriter ISuppressMatchingMetadata check (#850)
This commit is contained in:
parent
7b16053f27
commit
fbf0708f19
|
|
@ -38,7 +38,7 @@ namespace Microsoft.AspNetCore.Routing.Internal
|
||||||
var endpoints = dataSource.Endpoints;
|
var endpoints = dataSource.Endpoints;
|
||||||
for (var i = 0; i < endpoints.Count; i++)
|
for (var i = 0; i < endpoints.Count; i++)
|
||||||
{
|
{
|
||||||
if (endpoints[i] is RouteEndpoint endpoint && endpoint.Metadata.GetMetadata<ISuppressMatchingMetadata>()?.SuppressMatching == true)
|
if (endpoints[i] is RouteEndpoint endpoint && (endpoint.Metadata.GetMetadata<ISuppressMatchingMetadata>()?.SuppressMatching ?? false) == false)
|
||||||
{
|
{
|
||||||
builder.AddEndpoint(endpoint);
|
builder.AddEndpoint(endpoint);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,95 @@
|
||||||
|
// Copyright (c) .NET Foundation. All rights reserved.
|
||||||
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
|
using System.IO;
|
||||||
|
using Microsoft.AspNetCore.Http;
|
||||||
|
using Microsoft.AspNetCore.Routing.Patterns;
|
||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Primitives;
|
||||||
|
using Xunit;
|
||||||
|
|
||||||
|
namespace Microsoft.AspNetCore.Routing.Internal
|
||||||
|
{
|
||||||
|
public class DfaGraphWriterTest
|
||||||
|
{
|
||||||
|
private DfaGraphWriter CreateGraphWriter()
|
||||||
|
{
|
||||||
|
ServiceCollection services = new ServiceCollection();
|
||||||
|
services.AddLogging();
|
||||||
|
services.AddRouting();
|
||||||
|
|
||||||
|
return new DfaGraphWriter(services.BuildServiceProvider());
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Write_ExcludeNonRouteEndpoint()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var graphWriter = CreateGraphWriter();
|
||||||
|
var writer = new StringWriter();
|
||||||
|
var endpointsDataSource = new DefaultEndpointDataSource(new Endpoint((context) => null, EndpointMetadataCollection.Empty, string.Empty));
|
||||||
|
|
||||||
|
// Act
|
||||||
|
graphWriter.Write(endpointsDataSource, writer);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.Equal(@"digraph DFA {
|
||||||
|
0 [label=""/""]
|
||||||
|
}
|
||||||
|
", writer.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Write_ExcludeRouteEndpointWithSuppressMatchingMetadata()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var graphWriter = CreateGraphWriter();
|
||||||
|
var writer = new StringWriter();
|
||||||
|
var endpointsDataSource = new DefaultEndpointDataSource(
|
||||||
|
new RouteEndpoint(
|
||||||
|
(context) => null,
|
||||||
|
RoutePatternFactory.Parse("/"),
|
||||||
|
0,
|
||||||
|
new EndpointMetadataCollection(new SuppressMatchingMetadata()),
|
||||||
|
string.Empty));
|
||||||
|
|
||||||
|
// Act
|
||||||
|
graphWriter.Write(endpointsDataSource, writer);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.Equal(@"digraph DFA {
|
||||||
|
0 [label=""/""]
|
||||||
|
}
|
||||||
|
", writer.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Write_IncludeRouteEndpointWithPolicy()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var graphWriter = CreateGraphWriter();
|
||||||
|
var writer = new StringWriter();
|
||||||
|
var endpointsDataSource = new DefaultEndpointDataSource(
|
||||||
|
new RouteEndpoint(
|
||||||
|
(context) => null,
|
||||||
|
RoutePatternFactory.Parse("/"),
|
||||||
|
0,
|
||||||
|
new EndpointMetadataCollection(new HttpMethodMetadata(new[] { "GET" })),
|
||||||
|
string.Empty));
|
||||||
|
|
||||||
|
// Act
|
||||||
|
graphWriter.Write(endpointsDataSource, writer);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
var sdf = writer.ToString();
|
||||||
|
Assert.Equal(@"digraph DFA {
|
||||||
|
0 [label=""/ HTTP: GET""]
|
||||||
|
1 [label=""/ HTTP: *""]
|
||||||
|
2 -> 0 [label=""HTTP: GET""]
|
||||||
|
2 -> 1 [label=""HTTP: *""]
|
||||||
|
2 [label=""/""]
|
||||||
|
}
|
||||||
|
", sdf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue