tests: regroup common functions into an utility module
This commit is contained in:
parent
b8773b2c66
commit
afad4d33d8
|
@ -1,12 +1,13 @@
|
|||
import sys
|
||||
import shutil
|
||||
import tempfile
|
||||
|
||||
from quixote import cleanup
|
||||
from wcs.qommon.http_request import HTTPRequest
|
||||
from wcs import formdef, publisher
|
||||
from wcs import formdef
|
||||
from wcs.formdef import FormDef
|
||||
|
||||
from utilities import create_temporary_pub
|
||||
|
||||
sys.modules['formdef'] = formdef
|
||||
|
||||
users = {}
|
||||
|
@ -17,8 +18,7 @@ def setup_module(module):
|
|||
global users
|
||||
global pub
|
||||
|
||||
publisher.WcsPublisher.APP_DIR = tempfile.mkdtemp()
|
||||
pub = publisher.WcsPublisher.create_publisher()
|
||||
pub = create_temporary_pub()
|
||||
|
||||
req = HTTPRequest(None, {})
|
||||
pub._set_request(req)
|
||||
|
|
|
@ -1,28 +1,21 @@
|
|||
import sys
|
||||
import shutil
|
||||
import tempfile
|
||||
|
||||
import pytest
|
||||
|
||||
from webtest import TestApp
|
||||
|
||||
from quixote.wsgi import QWIP
|
||||
from quixote import cleanup, get_publisher
|
||||
from wcs.qommon import errors, sessions
|
||||
from qommon.ident.password_accounts import PasswordAccount
|
||||
from wcs import publisher
|
||||
from wcs.qommon.http_request import HTTPRequest
|
||||
|
||||
QWIP.request_class = HTTPRequest
|
||||
|
||||
from utilities import get_app, login, create_temporary_pub
|
||||
|
||||
def setup_module(module):
|
||||
cleanup()
|
||||
|
||||
global pub
|
||||
|
||||
publisher.WcsPublisher.APP_DIR = tempfile.mkdtemp()
|
||||
pub = publisher.WcsPublisher.create_publisher()
|
||||
pub = create_temporary_pub()
|
||||
|
||||
req = HTTPRequest(None, {'SCRIPT_NAME': '/', 'SERVER_NAME': 'example.net'})
|
||||
pub.set_app_dir(req)
|
||||
pub.cfg['identification'] = {'methods': ['password']}
|
||||
|
@ -40,62 +33,51 @@ def create_superuser():
|
|||
account1.user_id = user1.id
|
||||
account1.store()
|
||||
|
||||
def get_app():
|
||||
return TestApp(QWIP(pub), extra_environ={'HTTP_HOST': 'example.net'})
|
||||
|
||||
def login(app):
|
||||
login_page = app.get('/login/')
|
||||
login_form = login_page.forms['login-form']
|
||||
login_form['username'] = 'admin'
|
||||
login_form['password'] = 'admin'
|
||||
resp = login_form.submit()
|
||||
assert resp.status_int == 302
|
||||
return app
|
||||
|
||||
|
||||
def teardown_module(module):
|
||||
shutil.rmtree(pub.APP_DIR)
|
||||
|
||||
def test_empty_site():
|
||||
get_app().get('/admin/')
|
||||
get_app(pub).get('/admin/')
|
||||
|
||||
def test_with_user():
|
||||
create_superuser()
|
||||
resp = get_app().get('/admin/', status=302)
|
||||
resp = get_app(pub).get('/admin/', status=302)
|
||||
resp = resp.follow()
|
||||
assert resp.location == 'http://example.net/login/'
|
||||
|
||||
def test_with_superuser():
|
||||
app = login(get_app())
|
||||
app = login(get_app(pub))
|
||||
app.get('/admin/')
|
||||
|
||||
def test_forms():
|
||||
app = login(get_app())
|
||||
app = login(get_app(pub))
|
||||
app.get('/admin/forms/')
|
||||
app.get('/admin/forms/new')
|
||||
|
||||
def test_workflows():
|
||||
app = login(get_app())
|
||||
app = login(get_app(pub))
|
||||
app.get('/admin/workflows/')
|
||||
app.get('/admin/workflows/new')
|
||||
|
||||
def test_users():
|
||||
app = login(get_app())
|
||||
app = login(get_app(pub))
|
||||
app.get('/admin/users/')
|
||||
app.get('/admin/users/new')
|
||||
|
||||
def test_roles():
|
||||
app = login(get_app())
|
||||
app = login(get_app(pub))
|
||||
app.get('/admin/roles/')
|
||||
app.get('/admin/roles/new')
|
||||
|
||||
def test_categories():
|
||||
app = login(get_app())
|
||||
app = login(get_app(pub))
|
||||
app.get('/admin/categories/')
|
||||
app.get('/admin/categories/new')
|
||||
|
||||
def test_settings():
|
||||
app = login(get_app())
|
||||
app = login(get_app(pub))
|
||||
app.get('/admin/settings/')
|
||||
app.get('/admin/settings/themes')
|
||||
app.get('/admin/settings/users')
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
import tempfile
|
||||
import shutil
|
||||
import os
|
||||
import hmac
|
||||
|
@ -7,29 +6,21 @@ import hashlib
|
|||
import urllib
|
||||
import datetime
|
||||
|
||||
from webtest import TestApp
|
||||
|
||||
from quixote import cleanup, get_publisher
|
||||
from quixote.wsgi import QWIP
|
||||
from wcs import publisher
|
||||
from wcs.qommon.http_request import HTTPRequest
|
||||
from wcs.users import User
|
||||
from wcs.categories import Category
|
||||
|
||||
from utilities import get_app, create_temporary_pub
|
||||
|
||||
pub, req, app_dir, user = None, None, None, None
|
||||
|
||||
QWIP.request_class = HTTPRequest
|
||||
|
||||
def setup_module(module):
|
||||
cleanup()
|
||||
|
||||
global pub, req, app_dir, user
|
||||
APP_DIR = tempfile.mkdtemp()
|
||||
publisher.WcsPublisher.APP_DIR = APP_DIR
|
||||
pub = publisher.WcsPublisher.create_publisher()
|
||||
# allow saving the user
|
||||
pub.app_dir = os.path.join(APP_DIR, 'example.net')
|
||||
os.mkdir(pub.app_dir)
|
||||
pub = create_temporary_pub()
|
||||
|
||||
user = User()
|
||||
user.name = 'Jean Darmette'
|
||||
user.email = 'jean.darmette@triffouilis.fr'
|
||||
|
@ -49,35 +40,32 @@ def teardown_module(module):
|
|||
global pub
|
||||
shutil.rmtree(pub.APP_DIR)
|
||||
|
||||
def get_app():
|
||||
return TestApp(QWIP(pub), extra_environ={'HTTP_HOST': 'example.net'})
|
||||
|
||||
def test_user_page_redirect():
|
||||
output = get_app().get('/user')
|
||||
output = get_app(pub).get('/user')
|
||||
assert output.headers.get('location') == 'http://example.net/myspace/'
|
||||
|
||||
def test_user_page_error_when_json_and_no_user():
|
||||
output = get_app().get('/user?format=json')
|
||||
output = get_app(pub).get('/user?format=json')
|
||||
assert output.body == '???'
|
||||
|
||||
def test_get_user_from_api_query_string_error_missing_orig():
|
||||
output = get_app().get('/user?format=json&signature=xxx', status=403)
|
||||
output = get_app(pub).get('/user?format=json&signature=xxx', status=403)
|
||||
assert output.json['err_desc'] == 'missing/multiple orig field'
|
||||
|
||||
def test_get_user_from_api_query_string_error_invalid_orig():
|
||||
output = get_app().get('/user?format=json&orig=coin&signature=xxx', status=403)
|
||||
output = get_app(pub).get('/user?format=json&orig=coin&signature=xxx', status=403)
|
||||
assert output.json['err_desc'] == 'invalid orig'
|
||||
|
||||
def test_get_user_from_api_query_string_error_missing_algo():
|
||||
output = get_app().get('/user?format=json&orig=coucou&signature=xxx', status=403)
|
||||
output = get_app(pub).get('/user?format=json&orig=coucou&signature=xxx', status=403)
|
||||
assert output.json['err_desc'] == 'missing/multiple algo field'
|
||||
|
||||
def test_get_user_from_api_query_string_error_invalid_algo():
|
||||
output = get_app().get('/user?format=json&orig=coucou&signature=xxx&algo=coin', status=403)
|
||||
output = get_app(pub).get('/user?format=json&orig=coucou&signature=xxx&algo=coin', status=403)
|
||||
assert output.json['err_desc'] == 'invalid algo'
|
||||
|
||||
def test_get_user_from_api_query_string_error_invalid_signature():
|
||||
output = get_app().get('/user?format=json&orig=coucou&signature=xxx&algo=sha1', status=403)
|
||||
output = get_app(pub).get('/user?format=json&orig=coucou&signature=xxx&algo=sha1', status=403)
|
||||
assert output.json['err_desc'] == 'invalid signature'
|
||||
|
||||
def test_get_user_from_api_query_string_error_missing_timestamp():
|
||||
|
@ -86,7 +74,7 @@ def test_get_user_from_api_query_string_error_missing_timestamp():
|
|||
hmac.new('1234',
|
||||
'format=json&orig=coucou&algo=sha1',
|
||||
hashlib.sha1).digest()))
|
||||
output = get_app().get('/user?format=json&orig=coucou&algo=sha1&signature=%s' % signature, status=403)
|
||||
output = get_app(pub).get('/user?format=json&orig=coucou&algo=sha1&signature=%s' % signature, status=403)
|
||||
assert output.json['err_desc'] == 'missing/multiple timestamp field'
|
||||
|
||||
def test_get_user_from_api_query_string_error_missing_email():
|
||||
|
@ -97,7 +85,7 @@ def test_get_user_from_api_query_string_error_missing_email():
|
|||
hmac.new('1234',
|
||||
query,
|
||||
hashlib.sha1).digest()))
|
||||
output = get_app().get('/user?%s&signature=%s' % (query, signature), status=403)
|
||||
output = get_app(pub).get('/user?%s&signature=%s' % (query, signature), status=403)
|
||||
assert output.json['err_desc'] == 'missing email or NameID fields'
|
||||
|
||||
def test_get_user_from_api_query_string_error_success_sha1():
|
||||
|
@ -108,7 +96,7 @@ def test_get_user_from_api_query_string_error_success_sha1():
|
|||
hmac.new('1234',
|
||||
query,
|
||||
hashlib.sha1).digest()))
|
||||
output = get_app().get('/user?%s&signature=%s' % (query, signature))
|
||||
output = get_app(pub).get('/user?%s&signature=%s' % (query, signature))
|
||||
assert output.json['user_display_name'] == u'Jean Darmette'
|
||||
|
||||
def test_get_user_from_api_query_string_error_invalid_signature_algo_mismatch():
|
||||
|
@ -119,7 +107,7 @@ def test_get_user_from_api_query_string_error_invalid_signature_algo_mismatch():
|
|||
hmac.new('1234',
|
||||
query,
|
||||
hashlib.sha1).digest()))
|
||||
output = get_app().get('/user?%s&signature=%s' % (query, signature), status=403)
|
||||
output = get_app(pub).get('/user?%s&signature=%s' % (query, signature), status=403)
|
||||
assert output.json['err_desc'] == 'invalid signature'
|
||||
|
||||
def test_get_user_from_api_query_string_error_success_sha256():
|
||||
|
@ -130,5 +118,5 @@ def test_get_user_from_api_query_string_error_success_sha256():
|
|||
hmac.new('1234',
|
||||
query,
|
||||
hashlib.sha256).digest()))
|
||||
output = get_app().get('/user?%s&signature=%s' % (query, signature))
|
||||
output = get_app(pub).get('/user?%s&signature=%s' % (query, signature))
|
||||
assert output.json['user_display_name'] == u'Jean Darmette'
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import os
|
||||
import pickle
|
||||
import shutil
|
||||
import tempfile
|
||||
from cStringIO import StringIO
|
||||
|
||||
import pytest
|
||||
|
@ -11,14 +10,14 @@ from wcs import publisher
|
|||
|
||||
from wcs.categories import Category
|
||||
|
||||
from utilities import create_temporary_pub
|
||||
|
||||
def setup_module(module):
|
||||
cleanup()
|
||||
|
||||
global pub
|
||||
|
||||
publisher.WcsPublisher.APP_DIR = tempfile.mkdtemp()
|
||||
pub = publisher.WcsPublisher.create_publisher()
|
||||
|
||||
pub = create_temporary_pub()
|
||||
|
||||
def teardown_module(module):
|
||||
shutil.rmtree(pub.APP_DIR)
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
import sys
|
||||
import shutil
|
||||
import tempfile
|
||||
|
||||
from quixote import cleanup
|
||||
from wcs import publisher
|
||||
|
@ -9,14 +8,14 @@ from wcs.qommon.form import *
|
|||
from wcs import fields
|
||||
|
||||
from test_widgets import MockHtmlForm, mock_form_submission
|
||||
from utilities import create_temporary_pub
|
||||
|
||||
def setup_module(module):
|
||||
cleanup()
|
||||
|
||||
global pub, req
|
||||
|
||||
publisher.WcsPublisher.APP_DIR = tempfile.mkdtemp()
|
||||
pub = publisher.WcsPublisher.create_publisher()
|
||||
pub = create_temporary_pub()
|
||||
|
||||
req = HTTPRequest(None, {})
|
||||
pub._set_request(req)
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
import sys
|
||||
import shutil
|
||||
import tempfile
|
||||
|
||||
from quixote import cleanup
|
||||
from quixote.http_request import Upload
|
||||
from wcs.qommon.http_request import HTTPRequest
|
||||
from wcs import fields, formdef, publisher
|
||||
from wcs import fields, formdef
|
||||
from wcs.formdef import FormDef
|
||||
|
||||
from utilities import create_temporary_pub
|
||||
|
||||
sys.modules['formdef'] = formdef
|
||||
|
||||
def setup_module(module):
|
||||
|
@ -15,8 +16,7 @@ def setup_module(module):
|
|||
|
||||
global pub, formdef
|
||||
|
||||
publisher.WcsPublisher.APP_DIR = tempfile.mkdtemp()
|
||||
pub = publisher.WcsPublisher.create_publisher()
|
||||
pub = create_temporary_pub()
|
||||
|
||||
formdef = FormDef()
|
||||
formdef.name = 'foobar'
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
import datetime
|
||||
import sys
|
||||
import shutil
|
||||
import tempfile
|
||||
|
||||
from quixote import cleanup
|
||||
from wcs import formdef, publisher
|
||||
from wcs import formdef
|
||||
from wcs.formdef import FormDef
|
||||
|
||||
from utilities import create_temporary_pub
|
||||
|
||||
sys.modules['formdef'] = formdef
|
||||
|
||||
def setup_module(module):
|
||||
|
@ -14,8 +15,7 @@ def setup_module(module):
|
|||
|
||||
global pub
|
||||
|
||||
publisher.WcsPublisher.APP_DIR = tempfile.mkdtemp()
|
||||
pub = publisher.WcsPublisher.create_publisher()
|
||||
pub = create_temporary_pub()
|
||||
pub.cfg['language'] = {'language': 'en'}
|
||||
|
||||
def teardown_module(module):
|
||||
|
|
|
@ -1,24 +1,21 @@
|
|||
import sys
|
||||
import shutil
|
||||
import StringIO
|
||||
import tempfile
|
||||
import time
|
||||
import xml.etree.ElementTree as ET
|
||||
|
||||
from quixote import cleanup
|
||||
from wcs import publisher
|
||||
|
||||
from wcs.formdef import FormDef, fields
|
||||
from qommon.misc import indent_xml as indent
|
||||
|
||||
from utilities import create_temporary_pub
|
||||
|
||||
|
||||
def setup_module(module):
|
||||
cleanup()
|
||||
|
||||
global pub, req
|
||||
|
||||
publisher.WcsPublisher.APP_DIR = tempfile.mkdtemp()
|
||||
pub = publisher.WcsPublisher.create_publisher()
|
||||
global pub
|
||||
pub = create_temporary_pub()
|
||||
|
||||
|
||||
def teardown_module(module):
|
||||
|
|
|
@ -1,19 +1,18 @@
|
|||
import sys
|
||||
import shutil
|
||||
import tempfile
|
||||
|
||||
from quixote import cleanup
|
||||
from wcs import publisher
|
||||
from wcs.qommon.http_request import HTTPRequest
|
||||
from wcs import fields
|
||||
|
||||
from utilities import create_temporary_pub
|
||||
|
||||
def setup_module(module):
|
||||
cleanup()
|
||||
|
||||
global pub
|
||||
|
||||
publisher.WcsPublisher.APP_DIR = tempfile.mkdtemp()
|
||||
pub = publisher.WcsPublisher.create_publisher()
|
||||
pub = create_temporary_pub()
|
||||
|
||||
req = HTTPRequest(None, {})
|
||||
pub._set_request(req)
|
||||
|
|
|
@ -1,17 +1,18 @@
|
|||
import sys
|
||||
import shutil
|
||||
import tempfile
|
||||
|
||||
import pytest
|
||||
|
||||
from quixote import cleanup
|
||||
from qommon import errors, sessions
|
||||
from wcs import formdef, publisher
|
||||
from wcs import formdef
|
||||
from wcs.qommon.http_request import HTTPRequest
|
||||
from wcs.formdef import FormDef
|
||||
from wcs.categories import Category
|
||||
import wcs.forms.root
|
||||
|
||||
from utilities import create_temporary_pub
|
||||
|
||||
sys.modules['formdef'] = formdef
|
||||
|
||||
|
||||
|
@ -22,8 +23,7 @@ def setup_module(module):
|
|||
global user1, user2
|
||||
global category
|
||||
|
||||
publisher.WcsPublisher.APP_DIR = tempfile.mkdtemp()
|
||||
pub = publisher.WcsPublisher.create_publisher()
|
||||
pub = create_temporary_pub()
|
||||
|
||||
req = HTTPRequest(None, {'SCRIPT_NAME': '/'})
|
||||
req._user = None
|
||||
|
|
|
@ -3,7 +3,6 @@ import os
|
|||
import random
|
||||
import shutil
|
||||
import sys
|
||||
import tempfile
|
||||
import time
|
||||
|
||||
from quixote import cleanup
|
||||
|
@ -14,6 +13,8 @@ from wcs.formdata import Evolution
|
|||
from wcs import sql
|
||||
import wcs.qommon.storage as st
|
||||
|
||||
from utilities import create_temporary_pub
|
||||
|
||||
sys.modules['formdef'] = formdef
|
||||
|
||||
import pytest
|
||||
|
@ -29,8 +30,7 @@ def setup_module(module):
|
|||
|
||||
cleanup()
|
||||
|
||||
publisher.WcsPublisher.APP_DIR = tempfile.mkdtemp()
|
||||
pub = publisher.WcsPublisher.create_publisher()
|
||||
pub = create_temporary_pub()
|
||||
pub.has_site_option = lambda x: True
|
||||
|
||||
conn = psycopg2.connect(user=os.environ['USER'])
|
||||
|
|
|
@ -2,7 +2,6 @@ import datetime
|
|||
import os
|
||||
import sys
|
||||
import shutil
|
||||
import tempfile
|
||||
import time
|
||||
import random
|
||||
|
||||
|
@ -13,13 +12,12 @@ from wcs import publisher
|
|||
from wcs.qommon.storage import StorableObject
|
||||
import wcs.qommon.storage as st
|
||||
|
||||
from utilities import create_temporary_pub
|
||||
|
||||
def setup_module(module):
|
||||
cleanup()
|
||||
|
||||
global pub
|
||||
|
||||
publisher.WcsPublisher.APP_DIR = tempfile.mkdtemp()
|
||||
pub = publisher.WcsPublisher.create_publisher()
|
||||
pub = create_temporary_pub()
|
||||
|
||||
|
||||
def teardown_module(module):
|
||||
|
|
|
@ -3,22 +3,19 @@ import os
|
|||
import random
|
||||
import shutil
|
||||
import sys
|
||||
import tempfile
|
||||
import time
|
||||
|
||||
from quixote import cleanup
|
||||
|
||||
from wcs import publisher
|
||||
|
||||
from utilities import create_temporary_pub
|
||||
|
||||
|
||||
def setup_module(module):
|
||||
cleanup()
|
||||
|
||||
global pub
|
||||
|
||||
publisher.WcsPublisher.APP_DIR = tempfile.mkdtemp()
|
||||
pub = publisher.WcsPublisher.create_publisher()
|
||||
pub = create_temporary_pub()
|
||||
|
||||
|
||||
def teardown_module(module):
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import datetime
|
||||
import sys
|
||||
import shutil
|
||||
import tempfile
|
||||
import copy
|
||||
|
||||
from quixote import cleanup
|
||||
|
@ -15,13 +14,12 @@ from wcs.qommon.http_request import HTTPRequest
|
|||
import __builtin__
|
||||
__builtin__.__dict__['ngettext'] = lambda x, y, z: x
|
||||
|
||||
from utilities import create_temporary_pub
|
||||
|
||||
def setup_module(module):
|
||||
cleanup()
|
||||
|
||||
global pub, req
|
||||
|
||||
publisher.WcsPublisher.APP_DIR = tempfile.mkdtemp()
|
||||
pub = publisher.WcsPublisher.create_publisher()
|
||||
pub = create_temporary_pub()
|
||||
|
||||
req = HTTPRequest(None, {})
|
||||
req.language = None
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import sys
|
||||
import shutil
|
||||
import StringIO
|
||||
import tempfile
|
||||
import xml.etree.ElementTree as ET
|
||||
|
||||
from quixote import cleanup
|
||||
|
@ -13,14 +12,13 @@ from wcs.fields import StringField
|
|||
|
||||
from qommon.misc import indent_xml as indent
|
||||
|
||||
from utilities import create_temporary_pub
|
||||
|
||||
|
||||
def setup_module(module):
|
||||
cleanup()
|
||||
|
||||
global pub, req
|
||||
|
||||
publisher.WcsPublisher.APP_DIR = tempfile.mkdtemp()
|
||||
pub = publisher.WcsPublisher.create_publisher()
|
||||
global pub
|
||||
pub = create_temporary_pub()
|
||||
|
||||
|
||||
def teardown_module(module):
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
import os
|
||||
import tempfile
|
||||
|
||||
from webtest import TestApp
|
||||
from quixote.wsgi import QWIP
|
||||
|
||||
from wcs import publisher
|
||||
from wcs.qommon.http_request import HTTPRequest
|
||||
|
||||
QWIP.request_class = HTTPRequest
|
||||
|
||||
def create_temporary_pub():
|
||||
APP_DIR = tempfile.mkdtemp()
|
||||
publisher.WcsPublisher.APP_DIR = APP_DIR
|
||||
pub = publisher.WcsPublisher.create_publisher()
|
||||
# allow saving the user
|
||||
pub.app_dir = os.path.join(APP_DIR, 'example.net')
|
||||
os.mkdir(pub.app_dir)
|
||||
return pub
|
||||
|
||||
def get_app(pub):
|
||||
return TestApp(QWIP(pub), extra_environ={'HTTP_HOST': 'example.net'})
|
||||
|
||||
def login(app, username='admin', password='admin'):
|
||||
login_page = app.get('/login/')
|
||||
login_form = login_page.forms['login-form']
|
||||
login_form['username'] = username
|
||||
login_form['password'] = password
|
||||
resp = login_form.submit()
|
||||
assert resp.status_int == 302
|
||||
return app
|
Loading…
Reference in New Issue