Raise a specific error if a filename component can't be resolved into anything.
This commit is contained in:
parent
a6b378ef4d
commit
770c12be8d
@ -18,6 +18,10 @@
|
||||
from werkzeug.utils import secure_filename
|
||||
|
||||
|
||||
class Error(Exception): pass
|
||||
class InvalidFilepath(Error): pass
|
||||
|
||||
|
||||
def clean_listy_filepath(listy_filepath):
|
||||
"""
|
||||
Take a listy filepath (like ['dir1', 'dir2', 'filename.jpg']) and
|
||||
@ -34,8 +38,14 @@ def clean_listy_filepath(listy_filepath):
|
||||
Returns:
|
||||
A cleaned list of unicode objects.
|
||||
"""
|
||||
return [
|
||||
cleaned_filepath = [
|
||||
unicode(secure_filename(filepath))
|
||||
for filepath in listy_filepath]
|
||||
|
||||
if u'' in cleaned_filepath:
|
||||
raise InvalidFilepath(
|
||||
"A filename component could not be resolved into a usable name.")
|
||||
|
||||
return cleaned_filepath
|
||||
|
||||
|
||||
|
@ -30,3 +30,12 @@ def test_clean_listy_filepath():
|
||||
expected = [u'etc', u'passwd']
|
||||
assert storage.clean_listy_filepath(
|
||||
['../../../etc/', 'passwd']) == expected
|
||||
|
||||
try:
|
||||
storage.clean_listy_filepath(
|
||||
['../../', 'linooks.jpg'])
|
||||
except storage.InvalidFilepath:
|
||||
# Yes, this error should be raise
|
||||
pass
|
||||
else:
|
||||
assert "success" == "failboat"
|
||||
|
Loading…
x
Reference in New Issue
Block a user