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
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)
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]
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
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
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)
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