/
githubmirror
/
aspnetcore
Обзор
Документация
Войти
/
githubmirror
/
aspnetcore
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Middleware/Rewrite/test/ApacheModRewrite/TestStringParserTests.cs
136 строк
4 KB
Pranav K
Bump up warning level for CA1822 (#39436)
11 янв 2022, 18:47
Не верифицирован
11 янв 2022, 18:47
2862028
Код
Авторство
О чём код?
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.AspNetCore.Rewrite.ApacheModRewrite; using Microsoft.AspNetCore.Rewrite.PatternSegments; namespace Microsoft.AspNetCore.Rewrite.Tests.ModRewrite; public class TestStringParserTests { [Fact] public void ConditionParser_SingleServerVariable() { var serverVar = "%{HTTPS}"; var result = TestStringParser.Parse(serverVar); var list = new List<PatternSegment>(); list.Add(new IsHttpsModSegment()); var expected = new Pattern(list); AssertPatternsEqual(expected, result); } [Fact] public void ConditionParser_MultipleServerVariables() { var serverVar = "%{HTTPS}%{REQUEST_URI}"; var result = TestStringParser.Parse(serverVar); var list = new List<PatternSegment>(); list.Add(new IsHttpsModSegment()); list.Add(new UrlSegment()); var expected = new Pattern(list); AssertPatternsEqual(expected, result); } [Fact] public void ConditionParser_ParseLiteral() { var serverVar = "Hello!"; var result = TestStringParser.Parse(serverVar); var list = new List<PatternSegment>(); list.Add(new LiteralSegment(serverVar)); var expected = new Pattern(list); AssertPatternsEqual(expected, result); } [Fact] public void ConditionParser_ParseConditionParameters() { var serverVar = "%1"; var result = TestStringParser.Parse(serverVar); var list = new List<PatternSegment>(); list.Add(new ConditionMatchSegment(1)); var expected = new Pattern(list); AssertPatternsEqual(expected, result); } [Fact] public void ConditionParser_ParseMultipleConditionParameters() { var serverVar = "%1%2"; var result = TestStringParser.Parse(serverVar); var list = new List<PatternSegment>(); list.Add(new ConditionMatchSegment(1)); list.Add(new ConditionMatchSegment(2)); var expected = new Pattern(list); AssertPatternsEqual(expected, result); } [Fact] public void ConditionParser_ParseRuleVariable() { var serverVar = "$1"; var result = TestStringParser.Parse(serverVar); var list = new List<PatternSegment>(); list.Add(new RuleMatchSegment(1)); var expected = new Pattern(list); AssertPatternsEqual(expected, result); } [Fact] public void ConditionParser_ParseMultipleRuleVariables() { var serverVar = "$1$2"; var result = TestStringParser.Parse(serverVar); var list = new List<PatternSegment>(); list.Add(new RuleMatchSegment(1)); list.Add(new RuleMatchSegment(2)); var expected = new Pattern(list); AssertPatternsEqual(expected, result); } [Fact] public void ConditionParser_ParserComplexRequest() { var serverVar = "%{HTTPS}/$1"; var result = TestStringParser.Parse(serverVar); var list = new List<PatternSegment>(); list.Add(new IsHttpsModSegment()); list.Add(new LiteralSegment("/")); list.Add(new RuleMatchSegment(1)); var expected = new Pattern(list); AssertPatternsEqual(expected, result); } [Theory] [InlineData(@"%}", "Cannot parse '%}' to integer at string index: '1'")] // no } at end [InlineData(@"%{", "Missing close brace for parameter at string index: '2'")] // no closing } [InlineData(@"%a", "Cannot parse '%a' to integer at string index: '1'")] // invalid character after % [InlineData(@"$a", "Cannot parse '$a' to integer at string index: '1'")] // invalid character after $ [InlineData(@"%{asdf", "Missing close brace for parameter at string index: '6'")] // no closing } with characters public void ConditionParser_InvalidInput(string testString, string expected) { var ex = Assert.Throws<FormatException>(() => TestStringParser.Parse(testString)); Assert.Equal(expected, ex.Message); } private static void AssertPatternsEqual(Pattern p1, Pattern p2) { Assert.Equal(p1.PatternSegments.Count, p2.PatternSegments.Count); for (int i = 0; i < p1.PatternSegments.Count; i++) { var s1 = p1.PatternSegments[i]; var s2 = p2.PatternSegments[i]; Assert.Equal(s1.GetType(), s2.GetType()); } } }