Exemple #1
0
    def test_multiple_sources(self, get_recipients):
        project = self.create_project(name='test', slug='test')
        build = self.create_build(project, target='D1234')
        job = self.create_job(build=build, result=Result.failed)
        phase = self.create_jobphase(job=job)
        step = self.create_jobstep(phase=phase)
        logsource = self.create_logsource(
            step=step,
            name='console',
        )
        self.create_logchunk(
            source=logsource,
            text='hello world',
        )
        phase2 = self.create_jobphase(job=job, label='other')
        step2 = self.create_jobstep(phase=phase2)
        logsource2 = self.create_logsource(
            step=step2,
            name='other',
        )
        self.create_logchunk(
            source=logsource2,
            text='hello world',
        )

        job_link = 'http://example.com/projects/test/builds/%s/jobs/%s/' % (
            build.id.hex,
            job.id.hex,
        )
        log_link1 = '%slogs/%s/' % (job_link, logsource.id.hex)
        log_link2 = '%slogs/%s/' % (job_link, logsource2.id.hex)

        get_recipients.return_value = [
            '*****@*****.**', 'Bob <*****@*****.**>'
        ]

        handler = MailNotificationHandler()
        handler.send(job, None)

        assert len(self.outbox) == 1
        msg = self.outbox[0]

        assert msg.subject == '%s FAILED - %s %s #%s.%s' % (
            job.build.target, job.project.name, job.build.label,
            job.build.number, job.number)
        assert msg.recipients == ['*****@*****.**', 'Bob <*****@*****.**>']
        assert msg.extra_headers[
            'Reply-To'] == '[email protected], Bob <*****@*****.**>'

        assert job_link in msg.html
        assert job_link in msg.body
        assert log_link1 in msg.html
        assert log_link1 in msg.body
        assert log_link2 in msg.html
        assert log_link2 in msg.body

        assert msg.as_string()
Exemple #2
0
    def test_subject_branch(self, get_recipients):
        project = self.create_project(name='test', slug='test')
        repo = project.repository
        branches = ['master', 'branch1']
        branch_str = ' (%s)' % ','.join(branches)
        revision = self.create_revision(repository=repo, branches=branches)
        source = self.create_source(
            project=project,
            revision=revision,
        )
        build = self.create_build(
            project=project,
            source=source,
            label='Test diff',
            target='D1234',
        )
        job = self.create_job(build=build, result=Result.failed)
        phase = self.create_jobphase(job=job)
        step = self.create_jobstep(phase=phase)
        logsource = self.create_logsource(
            step=step,
            name='console',
        )
        self.create_logchunk(
            source=logsource,
            text='hello world',
        )

        job_link = 'http://example.com/projects/test/builds/%s/jobs/%s/' % (
            build.id.hex,
            job.id.hex,
        )
        log_link = '%slogs/%s/' % (job_link, logsource.id.hex)

        get_recipients.return_value = [
            '*****@*****.**', 'Bob <*****@*****.**>'
        ]

        handler = MailNotificationHandler()
        handler.send(job, None)

        assert len(self.outbox) == 1
        msg = self.outbox[0]

        assert msg.subject == '%s FAILED - %s%s %s #%s.%s' % (
            job.build.target, job.project.name, branch_str, job.build.label,
            job.build.number, job.number)
        assert msg.recipients == ['*****@*****.**', 'Bob <*****@*****.**>']
        assert msg.extra_headers[
            'Reply-To'] == '[email protected], Bob <*****@*****.**>'

        assert job_link in msg.html
        assert job_link in msg.body
        assert log_link in msg.html
        assert log_link in msg.body

        assert msg.as_string()
Exemple #3
0
    def test_multiple_sources(self, get_collection_recipients):
        project = self.create_project(name='test', slug='test')
        build = self.create_build(
            project,
            date_started=datetime.utcnow(),
            result=Result.failed,
        )
        job = self.create_job(build=build, result=Result.failed)
        phase = self.create_jobphase(job=job)
        step = self.create_jobstep(phase=phase)
        logsource = self.create_logsource(
            step=step,
            name='console',
        )
        self.create_logchunk(
            source=logsource,
            text='hello world',
        )
        phase2 = self.create_jobphase(job=job, label='other')
        step2 = self.create_jobstep(phase=phase2)
        logsource2 = self.create_logsource(
            step=step2,
            name='other',
        )
        self.create_logchunk(
            source=logsource2,
            text='hello world',
        )

        job_link = 'http://example.com/projects/%s/builds/%s/jobs/%s/' % (
            project.slug, build.id.hex, job.id.hex,)
        log_link1 = '%slogs/%s/' % (job_link, logsource.id.hex)
        log_link2 = '%slogs/%s/' % (job_link, logsource2.id.hex)

        get_collection_recipients.return_value = ['*****@*****.**', 'Bob <*****@*****.**>']

        handler = MailNotificationHandler()
        context = handler.get_collection_context([build])
        msg = handler.get_msg(context)
        handler.send(msg, build)

        assert len(self.outbox) == 1
        msg = self.outbox[0]

        assert msg.subject == '%s failed - %s' % (
            'D1234', job.build.label)
        assert msg.recipients == ['*****@*****.**', 'Bob <*****@*****.**>']
        assert msg.extra_headers['Reply-To'] == '[email protected], Bob <*****@*****.**>'

        assert job_link in msg.html
        assert job_link in msg.body
        assert log_link1 in msg.html
        assert log_link1 in msg.body
        assert log_link2 in msg.html
        assert log_link2 in msg.body

        assert msg.as_string()
