Esempio n. 1
0
def test_import_registrations(dummy_regform, dummy_user):
    csv = b'\n'.join([b'John,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]',
                      b'Jane,Smith,ACME Inc.,CEO,,[email protected]',
                      b'Billy Bob,Doe,,,,[email protected]'])
    registrations = import_registrations_from_csv(dummy_regform, BytesIO(csv))
    assert len(registrations) == 3

    assert registrations[0].full_name == 'John Doe'
    assert registrations[0].user is None
    data = registrations[0].get_personal_data()
    assert data['affiliation'] == 'ACME Inc.'
    assert data['email'] == '*****@*****.**'
    assert data['position'] == 'Regional Manager'
    assert data['phone'] == '+1-202-555-0140'

    assert registrations[1].full_name == 'Jane Smith'
    assert registrations[1].user is None
    data = registrations[1].get_personal_data()
    assert data['affiliation'] == 'ACME Inc.'
    assert data['email'] == '*****@*****.**'
    assert data['position'] == 'CEO'
    assert 'phone' not in data

    assert registrations[2].full_name == 'Billy Bob Doe'
    assert registrations[2].user == dummy_user
    data = registrations[2].get_personal_data()
    assert 'affiliation' not in data
    assert data['email'] == '*****@*****.**'
    assert 'position' not in data
    assert 'phone' not in data
Esempio n. 2
0
def test_import_registrations(dummy_regform, dummy_user):
    csv = b'\n'.join([
        b'John,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]',
        b'Jane,Smith,ACME Inc.,CEO,,[email protected]',
        b'Billy Bob,Doe,,,,[email protected]'
    ])
    registrations = import_registrations_from_csv(dummy_regform, BytesIO(csv))
    assert len(registrations) == 3

    assert registrations[0].full_name == 'John Doe'
    assert registrations[0].user is None
    data = registrations[0].get_personal_data()
    assert data['affiliation'] == 'ACME Inc.'
    assert data['email'] == '*****@*****.**'
    assert data['position'] == 'Regional Manager'
    assert data['phone'] == '+1-202-555-0140'

    assert registrations[1].full_name == 'Jane Smith'
    assert registrations[1].user is None
    data = registrations[1].get_personal_data()
    assert data['affiliation'] == 'ACME Inc.'
    assert data['email'] == '*****@*****.**'
    assert data['position'] == 'CEO'
    assert 'phone' not in data

    assert registrations[2].full_name == 'Billy Bob Doe'
    assert registrations[2].user == dummy_user
    data = registrations[2].get_personal_data()
    assert 'affiliation' not in data
    assert data['email'] == '*****@*****.**'
    assert 'position' not in data
    assert 'phone' not in data
Esempio n. 3
0
    def _process(self):
        form = ImportRegistrationsForm(regform=self.regform)

        if form.validate_on_submit():
            if self.regform.is_purged:
                raise Forbidden(
                    _('Registration is disabled due to an expired retention period'
                      ))
            skip_moderation = self.regform.moderation_enabled and form.skip_moderation.data
            registrations = import_registrations_from_csv(
                self.regform,
                form.source_file.data,
                skip_moderation=skip_moderation,
                notify_users=form.notify_users.data)
            flash(
                ngettext('{} registration has been imported.',
                         '{} registrations have been imported.',
                         len(registrations)).format(len(registrations)),
                'success')
            return jsonify_data(flash=False,
                                redirect=url_for('.manage_reglist',
                                                 self.regform),
                                redirect_no_loading=True)
        return jsonify_template(
            'events/registration/management/import_registrations.html',
            form=form,
            regform=self.regform)
