tests: execute hobo_notify against both pickle and sql

This commit is contained in:
Frédéric Péters 2017-06-26 18:37:51 +02:00
parent c130c7dbde
commit f3e23bd8b7
1 changed files with 34 additions and 24 deletions

View File

@ -2,40 +2,39 @@
import shutil
from quixote import cleanup
from wcs.qommon.http_request import HTTPRequest
from wcs.ctl.hobo_notify import CmdHoboNotify
from wcs.roles import Role
from wcs.users import User
from utilities import create_temporary_pub
from utilities import create_temporary_pub, clean_temporary_pub
import pytest
pub = None
def pytest_generate_tests(metafunc):
if 'pub' in metafunc.fixturenames:
metafunc.parametrize('pub', ['pickle', 'sql'], indirect=True)
def setup_module(module):
cleanup()
global pub
pub = create_temporary_pub()
@pytest.fixture
def pub(request):
pub = create_temporary_pub(sql_mode=(request.param == 'sql'))
req = HTTPRequest(None, {'SCRIPT_NAME': '/', 'SERVER_NAME': 'example.net'})
pub.set_app_dir(req)
pub.cfg['sp'] = {'saml2_providerid': 'test'}
pub.write_cfg()
def teardown_module(module):
shutil.rmtree(pub.APP_DIR)
def setup_function(function):
Role.wipe()
r = Role(name='Service étt civil')
r.slug = 'service-ett-civil'
r.store()
def teardown_function(function):
Role.wipe()
return pub
def test_process_notification_role_wrong_audience():
def test_process_notification_role_wrong_audience(pub):
User = pub.user_class
notification = {
'@type': u'provision',
'audience': [u'coin'],
@ -78,7 +77,9 @@ def test_process_notification_role_wrong_audience():
assert Role.select()[0].emails_to_members is False
def test_process_notification_role():
def test_process_notification_role(pub):
User = pub.user_class
notification = {
'@type': u'provision',
'audience': [u'test'],
@ -154,7 +155,9 @@ def test_process_notification_role():
assert Role.select()[0].emails == ['petite-enfance@example.com']
assert Role.select()[0].emails_to_members is True
def test_process_notification_role_description():
def test_process_notification_role_description(pub):
User = pub.user_class
# check descriptions are not used to fill role.details
notification = {
'@type': u'provision',
@ -232,7 +235,9 @@ def test_process_notification_role_description():
assert Role.select()[0].emails_to_members is True
def test_process_notification_role_deprovision():
def test_process_notification_role_deprovision(pub):
User = pub.user_class
notification = {
'@type': u'deprovision',
'audience': [u'test'],
@ -398,7 +403,9 @@ PROFILE = {
]
}
def test_process_notification_user_provision():
def test_process_notification_user_provision(pub):
User = pub.user_class
# create some roles
from wcs.ctl.check_hobos import CmdCheckHobos
@ -490,7 +497,7 @@ def test_process_notification_user_provision():
assert user.form_data['_email'] == 'john.doe@example.net'
assert user.email == 'john.doe@example.net'
assert user.form_data['_first_name'] == 'John'
assert user.form_data['_last_name'] == 'Doe'
assert user.form_data['_last_name'] == u'Doe'.encode('utf-8')
assert user.form_data['_zipcode'] == '13400'
assert user.name_identifiers == ['a'*32]
assert user.is_admin is False
@ -538,7 +545,9 @@ def test_process_notification_user_provision():
def notify_of_exception(exc_info, context):
raise Exception(exc_info)
def test_process_notification_user_with_errors():
def test_process_notification_user_with_errors(pub):
User = pub.user_class
# setup an hobo profile
from wcs.ctl.check_hobos import CmdCheckHobos
User.wipe()
@ -597,7 +606,8 @@ def test_process_notification_user_with_errors():
assert e.value.args[0][0] == KeyError
assert e.value.args[0][1].args == ('user without uuid',)
def test_process_notification_role_with_errors():
def test_process_notification_role_with_errors(pub):
User = pub.user_class
User.wipe()
Role.wipe()
notification = {