mirror of
https://github.com/jupyter/notebook.git
synced 2025-02-11 12:30:51 +08:00
- require leading `/` - match empty string - disallow consecutive `//` This means that path_regex should be included as `/api/whatever%s`, not `/api/whatever/%s`
62 lines
1.3 KiB
Python
62 lines
1.3 KiB
Python
|
|
import re
|
|
import nose.tools as nt
|
|
|
|
from IPython.html.base.handlers import path_regex, notebook_path_regex
|
|
|
|
try: # py3
|
|
assert_regex = nt.assert_regex
|
|
assert_not_regex = nt.assert_not_regex
|
|
except AttributeError: # py2
|
|
assert_regex = nt.assert_regexp_matches
|
|
assert_not_regex = nt.assert_not_regexp_matches
|
|
|
|
|
|
# build regexps that tornado uses:
|
|
path_pat = re.compile('^' + '/x%s' % path_regex + '$')
|
|
nb_path_pat = re.compile('^' + '/y%s' % notebook_path_regex + '$')
|
|
|
|
def test_path_regex():
|
|
for path in (
|
|
'/x',
|
|
'/x/',
|
|
'/x/foo',
|
|
'/x/foo.ipynb',
|
|
'/x/foo/bar',
|
|
'/x/foo/bar.txt',
|
|
):
|
|
assert_regex(path, path_pat)
|
|
|
|
def test_path_regex_bad():
|
|
for path in (
|
|
'/xfoo',
|
|
'/xfoo/',
|
|
'/xfoo/bar',
|
|
'/xfoo/bar/',
|
|
'/x/foo/bar/',
|
|
'/x//foo',
|
|
'/y',
|
|
'/y/x/foo',
|
|
):
|
|
assert_not_regex(path, path_pat)
|
|
|
|
def test_notebook_path_regex():
|
|
for path in (
|
|
'/y/asdf.ipynb',
|
|
'/y/foo/bar.ipynb',
|
|
'/y/a/b/c/d/e.ipynb',
|
|
):
|
|
assert_regex(path, nb_path_pat)
|
|
|
|
def test_notebook_path_regex_bad():
|
|
for path in (
|
|
'/y',
|
|
'/y/',
|
|
'/y/.ipynb',
|
|
'/y/foo/.ipynb',
|
|
'/y/foo/bar',
|
|
'/yfoo.ipynb',
|
|
'/yfoo/bar.ipynb',
|
|
):
|
|
assert_not_regex(path, nb_path_pat)
|