ASCII media type support & fix a bug in file submission error handling
[mediagoblin.git] / mediagoblin / tests / test_submission.py
index 1c657e6c6606fdc063178177462a545abf217191..4a0543a86e7e4e30e243cb5a4c1f6507ef1c6da3 100644 (file)
@@ -1,3 +1,4 @@
+
 # GNU MediaGoblin -- federated, autonomous media hosting
 # Copyright (C) 2011 MediaGoblin contributors.  See AUTHORS.
 #
 
 import urlparse
 import pkg_resources
+import re
 
 from nose.tools import assert_equal, assert_true, assert_false
 
-from mediagoblin.auth import lib as auth_lib
-from mediagoblin.tests.tools import setup_fresh_app, get_test_app
+from mediagoblin.tests.tools import setup_fresh_app, get_test_app, \
+    fixture_add_user
 from mediagoblin import mg_globals
 from mediagoblin.tools import template, common
 
@@ -45,13 +47,7 @@ class TestSubmission:
 
         # TODO: Possibly abstract into a decorator like:
         # @as_authenticated_user('chris')
-        test_user = mg_globals.database.User()
-        test_user['username'] = u'chris'
-        test_user['email'] = u'chris@example.com'
-        test_user['email_verified'] = True
-        test_user['status'] = u'active'
-        test_user['pw_hash'] = auth_lib.bcrypt_gen_password_hash('toast')
-        test_user.save()
+        test_user = fixture_add_user()
 
         self.test_user = test_user
 
@@ -176,8 +172,8 @@ class TestSubmission:
         response = self.test_app.post(
             request.urlgen('mediagoblin.user_pages.media_confirm_delete',
                            # No work: user=media.uploader().username,
-                           user=self.test_user['username'],
-                           media=media['_id']),
+                           user=self.test_user.username,
+                           media=media._id),
             # no value means no confirm
             {})
 
@@ -196,8 +192,8 @@ class TestSubmission:
         response = self.test_app.post(
             request.urlgen('mediagoblin.user_pages.media_confirm_delete',
                            # No work: user=media.uploader().username,
-                           user=self.test_user['username'],
-                           media=media['_id']),
+                           user=self.test_user.username,
+                           media=media._id),
             {'confirm': 'y'})
 
         response.follow()
@@ -208,7 +204,7 @@ class TestSubmission:
         # Does media entry still exist?
         assert_false(
             request.db.MediaEntry.find(
-                {'_id': media['_id']}).count())
+                {'_id': media._id}).count())
 
     def test_malicious_uploads(self):
         # Test non-suppoerted file with non-supported extension
@@ -222,7 +218,8 @@ class TestSubmission:
 
         context = template.TEMPLATE_TEST_CONTEXT['mediagoblin/submit/start.html']
         form = context['submit_form']
-        assert form.file.errors == ['The file doesn\'t seem to be an image!']
+        assert re.match(r'^Could not extract any file extension from ".*?"$', str(form.file.errors[0]))
+        assert len(form.file.errors) == 1
 
         # NOTE: The following 2 tests will ultimately fail, but they
         #   *will* pass the initial form submission step.  Instead,
@@ -246,7 +243,7 @@ class TestSubmission:
         assert_equal(entry['state'], 'failed')
         assert_equal(
             entry['fail_error'],
-            u'mediagoblin.process_media.errors:BadMediaFail')
+            u'mediagoblin.processing:BadMediaFail')
 
         # Test non-supported file with .png extension
         # -------------------------------------------
@@ -266,4 +263,4 @@ class TestSubmission:
         assert_equal(entry['state'], 'failed')
         assert_equal(
             entry['fail_error'],
-            u'mediagoblin.process_media.errors:BadMediaFail')
+            u'mediagoblin.processing:BadMediaFail')