mirror of
				https://github.com/node-red/node-red-nodes.git
				synced 2025-03-01 10:37:43 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			253 lines
		
	
	
		
			8.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			253 lines
		
	
	
		
			8.5 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");
 | |
|                 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();
 | |
|             });
 | |
|         });
 | |
|     });
 | |
| });
 |