Esempio n. 4
0
def test_import_error(dummy_regform):
    # missing column
    csv = b'\n'.join([
        b'John,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]',
        b'Buggy,Entry,ACME Inc.,CEO,'
    ])

    with pytest.raises(UserValueError) as e:
        import_registrations_from_csv(dummy_regform, BytesIO(csv))
    assert 'malformed' in e.value.message
    assert 'Row 2' in e.value.message

    # missing e-mail
    csv = b'\n'.join([
        b'Bill,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]',
        b'Buggy,Entry,ACME Inc.,CEO,,'
    ])

    with pytest.raises(UserValueError) as e:
        import_registrations_from_csv(dummy_regform, BytesIO(csv))
    assert 'missing e-mail' in e.value.message
    assert 'Row 2' in e.value.message

    # missing first name
    csv = b'\n'.join([
        b'Ray,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]',
        b',Buggy,ACME Inc.,CEO,,[email protected]'
    ])

    with pytest.raises(UserValueError) as e:
        import_registrations_from_csv(dummy_regform, BytesIO(csv))
    assert 'missing first' in e.value.message
    assert 'Row 2' in e.value.message
Esempio n. 5
0
    def _process(self):
        form = ImportRegistrationsForm(regform=self.regform)

        if form.validate_on_submit():
            skip_moderation = self.regform.moderation_enabled and form.skip_moderation.data
            registrations = import_registrations_from_csv(self.regform, form.source_file.data,
                                                          skip_moderation=skip_moderation,
                                                          notify_users=form.notify_users.data)
            flash(ngettext("{} registration has been imported.",
                           "{} registrations have been imported.",
                           len(registrations)).format(len(registrations)), 'success')
            return jsonify_data(flash=False, redirect=url_for('.manage_reglist', self.regform),
                                redirect_no_loading=True)
        return jsonify_template('events/registration/management/import_registrations.html', form=form,
                                regform=self.regform)
Esempio n. 6
0
def test_import_registrations_error(dummy_regform, dummy_user):
    dummy_user.secondary_emails.add('*****@*****.**')

    create_registration(dummy_regform, {
        'email': dummy_user.email,
        'first_name': dummy_user.first_name,
        'last_name': dummy_user.last_name
    },
                        notify_user=False)

    create_registration(dummy_regform, {
        'email': '*****@*****.**',
        'first_name': 'Big',
        'last_name': 'Boss'
    },
                        notify_user=False)

    # duplicate e-mail
    csv = b'\n'.join([
        b'Big,Boss,ACME Inc.,Supreme Leader,+1-202-555-1337,[email protected]'
    ])

    with pytest.raises(UserValueError) as e:
        import_registrations_from_csv(dummy_regform, BytesIO(csv))
    assert 'a registration with this email already exists' in str(e.value)
    assert 'Row 1' in str(e.value)

    # duplicate user
    csv = b'\n'.join([
        b'Big,Boss,ACME Inc.,Supreme Leader,+1-202-555-1337,[email protected]'
    ])

    with pytest.raises(UserValueError) as e:
        import_registrations_from_csv(dummy_regform, BytesIO(csv))
    assert 'a registration for this user already exists' in str(e.value)
    assert 'Row 1' in str(e.value)
Esempio n. 7
0
    def _process(self):
        form = ImportRegistrationsForm(regform=self.regform)

        if form.validate_on_submit():
            registrations = import_registrations_from_csv(
                self.regform,
                form.source_file.data,
                skip_moderation=form.skip_moderation.data,
                notify_users=form.notify_users.data)
            flash(
                ngettext("{} registration has been imported.",
                         "{} registrations have been imported.",
                         len(registrations)).format(len(registrations)),
                'success')
            return jsonify_data(flash=False,
                                redirect=url_for('.manage_reglist',
                                                 self.regform),
                                redirect_no_loading=True)
        return jsonify_template(
            'events/registration/management/import_registrations.html',
            form=form,
            regform=self.regform)
