示例#1
0
def test_no_repo_access(mocker, db_session, default_user, default_repo,
                        default_source, outbox):
    auth.set_current_tenant(
        auth.Tenant(repository_ids=[default_source.repository_id]))

    build = factories.BuildFactory(source=default_source, failed=True)
    db_session.add(build)

    send_email_notification(build)

    assert len(outbox) == 0
示例#2
0
def send_build_notifications(build_id: UUID):
    build = Build.query.unrestricted_unsafe().get(build_id)
    if not build:
        raise ValueError("Unable to find build with id = {}".format(build_id))

    auth.set_current_tenant(auth.RepositoryTenant(repository_id=build.repository_id))

    # double check that the build is still finished and only send when
    # its failing
    if build.result != Result.failed or build.status != Status.finished:
        return

    email.send_email_notification(build=build)
示例#3
0
def test_success(mocker, db_session, default_user, default_repo,
                 default_repo_access, default_source, outbox):
    auth.set_current_tenant(
        auth.Tenant(repository_ids=[default_source.repository_id]))

    build = factories.BuildFactory(source=default_source, failed=True)
    db_session.add(build)

    send_email_notification(build)

    assert len(outbox) == 1
    msg = outbox[0]
    assert msg.subject == 'Build Failed - getsentry/zeus #1'
    assert msg.recipients == [default_user.email]
示例#4
0
def test_no_repo_access(
    mocker,
    db_session,
    default_tenant,
    default_user,
    default_repo,
    default_source,
    outbox,
):
    build = factories.BuildFactory(source=default_source, failed=True)
    db_session.add(build)

    send_email_notification(build)

    assert len(outbox) == 0
示例#5
0
def test_disabled(mocker, db_session, default_user, default_repo,
                  default_repo_access, default_source, outbox):
    auth.set_current_tenant(
        auth.Tenant(repository_ids=[default_source.repository_id]))

    build = factories.BuildFactory(source=default_source, failed=True)
    db_session.add(build)
    db_session.add(
        ItemOption(item_id=default_user.id,
                   name='mail.notify_author',
                   value='0'))
    db_session.flush()

    send_email_notification(build)

    assert len(outbox) == 0
示例#6
0
def test_success(
    mocker,
    db_session,
    default_user,
    default_repo,
    default_repo_access,
    default_source,
    default_tenant,
    outbox,
):
    build = factories.BuildFactory(source=default_source, failed=True)
    db_session.add(build)

    send_email_notification(build)

    assert len(outbox) == 1
    msg = outbox[0]
    assert msg.subject == "Build Failed - getsentry/zeus #1"
    assert msg.recipients == [default_user.email]
def send_build_notifications(build_id: UUID, time_limit=30):
    build = Build.query.unrestricted_unsafe().get(build_id)
    if not build:
        raise ValueError("Unable to find build with id = {}".format(build_id))

    if not build.date_started:
        current_app.logger.warn(
            "send_build_notifications: build %s missing date_started",
            build_id)
        return

    if not build.date_finished:
        current_app.logger.warn(
            "send_build_notifications: build %s missing date_finished",
            build_id)
        return

    auth.set_current_tenant(
        auth.RepositoryTenant(repository_id=build.repository_id))

    # double check that the build is still finished and only send when
    # its failing
    if build.result != Result.failed or build.status != Status.finished:
        current_app.logger.warn(
            "send_build_notifications: build %s not marked as failed",
            build_id)
        return

    if build.date_finished < timezone.now() - timedelta(days=1):
        current_app.logger.warn(
            "send_build_notifications: build %s fimished a long time ago",
            build_id)
        return

    if build.date_started < timezone.now() - timedelta(days=7):
        current_app.logger.warn(
            "send_build_notifications: build %s started a long time ago",
            build_id)
        return

    email.send_email_notification(build=build)
示例#8
0
def test_disabled(
    mocker,
    db_session,
    default_user,
    default_repo,
    default_repo_access,
    default_source,
    default_tenant,
    outbox,
):
    build = factories.BuildFactory(source=default_source, failed=True)
    db_session.add(build)
    db_session.add(
        ItemOption(item_id=default_user.id,
                   name="mail.notify_author",
                   value="0"))
    db_session.flush()

    send_email_notification(build)

    assert len(outbox) == 0