Exemple #1
1
def test_approve(
    create_user, create_reservation, create_blocking, smtp, notify_blocker, colliding_reservation, colliding_occurrence
):
    blocking = create_blocking(start_date=date.today(), end_date=date.today() + timedelta(days=1))
    br = blocking.blocked_rooms[0]
    other_user = create_user(123)
    resv = create_reservation(
        start_dt=datetime.combine(blocking.start_date, time(8)),
        end_dt=datetime.combine(blocking.start_date, time(10)),
        created_by_user=other_user if colliding_reservation else blocking.created_by_user,
        booked_for_user=other_user if colliding_reservation else blocking.created_by_user,
    )
    resv2 = create_reservation(
        start_dt=datetime.combine(blocking.start_date + timedelta(days=1), time(8)),
        end_dt=datetime.combine(blocking.end_date + timedelta(days=1), time(10)),
        repeat_frequency=RepeatFrequency.DAY,
        created_by_user=other_user if colliding_occurrence else blocking.created_by_user,
        booked_for_user=other_user if colliding_occurrence else blocking.created_by_user,
    )
    assert br.state == BlockedRoom.State.pending
    br.approve(notify_blocker=notify_blocker)
    assert br.state == BlockedRoom.State.accepted
    assert resv.is_rejected == colliding_reservation
    assert not resv2.is_rejected
    for occ in resv2.occurrences:
        assert occ.is_rejected == (colliding_occurrence and blocking.is_active_at(occ.date))
    if notify_blocker:
        extract_emails(smtp, one=True, to=blocking.created_by_user.email, subject="Room blocking ACCEPTED")
    assert len(smtp.outbox) == 2 * (colliding_occurrence + colliding_reservation)  # 2 emails per rejection
Exemple #2
0
def test_cancel(smtp, create_reservation, dummy_user, silent, reason):
    reservation = create_reservation(
        start_dt=date.today() + relativedelta(hour=8),
        end_dt=date.today() + relativedelta(days=1, hour=17),
        repeat_frequency=RepeatFrequency.DAY)
    assert reservation.occurrences.count() > 1
    occurrence = reservation.occurrences[0]
    occurrence.cancel(user=dummy_user, reason=reason, silent=silent)
    assert occurrence.is_cancelled
    assert occurrence.rejection_reason == reason
    assert not occurrence.reservation.is_cancelled
    if silent:
        assert not occurrence.reservation.edit_logs.count()
        assert not smtp.outbox
    else:
        assert occurrence.reservation.edit_logs.count() == 1
        assert occurrence.reservation.edit_logs[
            0].user_name == dummy_user.getFullName()
        extract_emails(
            smtp,
            count=2,
            regex=True,
            subject=r'Booking cancelled on .+ \(SINGLE OCCURRENCE\)')
        if reason:
            assert len(occurrence.reservation.edit_logs[0].info) == 2
        else:
            assert len(occurrence.reservation.edit_logs[0].info) == 1
    assert not smtp.outbox
def test_approve(create_user, create_reservation, create_blocking, smtp,
                 notify_blocker, colliding_reservation, colliding_occurrence):
    blocking = create_blocking(start_date=date.today(),
                               end_date=date.today() + timedelta(days=1))
    br = blocking.blocked_rooms[0]
    other_user = create_user(123)
    resv = create_reservation(start_dt=datetime.combine(blocking.start_date, time(8)),
                              end_dt=datetime.combine(blocking.start_date, time(10)),
                              created_by_user=other_user if colliding_reservation else blocking.created_by_user,
                              booked_for_user=other_user if colliding_reservation else blocking.created_by_user)
    resv2 = create_reservation(start_dt=datetime.combine(blocking.start_date + timedelta(days=1), time(8)),
                               end_dt=datetime.combine(blocking.end_date + timedelta(days=1), time(10)),
                               repeat_frequency=RepeatFrequency.DAY,
                               created_by_user=other_user if colliding_occurrence else blocking.created_by_user,
                               booked_for_user=other_user if colliding_occurrence else blocking.created_by_user)
    assert br.state == BlockedRoom.State.pending
    br.approve(notify_blocker=notify_blocker)
    assert br.state == BlockedRoom.State.accepted
    assert resv.is_rejected == colliding_reservation
    assert not resv2.is_rejected
    for occ in resv2.occurrences:
        assert occ.is_rejected == (colliding_occurrence and blocking.is_active_at(occ.date))
    if notify_blocker:
        extract_emails(smtp, one=True, to=blocking.created_by_user.email, subject='Room blocking ACCEPTED')
    assert len(smtp.outbox) == 2 * (colliding_occurrence + colliding_reservation)  # 2 emails per rejection