Esempio n. 8
0
def test_import_error(dummy_regform):
    create_registration(dummy_regform, {
        'email': '*****@*****.**',
        'first_name': 'Big',
        'last_name': 'Boss'
    },
                        notify_user=False)

    # missing column
    csv = b'\n'.join([
        b'John,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]',
        b'Buggy,Entry,ACME Inc.,CEO,'
    ])

    with pytest.raises(UserValueError) as e:
        import_registrations_from_csv(dummy_regform, BytesIO(csv))
    assert 'malformed' in e.value.message
    assert 'Row 2' in e.value.message

    # missing e-mail
    csv = b'\n'.join([
        b'Bill,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]',
        b'Buggy,Entry,ACME Inc.,CEO,,'
    ])

    with pytest.raises(UserValueError) as e:
        import_registrations_from_csv(dummy_regform, BytesIO(csv))
    assert 'missing e-mail' in e.value.message
    assert 'Row 2' in e.value.message

    # bad e-mail
    csv = b'\n'.join([
        b'Bill,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]',
        b'Buggy,Entry,ACME Inc.,CEO,,not-an-email'
    ])

    with pytest.raises(UserValueError) as e:
        import_registrations_from_csv(dummy_regform, BytesIO(csv))
    assert 'invalid e-mail' in e.value.message
    assert 'Row 2' in e.value.message

    # duplicate e-mail (csv)
    csv = b'\n'.join([
        b'Bill,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]',
        b'Bob,Doe,ACME Inc.,Boss,,[email protected]'
    ])

    with pytest.raises(UserValueError) as e:
        import_registrations_from_csv(dummy_regform, BytesIO(csv))
    assert 'email address is not unique' in e.value.message
    assert 'Row 2' in e.value.message

    # duplicate e-mail (registration)
    csv = b'\n'.join([
        b'Big,Boss,ACME Inc.,Supreme Leader,+1-202-555-1337,[email protected]'
    ])

    with pytest.raises(UserValueError) as e:
        import_registrations_from_csv(dummy_regform, BytesIO(csv))
    assert 'a registration with this email already exists' in e.value.message
    assert 'Row 1' in e.value.message

    # missing first name
    csv = b'\n'.join([
        b'Ray,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]',
        b',Buggy,ACME Inc.,CEO,,[email protected]'
    ])

    with pytest.raises(UserValueError) as e:
        import_registrations_from_csv(dummy_regform, BytesIO(csv))
    assert 'missing first' in e.value.message
    assert 'Row 2' in e.value.message
Esempio n. 9
0
def test_import_error(dummy_regform):
    create_registration(dummy_regform, {
        'email': '*****@*****.**',
        'first_name': 'Big',
        'last_name': 'Boss'
    }, notify_user=False)

    # missing column
    csv = b'\n'.join([b'John,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]',
                      b'Buggy,Entry,ACME Inc.,CEO,'])

    with pytest.raises(UserValueError) as e:
        import_registrations_from_csv(dummy_regform, BytesIO(csv))
    assert 'malformed' in e.value.message
    assert 'Row 2' in e.value.message

    # missing e-mail
    csv = b'\n'.join([b'Bill,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]',
                      b'Buggy,Entry,ACME Inc.,CEO,,'])

    with pytest.raises(UserValueError) as e:
        import_registrations_from_csv(dummy_regform, BytesIO(csv))
    assert 'missing e-mail' in e.value.message
    assert 'Row 2' in e.value.message

    # bad e-mail
    csv = b'\n'.join([b'Bill,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]',
                      b'Buggy,Entry,ACME Inc.,CEO,,not-an-email'])

    with pytest.raises(UserValueError) as e:
        import_registrations_from_csv(dummy_regform, BytesIO(csv))
    assert 'invalid e-mail' in e.value.message
    assert 'Row 2' in e.value.message

    # duplicate e-mail (csv)
    csv = b'\n'.join([b'Bill,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]',
                      b'Bob,Doe,ACME Inc.,Boss,,[email protected]'])

    with pytest.raises(UserValueError) as e:
        import_registrations_from_csv(dummy_regform, BytesIO(csv))
    assert 'email address is not unique' in e.value.message
    assert 'Row 2' in e.value.message

    # duplicate e-mail (registration)
    csv = b'\n'.join([b'Big,Boss,ACME Inc.,Supreme Leader,+1-202-555-1337,[email protected]'])

    with pytest.raises(UserValueError) as e:
        import_registrations_from_csv(dummy_regform, BytesIO(csv))
    assert 'a registration with this email already exists' in e.value.message
    assert 'Row 1' in e.value.message

    # missing first name
    csv = b'\n'.join([b'Ray,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]',
                      b',Buggy,ACME Inc.,CEO,,[email protected]'])

    with pytest.raises(UserValueError) as e:
        import_registrations_from_csv(dummy_regform, BytesIO(csv))
    assert 'missing first' in e.value.message
    assert 'Row 2' in e.value.message
