示例#1
0
    public void Should_parse_RewriteMapSegment_and_successfully_evaluate_result()
    {
        const string expectedMapName = "apiMap";
        const string expectedKey     = "api.test.com";
        const string expectedValue   = "test.com/api";
        var          map             = new IISRewriteMap(expectedMapName);

        map[expectedKey] = expectedValue;
        var maps = new IISRewriteMapCollection {
            map
        };

        var inputString = $"{{{expectedMapName}:{{R:1}}}}";
        var pattern     = new InputParser(maps, false).ParseInputString(inputString, UriMatchPart.Path);

        Assert.Equal(1, pattern.PatternSegments.Count);

        var segment           = pattern.PatternSegments.Single();
        var rewriteMapSegment = segment as RewriteMapSegment;

        Assert.NotNull(rewriteMapSegment);

        var result = rewriteMapSegment.Evaluate(CreateTestRewriteContext(), CreateRewriteMapRuleMatch(expectedKey).BackReferences, CreateRewriteMapConditionMatch(inputString).BackReferences);

        Assert.Equal(expectedValue, result);
    }
示例#2
0
    public void Should_throw_FormatException_if_rewrite_map_not_found()
    {
        const string definedMapName   = "testMap";
        const string undefinedMapName = "apiMap";
        var          map  = new IISRewriteMap(definedMapName);
        var          maps = new IISRewriteMapCollection {
            map
        };

        Assert.Throws <FormatException>(() => new InputParser(maps, false).ParseInputString($"{{{undefinedMapName}:{{R:1}}}}", UriMatchPart.Path));
    }
示例#3
0
 public RewriteMapSegment(IISRewriteMap rewriteMap, Pattern pattern)
 {
     _rewriteMap = rewriteMap;
     _pattern    = pattern;
 }