Exemple #4
0
def test_update_principal_email(create_event, smtp):
    event = create_event()
    principal = EmailPrincipal('*****@*****.**')
    event.update_principal(principal, roles={'submit'})
    email = extract_emails(smtp, required=True, one=True, to=principal.email)
    assert email['Subject'] == '[Indico] Please register'
    # adding more privs to the user should not send another email
    event.update_principal(principal, full_access=True)
    extract_emails(smtp, required=False, count=0)
Exemple #5
0
def test_update_principal_email(create_event, smtp):
    event = create_event()
    principal = EmailPrincipal('*****@*****.**')
    event.update_principal(principal, roles={'submit'})
    email = extract_emails(smtp, required=True, one=True, to=principal.email)
    assert email['Subject'] == '[Indico] Please register'
    # adding more privs to the user should not send another email
    event.update_principal(principal, full_access=True)
    extract_emails(smtp, required=False, count=0)
Exemple #6
0
def test_update_principal_resolve_email(create_event, create_user, smtp):
    event = create_event()
    user = create_user(123, email='*****@*****.**')
    # add email that belongs to a user
    entry = event.update_principal(EmailPrincipal('*****@*****.**'), full_access=True)
    assert entry.principal == user
    assert entry.type == PrincipalType.user
    extract_emails(smtp, required=False, count=0)
    # add email that has no user associated
    entry = event.update_principal(EmailPrincipal('*****@*****.**'), full_access=True)
    assert entry.principal == EmailPrincipal('*****@*****.**')
    assert entry.type == PrincipalType.email
    extract_emails(smtp, required=True, count=1)
Exemple #7
0
def test_update_principal_resolve_email(create_event, create_user, smtp):
    event = create_event()
    user = create_user(123, email='*****@*****.**')
    # add email that belongs to a user
    entry = event.update_principal(EmailPrincipal('*****@*****.**'),
                                   full_access=True)
    assert entry.principal == user
    assert entry.type == PrincipalType.user
    extract_emails(smtp, required=False, count=0)
    # add email that has no user associated
    entry = event.update_principal(EmailPrincipal('*****@*****.**'),
                                   full_access=True)
    assert entry.principal == EmailPrincipal('*****@*****.**')
    assert entry.type == PrincipalType.email
    extract_emails(smtp, required=True, count=1)
def test_reject(smtp, create_reservation, dummy_user, silent):
    reservation = create_reservation(start_dt=date.today() + relativedelta(hour=8),
                                     end_dt=date.today() + relativedelta(days=1, hour=17),
                                     repeat_frequency=RepeatFrequency.DAY)
    assert reservation.occurrences.count() > 1
    occurrence = reservation.occurrences[0]
    occurrence.reject(user=dummy_user, reason='cancelled', silent=silent)
    assert occurrence.is_rejected
    assert occurrence.rejection_reason == 'cancelled'
    assert not occurrence.reservation.is_rejected
    if silent:
        assert not occurrence.reservation.edit_logs.count()
        assert not smtp.outbox
    else:
        assert occurrence.reservation.edit_logs.count() == 1
        assert occurrence.reservation.edit_logs[0].user_name == dummy_user.full_name
        assert len(occurrence.reservation.edit_logs[0].info) == 2
        extract_emails(smtp, count=2, regex=True, subject=r'Booking rejected on .+ \(SINGLE OCCURRENCE\)')
    assert not smtp.outbox
def test_reject_single_occurrence(smtp, dummy_occurrence, dummy_user, silent):
    dummy_occurrence.reject(user=dummy_user, reason='rejected', silent=silent)
    assert dummy_occurrence.is_rejected
    assert dummy_occurrence.rejection_reason == 'rejected'
    assert dummy_occurrence.reservation.is_rejected
    assert dummy_occurrence.reservation.rejection_reason == 'rejected'
    if silent:
        assert not dummy_occurrence.reservation.edit_logs.count()
    else:
        assert dummy_occurrence.reservation.edit_logs.count()
        mails = extract_emails(smtp, count=2, regex=True, subject='Booking rejected on')
        assert not any('SINGLE OCCURRENCE' in mail['subject'] for mail in mails)
    assert not smtp.outbox
def test_reject_single_occurrence(smtp, dummy_occurrence, dummy_user, silent):
    dummy_occurrence.reject(user=dummy_user, reason='rejected', silent=silent)
    assert dummy_occurrence.is_rejected
    assert dummy_occurrence.rejection_reason == 'rejected'
    assert dummy_occurrence.reservation.is_rejected
    assert dummy_occurrence.reservation.rejection_reason == 'rejected'
    if silent:
        assert not dummy_occurrence.reservation.edit_logs.count()
    else:
        assert dummy_occurrence.reservation.edit_logs.count()
        mails = extract_emails(smtp, count=2, regex=True, subject='Booking rejected on')
        assert not any('SINGLE OCCURRENCE' in mail['subject'] for mail in mails)
    assert not smtp.outbox
