public virtual async Task NotMatch_MultipleParameters(string template, string path)
    {
        // Arrange
        var(matcher, endpoint) = CreateMatcher(template);
        var httpContext = CreateContext(path);

        // Act
        await matcher.MatchAsync(httpContext);

        // Assert
        MatcherAssert.AssertNotMatch(httpContext);
    }
    public virtual async Task NotMatch_SingleParameter(string path)
    {
        // Arrange
        var(matcher, endpoint) = CreateMatcher("/{p}");
        var httpContext = CreateContext(path);

        // Act
        await matcher.MatchAsync(httpContext);

        // Assert
        MatcherAssert.AssertNotMatch(httpContext);
    }
    public virtual async Task NotMatch_SingleLiteralSegment(string path)
    {
        // Arrange
        var(matcher, endpoint) = CreateMatcher("/simple");
        var httpContext = CreateContext(path);

        // Act
        await matcher.MatchAsync(httpContext);

        // Assert
        MatcherAssert.AssertNotMatch(httpContext);
    }
    public async Task Match_HostWithPort_IncorrectHost()
    {
        // Arrange
        var endpoint = CreateEndpoint("/hello", hosts: new string[] { "contoso.com:8080", });

        var matcher     = CreateMatcher(endpoint);
        var httpContext = CreateContext("/hello", "www.contoso.com:8080");

        // Act
        await matcher.MatchAsync(httpContext);

        // Assert
        MatcherAssert.AssertNotMatch(httpContext);
    }
    public async Task Match_CatchAllRouteFailureHost_NoMatch()
    {
        // Arrange
        var endpoint = CreateEndpoint("/{**path}", hosts: new string[] { "contoso.com", });

        var matcher     = CreateMatcher(endpoint);
        var httpContext = CreateContext("/hello", "nomatch.com");

        // Act
        await matcher.MatchAsync(httpContext);

        // Assert
        MatcherAssert.AssertNotMatch(httpContext);
    }
    public async Task Match_HostWithPort_NoHostHeader()
    {
        // Arrange
        var endpoint = CreateEndpoint("/hello", hosts: new string[] { "contoso.com:443", });

        var matcher     = CreateMatcher(endpoint);
        var httpContext = CreateContext("/hello", null, "https");

        // Act
        await matcher.MatchAsync(httpContext);

        // Assert
        MatcherAssert.AssertNotMatch(httpContext);
    }
    public async Task Match_HostWithWildcard_PrefixNotInSubdomain()
    {
        // Arrange
        var endpoint = CreateEndpoint("/hello", hosts: new string[] { "*.contoso.com:8080", });

        var matcher     = CreateMatcher(endpoint);
        var httpContext = CreateContext("/hello", "mycontoso.com:8080");

        // Act
        await matcher.MatchAsync(httpContext);

        // Assert
        MatcherAssert.AssertNotMatch(httpContext);
    }
    [Fact] // When one of the candidates handles all verbs, dont use a 405 endpoint
    public async Task NotMatch_HttpMethod_WithAllMethodEndpoint_DoesNotReturn405()
    {
        // Arrange
        var endpoint1 = CreateEndpoint("/{x:int}", httpMethods: new string[] { });
        var endpoint2 = CreateEndpoint("/{hello:regex(hello)}", httpMethods: new string[] { "DELETE" });

        var matcher     = CreateMatcher(endpoint1, endpoint2);
        var httpContext = CreateContext("/hello", "POST");

        // Act
        await matcher.MatchAsync(httpContext);

        // Assert
        MatcherAssert.AssertNotMatch(httpContext);
    }
    public async Task NotMatch_HttpMethod_CORS_DoesNotReturn405()
    {
        // Arrange
        var endpoint1 = CreateEndpoint("/hello", httpMethods: new string[] { "GET", "PUT" }, acceptCorsPreflight: true);
        var endpoint2 = CreateEndpoint("/hello", httpMethods: new string[] { "DELETE" });

        var matcher     = CreateMatcher(endpoint1, endpoint2);
        var httpContext = CreateContext("/hello", "POST", corsPreflight: true);

        // Act
        await matcher.MatchAsync(httpContext);

        // Assert
        MatcherAssert.AssertNotMatch(httpContext);
    }
Ejemplo n.º 10
0
    public virtual async Task Quirks_CatchAllParameter(string template, string path, string[] keys, string[] values)
    {
        // Arrange
        var(matcher, endpoint) = CreateMatcher(template);
        var httpContext = CreateContext(path);

        // Act
        await matcher.MatchAsync(httpContext);

        // Assert
        MatcherAssert.AssertNotMatch(httpContext);

        // Need to access these to prevent a warning from the xUnit analyzer.
        // Some of these tests will match (and process the values) and some will not.
        GC.KeepAlive(keys);
        GC.KeepAlive(values);
    }