diff --git a/tests/test_hobo_notify.py b/tests/test_hobo_notify.py index 4ac7c9f51..d18002c25 100644 --- a/tests/test_hobo_notify.py +++ b/tests/test_hobo_notify.py @@ -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 = {