Esempio n. 10
0
def test_import_error(dummy_regform, dummy_user, create_user):
    dummy_user.secondary_emails.add('*****@*****.**')

    create_registration(dummy_regform, {
        'email': '*****@*****.**',
        'first_name': 'Big',
        'last_name': 'Boss'
    },
                        notify_user=False)

    create_registration(dummy_regform, {
        'email': '*****@*****.**',
        'first_name': 'Guinea',
        'last_name': 'Pig'
    },
                        notify_user=False)

    user = create_user(123, email='*****@*****.**')
    user.secondary_emails.add('*****@*****.**')

    # missing column
    csv = b'\n'.join([
        b'John,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]',
        b'Buggy,Entry,ACME Inc.,CEO,'
    ])

    with pytest.raises(UserValueError) as e:
        import_registrations_from_csv(dummy_regform, BytesIO(csv))
    assert 'malformed' in str(e.value)
    assert 'Row 2' in str(e.value)

    # missing e-mail
    csv = b'\n'.join([
        b'Bill,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]',
        b'Buggy,Entry,ACME Inc.,CEO,,'
    ])

    with pytest.raises(UserValueError) as e:
        import_registrations_from_csv(dummy_regform, BytesIO(csv))
    assert 'missing e-mail' in str(e.value)
    assert 'Row 2' in str(e.value)

    # bad e-mail
    csv = b'\n'.join([
        b'Bill,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]',
        b'Buggy,Entry,ACME Inc.,CEO,,not-an-email'
    ])

    with pytest.raises(UserValueError) as e:
        import_registrations_from_csv(dummy_regform, BytesIO(csv))
    assert 'invalid e-mail' in str(e.value)
    assert 'Row 2' in str(e.value)

    # duplicate e-mail (csv)
    csv = b'\n'.join([
        b'Bill,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]',
        b'Bob,Doe,ACME Inc.,Boss,,[email protected]'
    ])

    with pytest.raises(UserValueError) as e:
        import_registrations_from_csv(dummy_regform, BytesIO(csv))
    assert 'email address is not unique' in str(e.value)
    assert 'Row 2' in str(e.value)

    # duplicate e-mail (registration)
    csv = b'\n'.join([
        b'Big,Boss,ACME Inc.,Supreme Leader,+1-202-555-1337,[email protected]'
    ])

    with pytest.raises(UserValueError) as e:
        import_registrations_from_csv(dummy_regform, BytesIO(csv))
    assert 'a registration with this email already exists' in str(e.value)
    assert 'Row 1' in str(e.value)

    # duplicate user (csv)
    csv = b'\n'.join([
        b'Big,Boss,ACME Inc.,Supreme Leader,+1-202-555-1337,[email protected]',
        b'Little,Boss,ACME Inc.,Wannabe Leader,+1-202-555-1338,[email protected]'
    ])

    with pytest.raises(UserValueError) as e:
        import_registrations_from_csv(dummy_regform, BytesIO(csv))
    assert 'Row 2: email address belongs to the same user as in row 1' in str(
        e.value)

    # duplicate user (registration)
    csv = b'\n'.join([
        b'Big,Boss,ACME Inc.,Supreme Leader,+1-202-555-1337,[email protected]'
    ])

    with pytest.raises(UserValueError) as e:
        import_registrations_from_csv(dummy_regform, BytesIO(csv))
    assert 'a registration for this user already exists' in str(e.value)
    assert 'Row 1' in str(e.value)

    # missing first name
    csv = b'\n'.join([
        b'Ray,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]',
        b',Buggy,ACME Inc.,CEO,,[email protected]'
    ])

    with pytest.raises(UserValueError) as e:
        import_registrations_from_csv(dummy_regform, BytesIO(csv))
    assert 'missing first' in str(e.value)
    assert 'Row 2' in str(e.value)