aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRodney Ewing <ewing.rj@gmail.com>2013-06-12 13:56:43 -0700
committerRodney Ewing <ewing.rj@gmail.com>2013-08-26 06:33:28 -0700
commitc3cce7564a0a949c2835a948e0203e489063dfbd (patch)
treec239a1ee31eda145c0450a14a2fa6883e0890621
parentbdd2242155d3192615740661ce52f6fb960d1a05 (diff)
downloadmediagoblin-c3cce7564a0a949c2835a948e0203e489063dfbd.tar.lz
mediagoblin-c3cce7564a0a949c2835a948e0203e489063dfbd.tar.xz
mediagoblin-c3cce7564a0a949c2835a948e0203e489063dfbd.zip
added tests
-rw-r--r--mediagoblin/submit/views.py14
-rw-r--r--mediagoblin/tests/test_submission.py68
2 files changed, 74 insertions, 8 deletions
diff --git a/mediagoblin/submit/views.py b/mediagoblin/submit/views.py
index d5f05cb7..2b76abf7 100644
--- a/mediagoblin/submit/views.py
+++ b/mediagoblin/submit/views.py
@@ -44,7 +44,7 @@ def submit_start(request):
First view for submitting a file.
"""
user = request.user
- if user.upload_limit:
+ if user.upload_limit >= 0:
upload_limit = user.upload_limit
else:
upload_limit = mg_globals.app_config['upload_limit']
@@ -54,8 +54,8 @@ def submit_start(request):
request,
messages.WARNING,
_('Sorry, you have reached your upload limit.'))
- return redirect(
- request, '/u/{0}'.format(user.username))
+ return redirect(request, "mediagoblin.user_pages.user_home",
+ user=request.user.username)
submit_form = submit_forms.SubmitStartForm(request.form,
license=request.user.license_preference)
@@ -105,15 +105,15 @@ def submit_start(request):
entry.queued_media_file) / (1024.0 * 1024)
file_size = float('{0:.2f}'.format(file_size))
- # Check if over upload limit
+ # Check if user is over upload limit
if (user.uploaded + file_size) >= upload_limit:
messages.add_message(
request,
messages.WARNING,
_('Sorry, uploading this file will put you over your'
' upload limit.'))
- return redirect(
- request, '/u/{0}'.format(user.username))
+ return redirect(request, "mediagoblin.user_pages.user_home",
+ user=user.username)
user.uploaded = user.uploaded + file_size
user.save()
@@ -137,7 +137,7 @@ def submit_start(request):
add_comment_subscription(request.user, entry)
return redirect(request, "mediagoblin.user_pages.user_home",
- user=request.user.username)
+ user=user.username)
except Exception as e:
'''
This section is intended to catch exceptions raised in
diff --git a/mediagoblin/tests/test_submission.py b/mediagoblin/tests/test_submission.py
index ac941063..fdc322dc 100644
--- a/mediagoblin/tests/test_submission.py
+++ b/mediagoblin/tests/test_submission.py
@@ -24,7 +24,8 @@ import pytest
from mediagoblin.tests.tools import fixture_add_user
from mediagoblin import mg_globals
-from mediagoblin.db.models import MediaEntry
+from mediagoblin.db.models import MediaEntry, User
+from mediagoblin.db.base import Session
from mediagoblin.tools import template
from mediagoblin.media_types.image import ImageMediaManager
from mediagoblin.media_types.pdf.processing import check_prerequisites as pdf_check_prerequisites
@@ -107,9 +108,38 @@ class TestSubmission:
self.logout()
self.test_app.get(url)
+ def user_upload_limits(self, uploaded=None, upload_limit=None):
+ if uploaded:
+ self.test_user.uploaded = uploaded
+ if upload_limit:
+ self.test_user.upload_limit = upload_limit
+
+ self.test_user.save()
+
+ # Reload
+ self.test_user = User.query.filter_by(
+ username=self.test_user.username
+ ).first()
+
+ # ... and detach from session:
+ Session.expunge(self.test_user)
+
def test_normal_jpg(self):
+ # User uploaded should be 0
+ assert self.test_user.uploaded == 0
+
self.check_normal_upload(u'Normal upload 1', GOOD_JPG)
+ # User uploaded should be the same as GOOD_JPG size in Mb
+ file_size = os.stat(GOOD_JPG).st_size / (1024.0 * 1024)
+ file_size = float('{0:.2f}'.format(file_size))
+
+ # Reload user
+ self.test_user = User.query.filter_by(
+ username=self.test_user.username
+ ).first()
+ assert self.test_user.uploaded == file_size
+
def test_normal_png(self):
self.check_normal_upload(u'Normal upload 2', GOOD_PNG)
@@ -121,6 +151,33 @@ class TestSubmission:
self.check_url(response, '/u/{0}/'.format(self.test_user.username))
assert 'mediagoblin/user_pages/user.html' in context
+ def test_default_upload_limits(self):
+ self.user_upload_limits(uploaded=500)
+
+ response, context = self.do_post({'title': u'Normal upload 4'},
+ do_follow=True,
+ **self.upload_data(GOOD_JPG))
+ self.check_url(response, '/u/{0}/'.format(self.test_user.username))
+ assert 'mediagoblin/user_pages/user.html' in context
+
+ def test_user_upload_limit(self):
+ self.user_upload_limits(uploaded=25, upload_limit=25)
+
+ response, context = self.do_post({'title': u'Normal upload 4'},
+ do_follow=True,
+ **self.upload_data(GOOD_JPG))
+ self.check_url(response, '/u/{0}/'.format(self.test_user.username))
+ assert 'mediagoblin/user_pages/user.html' in context
+
+ def test_user_under_limit(self):
+ self.user_upload_limits(uploaded=499)
+
+ response, context = self.do_post({'title': u'Normal upload 4'},
+ do_follow=True,
+ **self.upload_data(GOOD_JPG))
+ self.check_url(response, '/u/{0}/'.format(self.test_user.username))
+ assert 'mediagoblin/user_pages/user.html' in context
+
def check_media(self, request, find_data, count=None):
media = MediaEntry.query.filter_by(**find_data)
if count is not None:
@@ -155,6 +212,7 @@ class TestSubmission:
'ffffffffffffffffffffffffffuuuuuuuuuuuuuuuuuuuuuuuuuu']
def test_delete(self):
+ self.user_upload_limits(uploaded=50)
response, request = self.do_post({'title': u'Balanced Goblin'},
*REQUEST_CONTEXT, do_follow=True,
**self.upload_data(GOOD_JPG))
@@ -199,6 +257,14 @@ class TestSubmission:
self.check_media(request, {'id': media_id}, 0)
self.check_comments(request, media_id, 0)
+ # Reload user
+ self.test_user = User.query.filter_by(
+ username = self.test_user.username
+ ).first()
+
+ # Check that user.uploaded is the same as before the upload
+ assert self.test_user.uploaded == 50
+
def test_evil_file(self):
# Test non-suppoerted file with non-supported extension
# -----------------------------------------------------