/node_modules/nodemailer/node_modules/nodemailer-direct-transport/test/direct-transport-test.js
https://gitlab.com/viddeshshinde/email · JavaScript · 160 lines · 133 code · 27 blank · 0 comment · 5 complexity · 3afe03a352ddd5178a05410895c4c713 MD5 · raw file
- 'use strict';
- process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
- var chai = require('chai');
- var expect = chai.expect;
- var directTransport = require('../src/direct-transport');
- var SMTPServer = require('smtp-server').SMTPServer;
- chai.config.includeStack = true;
- var PORT_NUMBER = 8712;
- function MockBuilder(envelope, message) {
- this.envelope = envelope;
- this.message = message;
- this._headers = [];
- }
- MockBuilder.prototype.getEnvelope = function() {
- return this.envelope;
- };
- MockBuilder.prototype.createReadStream = function() {
- return this.message;
- };
- MockBuilder.prototype.getHeader = function() {
- return 'teretere';
- };
- describe('SMTP Transport Tests', function() {
- this.timeout(100 * 1000);
- var server;
- var retryCount = 0;
- beforeEach(function(done) {
- server = new SMTPServer({
- disabledCommands: ['STARTTLS', 'AUTH'],
- onData: function(stream, session, callback) {
- stream.on('data', function() {});
- stream.on('end', function() {
- var err;
- if (/retry@/.test(session.envelope.mailFrom.address) && retryCount++ < 3) {
- err = new Error('Please try again later');
- err.responseCode = 451;
- callback(err);
- } else {
- callback(null, 'OK');
- }
- });
- },
- onMailFrom: function(address, session, callback) {
- if (/invalid@/.test(address.address)) {
- return callback(new Error('Invalid sender'));
- }
- return callback(); // Accept the address
- },
- onRcptTo: function(address, session, callback) {
- if (/invalid@/.test(address.address)) {
- return callback(new Error('Invalid recipient'));
- }
- return callback(); // Accept the address
- },
- logger: false
- });
- server.listen(PORT_NUMBER, done);
- });
- afterEach(function(done) {
- server.close(done);
- });
- it('Should expose version number', function() {
- var client = directTransport();
- expect(client.name).to.exist;
- expect(client.version).to.exist;
- });
- it('Should send mail', function(done) {
- var client = directTransport({
- port: PORT_NUMBER,
- debug: false
- });
- client.on('log', console.log);
- var chunks = [],
- message = new Array(1024).join('teretere, vana kere\n');
- server.on('data', function(connection, chunk) {
- chunks.push(chunk);
- });
- server.on('dataReady', function(connection, callback) {
- var body = Buffer.concat(chunks);
- expect(body.toString()).to.equal(message.trim().replace(/\n/g, '\r\n'));
- callback(null, true);
- });
- client.send({
- data: {},
- message: new MockBuilder({
- from: 'test@[127.0.0.1]',
- to: 'test@[127.0.0.1]'
- }, message)
- }, function(err, info) {
- expect(err).to.not.exist;
- expect(info.accepted).to.deep.equal(['test@[127.0.0.1]']);
- done();
- });
- });
- it('Should retry mail', function(done) {
- var client = directTransport({
- port: PORT_NUMBER,
- debug: false,
- retryDelay: 1000
- });
- client.on('log', console.log);
- client.send({
- data: {},
- message: new MockBuilder({
- from: 'retry@[127.0.0.1]',
- to: ['test@[127.0.0.1]', 'test2@[127.0.0.1]']
- }, 'test')
- }, function(err, info) {
- expect(err).to.not.exist;
- expect(info.pending.length).to.equal(1);
- done();
- });
- });
- it('Should reject mail', function(done) {
- var client = directTransport({
- port: PORT_NUMBER,
- debug: false,
- retryDelay: 1000
- });
- client.on('log', console.log);
- client.send({
- data: {},
- message: new MockBuilder({
- from: 'invalid@[127.0.0.1]',
- to: ['test@[127.0.0.1]', 'test2@[127.0.0.1]']
- }, 'test')
- }, function(err) {
- expect(err).to.exist;
- expect(err.errors[0].recipients).to.deep.equal(['test@[127.0.0.1]', 'test2@[127.0.0.1]']);
- done();
- });
- });
- });