55 lines
1.8 KiB
TypeScript
55 lines
1.8 KiB
TypeScript
|
import * as sinon from "sinon";
|
||
|
import * as Assert from "assert";
|
||
|
import BluebirdPromise = require("bluebird");
|
||
|
|
||
|
import { MailSenderStub } from "../mocks/notifiers/MailSenderStub";
|
||
|
import EMailNotifier = require("../../src/lib/notifiers/EMailNotifier");
|
||
|
|
||
|
|
||
|
describe("test email notifier", function () {
|
||
|
it("should send an email to given user", function () {
|
||
|
const mailSender = new MailSenderStub();
|
||
|
const options = {
|
||
|
username: "user_gmail",
|
||
|
password: "pass_gmail",
|
||
|
sender: "admin@example.com",
|
||
|
service: "gmail"
|
||
|
};
|
||
|
|
||
|
mailSender.sendStub.returns(BluebirdPromise.resolve());
|
||
|
const sender = new EMailNotifier.EMailNotifier(options, mailSender);
|
||
|
const subject = "subject";
|
||
|
const url = "http://test.com";
|
||
|
|
||
|
return sender.notify("user@example.com", subject, url)
|
||
|
.then(function () {
|
||
|
Assert.equal(mailSender.sendStub.getCall(0).args[0].to, "user@example.com");
|
||
|
Assert.equal(mailSender.sendStub.getCall(0).args[0].subject, "subject");
|
||
|
return BluebirdPromise.resolve();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it("should fail while sending an email", function () {
|
||
|
const mailSender = new MailSenderStub();
|
||
|
const options = {
|
||
|
username: "user_gmail",
|
||
|
password: "pass_gmail",
|
||
|
sender: "admin@example.com",
|
||
|
service: "gmail"
|
||
|
};
|
||
|
|
||
|
mailSender.sendStub.returns(BluebirdPromise.reject(new Error("Failed to send mail")));
|
||
|
const sender = new EMailNotifier.EMailNotifier(options, mailSender);
|
||
|
const subject = "subject";
|
||
|
const url = "http://test.com";
|
||
|
|
||
|
return sender.notify("user@example.com", subject, url)
|
||
|
.then(function () {
|
||
|
return BluebirdPromise.reject(new Error());
|
||
|
}, function() {
|
||
|
Assert.equal(mailSender.sendStub.getCall(0).args[0].from, "admin@example.com");
|
||
|
return BluebirdPromise.resolve();
|
||
|
});
|
||
|
});
|
||
|
});
|