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