From e022f17ac516bda21178c303153c1b71de2aaf9d Mon Sep 17 00:00:00 2001 From: Valentin Deniaud Date: Tue, 23 Feb 2021 16:56:16 +0100 Subject: [PATCH] manager: allow execute from simulation in csv import (#50159) --- .../manager/user_import_report.html | 8 +++++ tests/test_user_manager.py | 36 +++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/src/authentic2/manager/templates/authentic2/manager/user_import_report.html b/src/authentic2/manager/templates/authentic2/manager/user_import_report.html index 04caf180..9f2f0656 100644 --- a/src/authentic2/manager/templates/authentic2/manager/user_import_report.html +++ b/src/authentic2/manager/templates/authentic2/manager/user_import_report.html @@ -59,6 +59,14 @@ {% trans "value has errors" %} + {% if report.simulate %} +
+ {% csrf_token %} +
+ +
+
+ {% endif %} {% endblock %} diff --git a/tests/test_user_manager.py b/tests/test_user_manager.py index eef3bbc8..30c0ce97 100644 --- a/tests/test_user_manager.py +++ b/tests/test_user_manager.py @@ -712,6 +712,42 @@ 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): + csv_content = '''first_name key,last_name +Elliott,3''' + response = login(app, admin, '/manage/users/') + + response = response.click('Import users') + index = [i for i in response.forms if 'import_file' in response.forms[i].fields][0] + response.forms[index].set( + 'import_file', + Upload('users.csv', csv_content.encode('utf-8'), 'application/octet-stream')) + response.forms[index].set('encoding', 'utf-8-sig') + response.forms[index].set('ou', str(get_default_ou().pk)) + response = response.forms[index].submit().follow() + response = response.forms['action-form'].submit(name='simulate').follow() + + start = time.time() + response = response.click('Users Import') + while 'Running' in response.text: + response = response.click('Users Import') + assert time.time() - start < 2 + time.sleep(.1) + + urls = re.findall('', response.text) + response = app.get(urls[0]) + + assert not User.objects.filter(first_name='Elliott').exists() + + response = response.form.submit(name='execute').follow() + while 'Running' in response.text: + response = response.click('Users Import') + assert time.time() - start < 2 + time.sleep(.1) + + assert User.objects.filter(first_name='Elliott').exists() + + def test_manager_create_user_next_form_error(superuser_or_admin, app, ou1): next_url = u'/example.nowhere.null/' url = u'/manage/users/%s/add/?next=%s' % (ou1.pk, next_url) -- 2.20.1