Allow anonymous user in SMTP notifier

SMTP notifier should be able to send emails with anonymous user, i.e. without
providing username and password in configuration file.
This commit is contained in:
Clement Michaud 2017-10-15 22:41:18 +02:00
parent 329927b865
commit d3a2251d4a
3 changed files with 43 additions and 22 deletions

View File

@ -73,8 +73,8 @@ export interface GmailNotifierConfiguration {
}
export interface SmtpNotifierConfiguration {
username: string;
password: string;
username?: string;
password?: string;
host: string;
port: number;
secure: boolean;

View File

@ -28,11 +28,15 @@ export class MailSenderBuilder implements IMailSenderBuilder {
host: options.host,
port: options.port,
secure: options.secure, // upgrade later with STARTTLS
auth: {
};
if (options.username && options.password) {
smtpOptions.auth = {
user: options.username,
pass: options.password
}
};
};
}
return new MailSender(smtpOptions, this.nodemailer);
}
}

View File

@ -25,24 +25,41 @@ describe("test MailSenderBuilder", function() {
Assert.equal(createTransportStub.getCall(0).args[0].auth.pass, "pass_gmail");
});
it("should create a smtp mail sender", function() {
const mailSenderBuilder = new MailSenderBuilder(Nodemailer);
mailSenderBuilder.buildSmtp({
host: "mail.example.com",
password: "password",
port: 25,
secure: true,
username: "user",
sender: "admin@example.com"
describe("build smtp mail sender", function() {
it("should create a smtp mail sender with authenticated user", function() {
const mailSenderBuilder = new MailSenderBuilder(Nodemailer);
mailSenderBuilder.buildSmtp({
host: "mail.example.com",
password: "password",
port: 25,
secure: true,
username: "user",
sender: "admin@example.com"
});
Assert.deepStrictEqual(createTransportStub.getCall(0).args[0], {
host: "mail.example.com",
auth: {
pass: "password",
user: "user"
},
port: 25,
secure: true,
});
});
Assert.deepStrictEqual(createTransportStub.getCall(0).args[0], {
host: "mail.example.com",
auth: {
pass: "password",
user: "user"
},
port: 25,
secure: true,
it("should create a smtp mail sender with anonymous user", function() {
const mailSenderBuilder = new MailSenderBuilder(Nodemailer);
mailSenderBuilder.buildSmtp({
host: "mail.example.com",
port: 25,
secure: true,
sender: "admin@example.com"
});
Assert.deepStrictEqual(createTransportStub.getCall(0).args[0], {
host: "mail.example.com",
port: 25,
secure: true,
});
});
});
});