Browse Source

work_name would not be sanatized when adding NZB's

Closes #1615
Now with tests, yeah.
tags/3.1.0RC3
Safihre 5 years ago
parent
commit
e8e9974224
  1. 12
      sabnzbd/nzbstuff.py
  2. 19
      tests/test_nzbstuff.py

12
sabnzbd/nzbstuff.py

@ -2070,16 +2070,16 @@ def nzf_cmp_name(nzf1, nzf2):
def create_work_name(name):
""" Remove ".nzb" and ".par(2)" and sanitize """
strip_ext = [".nzb", ".par", ".par2"]
name = sanitize_foldername(name.strip())
""" Remove ".nzb" and ".par(2)" and sanitize, skip URL's """
if name.find("://") < 0:
name_base, ext = os.path.splitext(name)
# In case it was one of these, there might be more
while ext.lower() in strip_ext:
# Need to remove any invalid characters before starting
name_base, ext = os.path.splitext(sanitize_foldername(name))
while ext.lower() in (".nzb", ".par", ".par2"):
name = name_base
name_base, ext = os.path.splitext(name)
return name.strip()
# And make sure we remove invalid characters again
return sanitize_foldername(name)
else:
return name.strip()

19
tests/test_nzbstuff.py

@ -55,7 +55,7 @@ class TestNZO:
# TODO: More checks!
class TestScanPassword:
class TestNZBStuffHelpers:
def test_scan_passwords(self):
file_names = {
"my_awesome_nzb_file{{password}}": "password",
@ -77,3 +77,20 @@ class TestScanPassword:
for file_name, clean_file_name in file_names.items():
assert nzbstuff.scan_password(file_name)[0] == clean_file_name
def test_create_work_name(self):
# Only test stuff specific for create_work_name
# The sanitizing is already tested in tests for sanitize_foldername
file_names = {
"my_awesome_nzb_file.pAr2.nZb": "my_awesome_nzb_file",
"my_awesome_nzb_file.....pAr2.nZb": "my_awesome_nzb_file",
"my_awesome_nzb_file....par2..": "my_awesome_nzb_file",
" my_awesome_nzb_file .pAr.nZb": "my_awesome_nzb_file",
"with.extension.and.period.par2.": "with.extension.and.period",
"nothing.in.here": "nothing.in.here",
" just.space ": "just.space",
"http://test.par2 ": "http://test.par2",
}
for file_name, clean_file_name in file_names.items():
assert nzbstuff.create_work_name(file_name) == clean_file_name

Loading…
Cancel
Save