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 import shutil
from quixote import cleanup from quixote import cleanup
from wcs.qommon.http_request import HTTPRequest
from wcs.ctl.hobo_notify import CmdHoboNotify from wcs.ctl.hobo_notify import CmdHoboNotify
from wcs.roles import Role 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 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): @pytest.fixture
cleanup() def pub(request):
global pub pub = create_temporary_pub(sql_mode=(request.param == 'sql'))
pub = create_temporary_pub()
req = HTTPRequest(None, {'SCRIPT_NAME': '/', 'SERVER_NAME': 'example.net'})
pub.set_app_dir(req)
pub.cfg['sp'] = {'saml2_providerid': 'test'} pub.cfg['sp'] = {'saml2_providerid': 'test'}
pub.write_cfg() pub.write_cfg()
Role.wipe()
def teardown_module(module):
shutil.rmtree(pub.APP_DIR)
def setup_function(function):
r = Role(name='Service étt civil') r = Role(name='Service étt civil')
r.slug = 'service-ett-civil' r.slug = 'service-ett-civil'
r.store() r.store()
return pub
def teardown_function(function):
Role.wipe()
def test_process_notification_role_wrong_audience(): def test_process_notification_role_wrong_audience(pub):
User = pub.user_class
notification = { notification = {
'@type': u'provision', '@type': u'provision',
'audience': [u'coin'], 'audience': [u'coin'],
@ -78,7 +77,9 @@ def test_process_notification_role_wrong_audience():
assert Role.select()[0].emails_to_members is False 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 = { notification = {
'@type': u'provision', '@type': u'provision',
'audience': [u'test'], '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 == ['petite-enfance@example.com']
assert Role.select()[0].emails_to_members is True 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 # check descriptions are not used to fill role.details
notification = { notification = {
'@type': u'provision', '@type': u'provision',
@ -232,7 +235,9 @@ def test_process_notification_role_description():
assert Role.select()[0].emails_to_members is True 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 = { notification = {
'@type': u'deprovision', '@type': u'deprovision',
'audience': [u'test'], '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 # create some roles
from wcs.ctl.check_hobos import CmdCheckHobos 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.form_data['_email'] == 'john.doe@example.net'
assert user.email == 'john.doe@example.net' assert user.email == 'john.doe@example.net'
assert user.form_data['_first_name'] == 'John' 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.form_data['_zipcode'] == '13400'
assert user.name_identifiers == ['a'*32] assert user.name_identifiers == ['a'*32]
assert user.is_admin is False assert user.is_admin is False
@ -538,7 +545,9 @@ def test_process_notification_user_provision():
def notify_of_exception(exc_info, context): def notify_of_exception(exc_info, context):
raise Exception(exc_info) 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 # setup an hobo profile
from wcs.ctl.check_hobos import CmdCheckHobos from wcs.ctl.check_hobos import CmdCheckHobos
User.wipe() 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][0] == KeyError
assert e.value.args[0][1].args == ('user without uuid',) 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() User.wipe()
Role.wipe() Role.wipe()
notification = { notification = {