Skip to content

Commit

Permalink
Added tests for Storage's generate_filename.
Browse files Browse the repository at this point in the history
  • Loading branch information
nessita committed May 9, 2024
1 parent d59066b commit a1b0777
Showing 1 changed file with 37 additions and 0 deletions.
37 changes: 37 additions & 0 deletions tests/file_storage/test_generate_filename.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,46 @@ def generate_filename(self, filename):
return self.prefix + self.get_valid_name(filename)


class StorageGenerateFilenameTests(SimpleTestCase):
"""Tests for base Storage's generate_filename method."""

storage_class = Storage

def test_valid_names(self):
storage = self.storage_class()
name = "UnTRIVíAL @fil$ena#me!"
valid_name = storage.get_valid_name(name)
candidates = [
(name, valid_name),
(f"././././././{name}", valid_name),
(f"some/path/{name}", f"some/path/{valid_name}"),
(f"some/./path/./{name}", f"some/path/{valid_name}"),
(f"././some/././path/./{name}", f"some/path/{valid_name}"),
(f".\\.\\.\\.\\.\\.\\{name}", valid_name),
(f"some\\path\\{name}", f"some/path/{valid_name}"),
(f"some\\.\\path\\.\\{name}", f"some/path/{valid_name}"),
(f".\\.\\some\\.\\.\\path\\.\\{name}", f"some/path/{valid_name}"),
]
for name, expected in candidates:
with self.subTest(name=name):
result = storage.generate_filename(name)
self.assertEqual(result, expected)


class FileSystemStorageGenerateFilenameTests(StorageGenerateFilenameTests):

storage_class = FileSystemStorage


class GenerateFilenameStorageTests(SimpleTestCase):
def test_storage_dangerous_paths(self):
candidates = [
("/tmp/..", ".."),
("\\tmp\\..", ".."),
("/tmp/.", "."),
("\\tmp\\.", "."),
("..", ".."),
(".", "."),
("", ""),
]
s = FileSystemStorage()
Expand All @@ -55,6 +90,8 @@ def test_storage_dangerous_paths(self):

def test_storage_dangerous_paths_dir_name(self):
candidates = [
("../path", ".."),
("..\\path", ".."),
("tmp/../path", "tmp/.."),
("tmp\\..\\path", "tmp/.."),
("/tmp/../path", "/tmp/.."),
Expand Down

0 comments on commit a1b0777

Please sign in to comment.