Exemple #4
0
    def test_multiple_sources(self, get_recipients):
        project = self.create_project(name='test', slug='test')
        build = self.create_build(project, target='D1234')
        job = self.create_job(build=build, result=Result.failed)
        phase = self.create_jobphase(job=job)
        step = self.create_jobstep(phase=phase)
        logsource = self.create_logsource(
            step=step,
            name='console',
        )
        self.create_logchunk(
            source=logsource,
            text='hello world',
        )
        phase2 = self.create_jobphase(job=job, label='other')
        step2 = self.create_jobstep(phase=phase2)
        logsource2 = self.create_logsource(
            step=step2,
            name='other',
        )
        self.create_logchunk(
            source=logsource2,
            text='hello world',
        )

        job_link = 'http://example.com/projects/test/builds/%s/jobs/%s/' % (build.id.hex, job.id.hex,)
        log_link1 = '%slogs/%s/' % (job_link, logsource.id.hex)
        log_link2 = '%slogs/%s/' % (job_link, logsource2.id.hex)

        get_recipients.return_value = ['*****@*****.**', 'Bob <*****@*****.**>']

        handler = MailNotificationHandler()
        handler.send(job, None)

        assert len(self.outbox) == 1
        msg = self.outbox[0]

        assert msg.subject == '%s Failed - %s #%s.%s' % (
            job.build.target, job.project.name, job.build.number, job.number)
        assert msg.recipients == ['*****@*****.**', 'Bob <*****@*****.**>']
        assert msg.extra_headers['Reply-To'] == '[email protected], Bob <*****@*****.**>'

        assert job_link in msg.html
        assert job_link in msg.body
        assert log_link1 in msg.html
        assert log_link1 in msg.body
        assert log_link2 in msg.html
        assert log_link2 in msg.body

        assert msg.as_string()
Exemple #5
0
    def test_subject_branch(self, get_recipients):
        project = self.create_project(name='test', slug='test')
        repo = project.repository
        branches = ['master', 'branch1']
        branch_str = ' (%s)' % ','.join(branches)
        revision = self.create_revision(repository=repo, branches=branches)
        source = self.create_source(
            project=project,
            revision=revision,
        )
        build = self.create_build(
            project=project,
            source=source,
            label='Test diff',
            target='D1234',
        )
        job = self.create_job(build=build, result=Result.failed)
        phase = self.create_jobphase(job=job)
        step = self.create_jobstep(phase=phase)
        logsource = self.create_logsource(
            step=step,
            name='console',
        )
        self.create_logchunk(
            source=logsource,
            text='hello world',
        )

        job_link = 'http://example.com/projects/test/builds/%s/jobs/%s/' % (build.id.hex, job.id.hex,)
        log_link = '%slogs/%s/' % (job_link, logsource.id.hex)

        get_recipients.return_value = ['*****@*****.**', 'Bob <*****@*****.**>']

        handler = MailNotificationHandler()
        handler.send(job, None)

        assert len(self.outbox) == 1
        msg = self.outbox[0]

        assert msg.subject == '%s FAILED - %s%s %s #%s.%s' % (
            job.build.target, job.project.name, branch_str, job.build.label, job.build.number, job.number)
        assert msg.recipients == ['*****@*****.**', 'Bob <*****@*****.**>']
        assert msg.extra_headers['Reply-To'] == '[email protected], Bob <*****@*****.**>'

        assert job_link in msg.html
        assert job_link in msg.body
        assert log_link in msg.html
        assert log_link in msg.body

        assert msg.as_string()
Exemple #6
0
    def test_simple(self, get_recipients):
        build = self.create_build(self.project)
        job = self.create_job(build=build, result=Result.failed)
        logsource = LogSource(project=self.project, job=job, name="console")
        db.session.add(logsource)

        logchunk = LogChunk(project=self.project, job=job, source=logsource, offset=0, size=11, text="hello world")
        db.session.add(logchunk)

        job_link = "http://example.com/projects/test/builds/%s/jobs/%s/" % (build.id.hex, job.id.hex)
        log_link = "%slogs/%s/" % (job_link, logsource.id.hex)
        db.session.commit()

        get_recipients.return_value = ["*****@*****.**", "Bob <*****@*****.**>"]

        handler = MailNotificationHandler()
        handler.send(job, None)

        assert len(self.outbox) == 1
        msg = self.outbox[0]

        assert msg.subject == "Build Failed - %s #%s.%s (%s)" % (
            job.project.name,
            job.build.number,
            job.number,
            job.build.source.revision_sha,
        )
        assert msg.recipients == ["*****@*****.**", "Bob <*****@*****.**>"]
        assert msg.extra_headers["Reply-To"] == "[email protected], Bob <*****@*****.**>"
        print msg.body

        assert job_link in msg.html
        assert job_link in msg.body
        assert log_link in msg.html
        assert log_link in msg.body

        assert msg.as_string()