aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/tests/test_submission.py
blob: 4489692e494cc07f3179f3e5749427a95cf07207 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# GNU MediaGoblin -- federated, autonomous media hosting
# Copyright (C) 2011 Free Software Foundation, Inc
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

import urlparse

from nose.tools import assert_equal

from mediagoblin.auth import lib as auth_lib
from mediagoblin.tests.tools import setup_fresh_app, get_test_app
from mediagoblin import mg_globals
from mediagoblin import util

IMAGE_ROOT = 'mediagoblin/tests/test_submission'
GOOD_JPG = 'good.jpg'
GOOD_PNG = 'good.png'
EVIL_JPG = ''
EVIL_PNG = ''


# TODO:
# - Define test files as globals
#   - supported mime types
#   - unsupported mime type with supported extension
# - Remove any imports that aren't neccessary

class TestSubmission:
    def setUp(self):
        self.test_app = get_test_app()

        # 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['pw_hash'] = auth_lib.bcrypt_gen_password_hash('toast')
        test_user.save()

        self.test_app.post(
            '/auth/login/', {
                'username': u'chris',
                'password': 'toast'})

    def test_missing_fields(self):
        # Test missing title
        # Test missing description (if it's required)
        # Test missing file
        pass

    def test_normal_uploads(self):
        # FYI:
        # upload_files is for file uploads. It should be a list of
        # [(fieldname, filename, file_content)]. You can also use
        # just [(fieldname, filename)] and the file content will be
        # read from disk.

        # Test JPG
        # Test PNG
        # Test additional supported formats

        #resp = self.test_app.get('/')
        #print resp
        pass

    def test_malicious_uploads(self):
        # Test non-supported file with .jpg extension
        # Test non-supported file with .png extension
        pass