start RuleSet class
Signed-off-by: Doug Hellmann <doug@doughellmann.com>
This commit is contained in:
parent
8b1ece685b
commit
6a4c080f56
|
@ -70,3 +70,20 @@ class RedirectMatch(Rule):
|
|||
if m:
|
||||
return (self.code, self.regex.sub(self.target_repl, path))
|
||||
return None
|
||||
|
||||
|
||||
class RuleSet(object):
|
||||
"An ordered collection of rules."
|
||||
|
||||
_factories = {
|
||||
'redirect': Redirect,
|
||||
'redirectmatch': RedirectMatch,
|
||||
}
|
||||
|
||||
def __init__(self):
|
||||
self._rules = []
|
||||
|
||||
def add(self, linenum, *params):
|
||||
rule_type = params[0].lower()
|
||||
rule = self._factories[rule_type](linenum, *params)
|
||||
self._rules.append(rule)
|
||||
|
|
|
@ -132,3 +132,26 @@ class TestRedirectMatch(base.TestCase):
|
|||
(1, 'redirectmatch', '301', '/the/path', '/new/path',
|
||||
'extra-value'),
|
||||
)
|
||||
|
||||
|
||||
class TestRuleSet(base.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(TestRuleSet, self).setUp()
|
||||
self.ruleset = rules.RuleSet()
|
||||
|
||||
def test_add_redirect(self):
|
||||
self.ruleset.add(
|
||||
1,
|
||||
'redirect', '301', '/path', '/new/path',
|
||||
)
|
||||
self.assertEqual(1, len(self.ruleset._rules))
|
||||
self.assertIsInstance(self.ruleset._rules[0], rules.Redirect)
|
||||
|
||||
def test_add_redirectmatch(self):
|
||||
self.ruleset.add(
|
||||
1,
|
||||
'redirectmatch', '301', '/path', '/new/path',
|
||||
)
|
||||
self.assertEqual(1, len(self.ruleset._rules))
|
||||
self.assertIsInstance(self.ruleset._rules[0], rules.RedirectMatch)
|
||||
|
|
Loading…
Reference in New Issue