mirror of
https://github.com/node-red/node-red-nodes.git
synced 2025-03-01 10:37:43 +00:00
Make sure basic authentication is selected by default, and that an additional input is created and timed triggers are turned off for XOauth2
272 lines
9.1 KiB
JavaScript
272 lines
9.1 KiB
JavaScript
var should = require("should");
|
|
var sinon = require("sinon");
|
|
var helper = require("node-red-node-test-helper");
|
|
var emailNode = require('../../../social/email/61-email.js');
|
|
|
|
describe('email Node', function () {
|
|
|
|
beforeEach(function (done) {
|
|
helper.startServer(done);
|
|
});
|
|
|
|
afterEach(function (done) {
|
|
helper.unload();
|
|
helper.stopServer(done);
|
|
});
|
|
|
|
describe('email in', function () {
|
|
|
|
it('should load with defaults', function (done) {
|
|
var flow = [{
|
|
id: "n1",
|
|
type: "e-mail in",
|
|
name: "emailin",
|
|
wires: [
|
|
[]
|
|
]
|
|
}];
|
|
helper.load(emailNode, flow, function () {
|
|
var n1 = helper.getNode("n1");
|
|
n1.should.have.property('name', "emailin");
|
|
n1.should.have.property("repeat", 300000);
|
|
n1.should.have.property("inserver", "imap.gmail.com");
|
|
n1.should.have.property("inport", "993");
|
|
n1.should.have.property("authtype", "BASIC");
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should force input on XOAuth2', function (done) {
|
|
var flow = [{
|
|
id: "n1",
|
|
type: "e-mail in",
|
|
name: "emailin",
|
|
authtype: "XOAUTH2",
|
|
wires: [
|
|
[]
|
|
]
|
|
}];
|
|
helper.load(emailNode, flow, function () {
|
|
var n1 = helper.getNode("n1");
|
|
n1.should.have.property("repeat", 0);
|
|
n1.should.have.property("inputs", 1);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('email out', function () {
|
|
|
|
it('should load with defaults', function (done) {
|
|
var flow = [{
|
|
id: "n1",
|
|
type: "e-mail",
|
|
name: "emailout",
|
|
port: 1025,
|
|
wires: [
|
|
[]
|
|
]
|
|
}];
|
|
helper.load(emailNode, flow, function () {
|
|
var n1 = helper.getNode("n1");
|
|
n1.should.have.property('name', "emailout");
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should fail with no payload', function (done) {
|
|
var flow = [{
|
|
id: "n1",
|
|
type: "e-mail",
|
|
name: "emailout",
|
|
wires: [
|
|
[]
|
|
]
|
|
}];
|
|
helper.load(emailNode, flow, function () {
|
|
var n1 = helper.getNode("n1");
|
|
n1.credentials = {
|
|
userid: "test",
|
|
password: "test",
|
|
};
|
|
n1.emit("input", {});
|
|
//done();
|
|
});
|
|
setTimeout(function () {
|
|
try {
|
|
var logEvents = helper.log().args.filter(function (evt) {
|
|
//console.log(evt[0].msg);
|
|
return evt[0].type == "e-mail";
|
|
});
|
|
//console.log(helper.log().args);
|
|
//console.log(helper.log());
|
|
//logEvents.should.have.length(3);
|
|
logEvents[0][0].should.have.a.property('msg');
|
|
logEvents[0][0].msg.toString().should.startWith("email.errors.nopayload");
|
|
done();
|
|
} catch (e) {
|
|
done(e);
|
|
}
|
|
//finally { smtpTransport.sendMail.restore(); }
|
|
}, 1500);
|
|
});
|
|
|
|
it('should fail to send an email (invalid creds)', function (done) {
|
|
//var smtpTransport = require("nodemailer").createTransport();
|
|
//var spy = sinon.stub(smtpTransport, 'sendMail', function(arg1,arg2,arg3,arg4) {
|
|
//console.log("HELLO");
|
|
//console.log(arg1,arg2,arg3,arg4);
|
|
//done();
|
|
//});
|
|
var flow = [{
|
|
id: "n1",
|
|
type: "e-mail",
|
|
name: "test@gmail.com",
|
|
server: "smtp.gmail.com",
|
|
secure: true,
|
|
port: "465",
|
|
wires: [
|
|
[]
|
|
]
|
|
}];
|
|
helper.load(emailNode, flow, function () {
|
|
var n1 = helper.getNode("n1");
|
|
n1.credentials = {
|
|
userid: "test",
|
|
password: "test",
|
|
};
|
|
n1.should.have.property('name', "test@gmail.com");
|
|
n1.emit("input", {
|
|
payload: "Hello World",
|
|
to: "test@gmail.com"
|
|
});
|
|
//done();
|
|
});
|
|
setTimeout(function () {
|
|
try {
|
|
var logEvents = helper.log().args.filter(function (evt) {
|
|
//console.log(evt[0].msg);
|
|
return evt[0].type == "e-mail";
|
|
});
|
|
// console.log(helper.log().args);
|
|
// console.log(helper.log());
|
|
// console.log(logEvents[0][0].msg.toString());
|
|
//logEvents.should.have.length(3);
|
|
logEvents[0][0].should.have.a.property('msg');
|
|
logEvents[0][0].msg.toString().should.startWith("Error:");
|
|
done();
|
|
} catch (e) {
|
|
done(e);
|
|
}
|
|
//finally { smtpTransport.sendMail.restore(); }
|
|
}, 1900);
|
|
})
|
|
|
|
it('should fail to send an email (no creds provided)', function (done) {
|
|
//var smtpTransport = require("nodemailer").createTransport();
|
|
//var spy = sinon.stub(smtpTransport, 'sendMail', function(arg1,arg2,arg3,arg4) {
|
|
//console.log("HELLO");
|
|
//console.log(arg1,arg2,arg3,arg4);
|
|
//done();
|
|
//});
|
|
var flow = [{
|
|
id: "n1",
|
|
type: "e-mail",
|
|
name: "test@gmail.com",
|
|
server: "smtp.gmail.com",
|
|
secure: true,
|
|
port: "465",
|
|
wires: [
|
|
[]
|
|
]
|
|
}];
|
|
helper.load(emailNode, flow, function () {
|
|
var n1 = helper.getNode("n1");
|
|
n1.should.have.property('name', "test@gmail.com");
|
|
n1.emit("input", {
|
|
payload: "Hello World",
|
|
to: "test@gmail.com"
|
|
});
|
|
//done();
|
|
});
|
|
setTimeout(function () {
|
|
try {
|
|
var logEvents = helper.log().args.filter(function (evt) {
|
|
//console.log(evt[0].msg);
|
|
return evt[0].type == "e-mail";
|
|
});
|
|
//console.log(helper.log().args);
|
|
//logEvents.should.have.length(3);
|
|
logEvents[0][0].should.have.a.property('msg');
|
|
logEvents[0][0].msg.toString().should.startWith("Error:");
|
|
done();
|
|
} catch (e) {
|
|
done(e);
|
|
}
|
|
//finally { smtpTransport.sendMail.restore(); }
|
|
}, 1900);
|
|
})
|
|
|
|
});
|
|
|
|
describe('email mta', function () {
|
|
|
|
it('should catch an email send to localhost 1025', function (done) {
|
|
var flow = [{
|
|
id: "n1",
|
|
type: "e-mail mta",
|
|
name: "emailmta",
|
|
port: 1025,
|
|
wires: [
|
|
["n2"]
|
|
]
|
|
},
|
|
{
|
|
id:"n2",
|
|
type:"helper"
|
|
},
|
|
{
|
|
id: "n3",
|
|
type: "e-mail",
|
|
dname: "testout",
|
|
server: "localhost",
|
|
secure: false,
|
|
port: 1025,
|
|
wires: [
|
|
[]
|
|
]
|
|
}];
|
|
helper.load(emailNode, flow, function () {
|
|
var n1 = helper.getNode("n1");
|
|
var n2 = helper.getNode("n2");
|
|
var n3 = helper.getNode("n3");
|
|
n1.should.have.property('port', 1025);
|
|
|
|
n2.on("input", function(msg) {
|
|
//console.log("GOT",msg);
|
|
try {
|
|
msg.should.have.a.property("payload",'Hello World\n');
|
|
msg.should.have.a.property("topic","Test");
|
|
msg.should.have.a.property("from",'foo@example.com');
|
|
msg.should.have.a.property("to",'bar@example.com');
|
|
msg.should.have.a.property("attachments");
|
|
msg.should.have.a.property("header");
|
|
done();
|
|
}
|
|
catch(e) {
|
|
done(e)
|
|
}
|
|
});
|
|
|
|
n3.emit("input", {
|
|
payload: "Hello World",
|
|
topic: "Test",
|
|
from: "foo@example.com",
|
|
to: "bar@example.com"
|
|
});
|
|
//done();
|
|
});
|
|
});
|
|
});
|
|
});
|