Skip to content
This repository has been archived by the owner on Jul 19, 2023. It is now read-only.

Commit

Permalink
Update tests related to max upload name length.
Browse files Browse the repository at this point in the history
  • Loading branch information
JivanAmara committed Jan 10, 2017
1 parent 82dd02e commit 765554a
Showing 1 changed file with 40 additions and 6 deletions.
46 changes: 40 additions & 6 deletions osgeo_importer/tests/test_views.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from django.test import TestCase

from osgeo_importer import views
from osgeo_importer import models
from osgeo_importer.models import UploadedData


class TestFileAddView_upload(TestCase):
Expand Down Expand Up @@ -58,23 +59,56 @@ def test_double(self):
self.assertEqual(upload.file_type, None)

def test_single_too_long(self):
max_length = models.UploadedData._meta.get_field('name').max_length
too_long = "ObviouslyWayWayWayWayWayWayWayWayWayWayWayWayWayWayTooLong"
self.assertGreater(too_long, max_length)
""" Checks that view.upload() (FileAddView) simply truncates the filename when
there's only one file in the upload and it's too long.
"""
too_long_basename = (
"ObviouslyWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWay"
"WayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWay"
"WayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWay"
"TooLong.shp"
)
too_long_path = (
"/tmp/{}".format(too_long_basename)
)
data = [
self.FakeFile("/tmp/{0}".format(too_long))
self.FakeFile(too_long_path),
]

# Make sure too_long_basename is actually too long.
max_length = UploadedData._meta.get_field('name').max_length
self.assertGreater(
len(too_long_basename), max_length, 'Test file basename not longer than allowed: {}'.format(max_length))

view = self.view()
upload = view.upload(data, view.request.user)
self.assertEqual(upload.name.startswith("Obviously"), True)
self.assertEqual(upload.file_type, "BogusType")

def test_many_too_long(self):
""" Checks that view.upload() (FileAddView) returns an object with both attributes 'name', and 'file_type'
set to None for an upload with multiple files with at least
one which has a name beyond the maximum length allowed.
"""
too_long_name = (
"/tmp/WayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWay"
"WayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWay"
"WayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWayWay"
"TooLong.shp"
)
data = [
self.FakeFile("/tmp/xyz/abc/NotTooLongOnItsOwn.shp"),
self.FakeFile("/tmp/xyz/abc/rather_long_to_be_combined_with.shp"),
self.FakeFile("/tmp/really_too_much.shp"),
self.FakeFile("/tmp/really_not_too_much.shp"),
# len 251:
self.FakeFile(too_long_name),
]

# Make sure too_long_basename is actually too long.
max_filepath_length = UploadedData._meta.get_field('name').max_length
if True not in [len(ff.name) > max_filepath_length for ff in data]:
self.fail('None of the test filenames exceed the allowed length: {}'.format(max_filepath_length))

view = self.view()
upload = view.upload(data, view.request.user)
self.assertEqual(upload.name, None)
Expand Down

0 comments on commit 765554a

Please sign in to comment.