Forking what is left of ZeroNet and hopefully adding an AT Proto Frontend/Proxy
at main 24 lines 1.1 kB view raw
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)