def test_reject_single_occurrence(smtp, dummy_occurrence, dummy_avatar, silent):
    dummy_occurrence.reject(user=dummy_avatar, reason="rejected", silent=silent)
    assert dummy_occurrence.is_rejected
    assert dummy_occurrence.rejection_reason == "rejected"
    assert dummy_occurrence.reservation.is_rejected
    assert dummy_occurrence.reservation.rejection_reason == "rejected"
    if silent:
        assert not dummy_occurrence.reservation.edit_logs.count()
    else:
        assert dummy_occurrence.reservation.edit_logs.count()
        mails = extract_emails(smtp, count=2, regex=True, subject="Booking rejected on")
        assert not any("SINGLE OCCURRENCE" in mail["subject"] for mail in mails)
    assert not smtp.outbox
Exemple #12
0
def test_reject(dummy_user, dummy_blocking, smtp, with_user, with_reason):
    br = dummy_blocking.blocked_rooms[0]
    assert br.state == BlockedRoom.State.pending
    kwargs = {}
    if with_user:
        kwargs["user"] = dummy_user
    if with_reason:
        kwargs["reason"] = u"foo"
    br.reject(**kwargs)
    assert br.state == BlockedRoom.State.rejected
    mail = extract_emails(smtp, one=True, to=dummy_blocking.created_by_user.email, subject="Room blocking REJECTED")
    if with_reason:
        assert kwargs["reason"] in mail.as_string()
    assert not smtp.outbox
def test_reject(dummy_user, dummy_blocking, smtp, with_user, with_reason):
    br = dummy_blocking.blocked_rooms[0]
    assert br.state == BlockedRoom.State.pending
    kwargs = {}
    if with_user:
        kwargs['user'] = dummy_user
    if with_reason:
        kwargs['reason'] = u'foo'
    br.reject(**kwargs)
    assert br.state == BlockedRoom.State.rejected
    mail = extract_emails(smtp, one=True, to=dummy_blocking.created_by_user.email, subject='Room blocking REJECTED')
    if with_reason:
        assert kwargs['reason'] in mail.as_string()
    assert not smtp.outbox
Exemple #14
0
def test_reject(dummy_user, dummy_blocking, smtp, with_user, with_reason):
    br = dummy_blocking.blocked_rooms[0]
    assert br.state == BlockedRoom.State.pending
    kwargs = {}
    if with_user:
        kwargs['user'] = dummy_user
    if with_reason:
        kwargs['reason'] = u'foo'
    br.reject(**kwargs)
    assert br.state == BlockedRoom.State.rejected
    mail = extract_emails(smtp, one=True, to=dummy_blocking.created_by_user.getEmail(),
                          subject='Room blocking REJECTED')
    if with_reason:
        assert kwargs['reason'] in mail.as_string()
    assert not smtp.outbox
def test_cancel_single_occurrence(smtp, create_occurrence, dummy_user, silent, freeze_time):
    occ = create_occurrence(start_dt=datetime.combine(date.today(), time(11)),
                            end_dt=datetime.combine(date.today(), time(12)))
    freeze_time(datetime.combine(date.today(), time(11, 10)))
    occ.cancel(user=dummy_user, reason='cancelled', silent=silent)
    assert occ.is_cancelled
    assert occ.rejection_reason == 'cancelled'
    assert occ.reservation.is_cancelled
    assert occ.reservation.rejection_reason == 'cancelled'
    if silent:
        assert not occ.reservation.edit_logs.count()
    else:
        assert occ.reservation.edit_logs.count()
        mails = extract_emails(smtp, count=2, regex=True, subject=r'Booking cancelled on')
        assert not any('SINGLE OCCURRENCE' in mail['subject'] for mail in mails)
    assert not smtp.outbox
def test_cancel_single_occurrence(smtp, create_occurrence, dummy_user, silent,
                                  freeze_time):
    occ = create_occurrence(start_dt=datetime.combine(date.today(), time(11)),
                            end_dt=datetime.combine(date.today(), time(12)))
    freeze_time(datetime.combine(date.today(), time(11, 10)))
    occ.cancel(user=dummy_user, reason='cancelled', silent=silent)
    assert occ.is_cancelled
    assert occ.rejection_reason == 'cancelled'
    assert occ.reservation.is_cancelled
    assert occ.reservation.rejection_reason == 'cancelled'
    if silent:
        assert not occ.reservation.edit_logs.count()
    else:
        assert occ.reservation.edit_logs.count()
        mails = extract_emails(smtp,
                               count=2,
                               regex=True,
                               subject=r'Booking cancelled on')
        assert not any('SINGLE OCCURRENCE' in mail['subject']
                       for mail in mails)
    assert not smtp.outbox