func TestSendNags(t *testing.T) { stats, _ := statsd.NewNoopClient(nil) mc := mocks.Mailer{} rs := newFakeRegStore() fc := newFakeClock(t) m := mailer{ stats: stats, mailer: &mc, emailTemplate: tmpl, subject: testEmailSubject, rs: rs, clk: fc, } cert := &x509.Certificate{ Subject: pkix.Name{ CommonName: "happy", }, NotAfter: fc.Now().AddDate(0, 0, 2), DNSNames: []string{"example.com"}, } err := m.sendNags([]*core.AcmeURL{emailA}, []*x509.Certificate{cert}) test.AssertNotError(t, err, "Failed to send warning messages") test.AssertEquals(t, len(mc.Messages), 1) test.AssertEquals(t, mocks.MailerMessage{ To: emailARaw, Subject: testEmailSubject, Body: fmt.Sprintf(`hi, cert for DNS names example.com is going to expire in 2 days (%s)`, cert.NotAfter.Format(time.RFC822Z)), }, mc.Messages[0]) mc.Clear() err = m.sendNags([]*core.AcmeURL{emailA, emailB}, []*x509.Certificate{cert}) test.AssertNotError(t, err, "Failed to send warning messages") test.AssertEquals(t, len(mc.Messages), 2) test.AssertEquals(t, mocks.MailerMessage{ To: emailARaw, Subject: testEmailSubject, Body: fmt.Sprintf(`hi, cert for DNS names example.com is going to expire in 2 days (%s)`, cert.NotAfter.Format(time.RFC822Z)), }, mc.Messages[0]) test.AssertEquals(t, mocks.MailerMessage{ To: emailBRaw, Subject: testEmailSubject, Body: fmt.Sprintf(`hi, cert for DNS names example.com is going to expire in 2 days (%s)`, cert.NotAfter.Format(time.RFC822Z)), }, mc.Messages[1]) mc.Clear() err = m.sendNags([]*core.AcmeURL{}, []*x509.Certificate{cert}) test.AssertNotError(t, err, "Not an error to pass no email contacts") test.AssertEquals(t, len(mc.Messages), 0) templates, err := template.ParseGlob("../../data/*.template") test.AssertNotError(t, err, "Failed to parse templates") for _, template := range templates.Templates() { m.emailTemplate = template err = m.sendNags(nil, []*x509.Certificate{cert}) test.AssertNotError(t, err, "failed to send nag") } }
func TestSendNags(t *testing.T) { stats, _ := statsd.NewNoopClient(nil) mc := mocks.Mailer{} rs := newFakeRegStore() fc := newFakeClock(t) m := mailer{ stats: stats, mailer: &mc, emailTemplate: tmpl, rs: rs, clk: fc, } cert := &x509.Certificate{ Subject: pkix.Name{ CommonName: "happy", }, NotAfter: fc.Now().AddDate(0, 0, 2), DNSNames: []string{"example.com"}, } email, _ := core.ParseAcmeURL("mailto:[email protected]") emailB, _ := core.ParseAcmeURL("mailto:[email protected]") err := m.sendNags(cert, []*core.AcmeURL{email}) test.AssertNotError(t, err, "Failed to send warning messages") test.AssertEquals(t, len(mc.Messages), 1) test.AssertEquals(t, fmt.Sprintf(`hi, cert for DNS names example.com is going to expire in 2 days (%s)`, cert.NotAfter), mc.Messages[0]) mc.Clear() err = m.sendNags(cert, []*core.AcmeURL{email, emailB}) test.AssertNotError(t, err, "Failed to send warning messages") test.AssertEquals(t, len(mc.Messages), 2) test.AssertEquals(t, fmt.Sprintf(`hi, cert for DNS names example.com is going to expire in 2 days (%s)`, cert.NotAfter), mc.Messages[0]) test.AssertEquals(t, fmt.Sprintf(`hi, cert for DNS names example.com is going to expire in 2 days (%s)`, cert.NotAfter), mc.Messages[1]) mc.Clear() err = m.sendNags(cert, []*core.AcmeURL{}) test.AssertNotError(t, err, "Not an error to pass no email contacts") test.AssertEquals(t, len(mc.Messages), 0) }