Forking what is left of ZeroNet and hopefully adding an AT Proto Frontend/Proxy
1from util import SafeRe
2
3import pytest
4
5
6class TestSafeRe:
7 def testSafeMatch(self):
8 assert SafeRe.match(
9 "((js|css)/(?!all.(js|css))|data/users/.*db|data/users/.*/.*|data/archived|.*.py)",
10 "js/ZeroTalk.coffee"
11 )
12 assert SafeRe.match(".+/data.json", "data/users/1J3rJ8ecnwH2EPYa6MrgZttBNc61ACFiCj/data.json")
13
14 @pytest.mark.parametrize("pattern", ["([a-zA-Z]+)*", "(a|aa)+*", "(a|a?)+", "(.*a){10}", "((?!json).)*$", r"(\w+\d+)+C"])
15 def testUnsafeMatch(self, pattern):
16 with pytest.raises(SafeRe.UnsafePatternError) as err:
17 SafeRe.match(pattern, "aaaaaaaaaaaaaaaaaaaaaaaa!")
18 assert "Potentially unsafe" in str(err.value)
19
20 @pytest.mark.parametrize("pattern", ["^(.*a)(.*a)(.*a)(.*a)(.*a)(.*a)(.*a)(.*a)(.*a)(.*a)(.*a)(.*a)(.*a)(.*a)(.*a)(.*a)(.*a)(.*a)(.*a)(.*a)(.*a)(.*a)(.*a)(.*a)$"])
21 def testUnsafeRepetition(self, pattern):
22 with pytest.raises(SafeRe.UnsafePatternError) as err:
23 SafeRe.match(pattern, "aaaaaaaaaaaaaaaaaaaaaaaa!")
24 assert "More than" in str(err.value)