From 725bd7ec9f19448179245005cc52722cc0cf5599 Mon Sep 17 00:00:00 2001 From: Valentin Deniaud Date: Tue, 19 Apr 2022 16:40:34 +0200 Subject: [PATCH 1/4] tests: use serialized_rollback with transactional db when needed (#53902) --- tests/conftest.py | 7 +++++++ tests/settings.py | 4 ++++ tests/test_user_manager.py | 18 ++++++++++++------ 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 50ce6341e..7524a68ef 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -528,3 +528,10 @@ def cgu_attribute(db): required_on_login=True, user_visible=True, ) + + +@pytest.fixture +def trigger_post_migrate(): + from django.core.management.sql import emit_post_migrate_signal + + emit_post_migrate_signal(verbosity=0, interactive=False, db='default', created_models=[]) diff --git a/tests/settings.py b/tests/settings.py index 89e63fa3c..20eba1de2 100644 --- a/tests/settings.py +++ b/tests/settings.py @@ -64,3 +64,7 @@ A2_TOKEN_EXISTS_WARNING = False A2_REDIRECT_WHITELIST = ['http://sp.org/'] TESTING = True + +TEST_NON_SERIALIZED_APPS = [ + app for app in INSTALLED_APPS if 'authenticator' not in app # pylint: disable=undefined-variable +] diff --git a/tests/test_user_manager.py b/tests/test_user_manager.py index 307284ab8..f906c7d0e 100644 --- a/tests/test_user_manager.py +++ b/tests/test_user_manager.py @@ -446,8 +446,9 @@ def test_user_table(app, admin, user_ou1, ou1): assert response.pyquery('td.username') +@pytest.mark.django_db(serialized_rollback=True, transaction=True) @pytest.mark.parametrize('encoding', ['utf-8-sig', 'cp1252', 'iso-8859-15']) -def test_user_import(encoding, transactional_db, app, admin, ou1, admin_ou1): +def test_user_import(encoding, trigger_post_migrate, app, admin, ou1, admin_ou1): Attribute.objects.create(name='phone', kind='phone_number', label='Numéro de téléphone') deleted_user = User.objects.create( @@ -582,7 +583,8 @@ x,x,x,x'''.encode( app.get('/manage/users/import/%s/%s/' % (_import.uuid, execute.uuid), status=403) -def test_user_import_legacy_encoding(transactional_db, app, admin, ou1, admin_ou1): +@pytest.mark.django_db(serialized_rollback=True, transaction=True) +def test_user_import_legacy_encoding(trigger_post_migrate, app, admin, ou1, admin_ou1): response = login(app, admin, '/manage/users/') response = response.click('Import users') response.form.set( @@ -673,7 +675,8 @@ def import_csv(csv_content, app): return response -def test_user_import_attributes(transactional_db, app, admin): +@pytest.mark.django_db(serialized_rollback=True, transaction=True) +def test_user_import_attributes(trigger_post_migrate, app, admin): Attribute.objects.create(name='more', kind='string', label='Signe particulier') Attribute.objects.create(name='title', kind='title', label='Titre') Attribute.objects.create(name='bike', kind='boolean', label='Vélo') @@ -745,7 +748,8 @@ def test_user_table_user_deleted(app, admin, user_ou1, ou1): assert len(response.pyquery('table.main tbody tr')) == 1 -def test_user_import_row_error_display(transactional_db, app, admin): +@pytest.mark.django_db(serialized_rollback=True, transaction=True) +def test_user_import_row_error_display(trigger_post_migrate, app, admin): User.objects.create(first_name='Elliott', last_name='1', ou=get_default_ou()) User.objects.create(first_name='Elliott', last_name='2', ou=get_default_ou()) content = '''first_name key,last_name @@ -758,7 +762,8 @@ Elliott,3''' assert 'matches too many user' in response.pyquery('tr.row-errors').text() -def test_user_import_missing_roles_recap(transactional_db, app, admin): +@pytest.mark.django_db(serialized_rollback=True, transaction=True) +def test_user_import_missing_roles_recap(trigger_post_migrate, app, admin): content = '''first_name key,last_name,_role_name Elliott,Doe,test1 Jane,Doe,test1 @@ -800,7 +805,8 @@ def test_manager_create_user_next(superuser_or_admin, app, ou1): assert urlparse(response.location).path == next_url.replace('$UUID', str(user.uuid)) -def test_user_import_execute_from_simutation(transactional_db, app, admin): +@pytest.mark.django_db(serialized_rollback=True, transaction=True) +def test_user_import_execute_from_simutation(app, trigger_post_migrate, admin): csv_content = '''first_name key,last_name Elliott,3''' response = login(app, admin, '/manage/users/') -- 2.30.2