96 lines
2.9 KiB
C#
96 lines
2.9 KiB
C#
// 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);
|
|
}
|
|
}
|
|
}
|