aboutsummaryrefslogtreecommitdiffstats
path: root/tools/node_modules/nodemailer/node_modules/simplesmtp/test/pool.js
diff options
context:
space:
mode:
Diffstat (limited to 'tools/node_modules/nodemailer/node_modules/simplesmtp/test/pool.js')
-rw-r--r--tools/node_modules/nodemailer/node_modules/simplesmtp/test/pool.js275
1 files changed, 275 insertions, 0 deletions
diff --git a/tools/node_modules/nodemailer/node_modules/simplesmtp/test/pool.js b/tools/node_modules/nodemailer/node_modules/simplesmtp/test/pool.js
new file mode 100644
index 0000000..84a5c05
--- /dev/null
+++ b/tools/node_modules/nodemailer/node_modules/simplesmtp/test/pool.js
@@ -0,0 +1,275 @@
+var testCase = require('nodeunit').testCase,
+ runClientMockup = require("rai").runClientMockup,
+ simplesmtp = require("../index"),
+ MailComposer = require("mailcomposer").MailComposer,
+ fs = require("fs");
+
+var PORT_NUMBER = 8397;
+
+exports["General tests"] = {
+ setUp: function (callback) {
+ this.server = new simplesmtp.createServer({});
+ this.server.listen(PORT_NUMBER, function(err){
+ if(err){
+ throw err;
+ }else{
+ callback();
+ }
+ });
+
+ },
+
+ tearDown: function (callback) {
+ this.server.end(callback);
+ },
+
+ "Send single message": function(test){
+
+ var pool = simplesmtp.createClientPool(PORT_NUMBER),
+ mc = new MailComposer({escapeSMTP: true});
+
+ mc.setMessageOption({
+ from: "andmekala@hot.ee",
+ to: "andris@node.ee",
+ subject:"Hello!",
+ body: "Hello world!",
+ html: "<b>Hello world!</b>"
+ });
+
+ this.server.on("dataReady", function(envelope, callback){
+ test.ok(true);
+ callback();
+ });
+
+ pool.sendMail(mc, function(error){
+ test.ifError(error);
+ pool.close(function(){
+ test.ok(true);
+ test.done();
+ });
+ });
+ },
+
+ "Send several messages": function(test){
+ var total = 10;
+
+ test.expect(total*2);
+
+ var pool = simplesmtp.createClientPool(PORT_NUMBER),
+ mc;
+
+ this.server.on("dataReady", function(envelope, callback){
+ process.nextTick(callback);
+ });
+
+ var completed = 0;
+ for(var i=0; i<total; i++){
+ mc = new MailComposer({escapeSMTP: true});
+ mc.setMessageOption({
+ from: "andmekala@hot.ee",
+ to: "andris@node.ee",
+ subject:"Hello!",
+ body: "Hello world!",
+ html: "<b>Hello world!</b>"
+ });
+ pool.sendMail(mc, function(error){
+ test.ifError(error);
+ test.ok(true);
+ completed++;
+ if(completed >= total){
+ pool.close(function(){
+ test.done();
+ });
+ }
+ });
+ }
+ },
+
+ "Delivery error once": function(test){
+
+ var pool = simplesmtp.createClientPool(PORT_NUMBER),
+ mc = new MailComposer({escapeSMTP: true});
+
+ mc.setMessageOption({
+ from: "andmekala@hot.ee",
+ to: "andris@node.ee",
+ subject:"Hello!",
+ body: "Hello world!",
+ html: "<b>Hello world!</b>"
+ });
+
+ this.server.on("dataReady", function(envelope, callback){
+ test.ok(true);
+ callback(new Error("Spam!"));
+ });
+
+ pool.sendMail(mc, function(error){
+ test.equal(error && error.name, "DeliveryError");
+ pool.close(function(){
+ test.ok(true);
+ test.done();
+ });
+ });
+ },
+
+ "Delivery error several times": function(test){
+ var total = 10;
+
+ test.expect(total);
+
+ var pool = simplesmtp.createClientPool(PORT_NUMBER),
+ mc;
+
+ this.server.on("dataReady", function(envelope, callback){
+ process.nextTick(function(){callback(new Error("Spam!"));});
+ });
+
+ var completed = 0;
+ for(var i=0; i<total; i++){
+ mc = new MailComposer({escapeSMTP: true});
+ mc.setMessageOption({
+ from: "andmekala@hot.ee",
+ to: "andris@node.ee",
+ subject:"Hello!",
+ body: "Hello world!",
+ html: "<b>Hello world!</b>"
+ });
+
+ pool.sendMail(mc, function(error){
+ test.equal(error && error.name, "DeliveryError");
+ completed++;
+ if(completed >= total){
+ pool.close(function(){
+ test.done();
+ });
+ }
+ });
+ }
+ }
+};
+
+exports["Auth fail tests"] = {
+ setUp: function (callback) {
+ this.server = new simplesmtp.createServer({
+ requireAuthentication: true
+ });
+
+ this.server.listen(PORT_NUMBER, function(err){
+ if(err){
+ throw err;
+ }else{
+ callback();
+ }
+ });
+
+ this.server.on("authorizeUser", function(envelope, username, password, callback){
+ callback(null, username == password);
+ });
+ },
+
+ tearDown: function (callback) {
+ this.server.end(callback);
+ },
+
+ "Authentication passes once": function(test){
+ var pool = simplesmtp.createClientPool(PORT_NUMBER, false, {
+ auth: {
+ "user": "test",
+ "pass": "test"
+ }
+ }),
+ mc = new MailComposer({escapeSMTP: true});
+
+ mc.setMessageOption({
+ from: "andmekala2@hot.ee",
+ to: "andris2@node.ee",
+ subject:"Hello2!",
+ body: "Hello2 world!",
+ html: "<b>Hello2 world!</b>"
+ });
+
+ this.server.on("dataReady", function(envelope, callback){
+ test.ok(true);
+ callback();
+ });
+
+ pool.sendMail(mc, function(error){
+ test.ifError(error);
+ pool.close(function(){
+ test.ok(true);
+ test.done();
+ });
+ });
+
+ },
+
+ "Authentication error once": function(test){
+ var pool = simplesmtp.createClientPool(PORT_NUMBER, false, {
+ auth: {
+ "user": "test1",
+ "pass": "test2"
+ }
+ }),
+ mc = new MailComposer({escapeSMTP: true});
+
+ mc.setMessageOption({
+ from: "andmekala2@hot.ee",
+ to: "andris2@node.ee",
+ subject:"Hello2!",
+ body: "Hello2 world!",
+ html: "<b>Hello2 world!</b>"
+ });
+
+ this.server.on("dataReady", function(envelope, callback){
+ test.ok(true);
+ callback();
+ });
+
+ pool.sendMail(mc, function(error){
+ test.equal(error && error.name, "AuthError");
+ pool.close(function(){
+ test.ok(true);
+ test.done();
+ });
+ });
+
+ },
+
+ "Authentication error several times": function(test){
+ var total = 10;
+ test.expect(total);
+
+ var pool = simplesmtp.createClientPool(PORT_NUMBER, false, {
+ auth: {
+ "user": "test1",
+ "pass": "test2"
+ }
+ }),
+ mc;
+ this.server.on("dataReady", function(envelope, callback){
+ process.nextTick(function(){callback(new Error("Spam!"));});
+ });
+
+ var completed = 0;
+ for(var i=0; i<total; i++){
+ mc = new MailComposer({escapeSMTP: true});
+ mc.setMessageOption({
+ from: "andmekala@hot.ee",
+ to: "andris@node.ee",
+ subject:"Hello!",
+ body: "Hello world!",
+ html: "<b>Hello world!</b>"
+ });
+
+ pool.sendMail(mc, function(error){
+ test.equal(error && error.name, "AuthError");
+ completed++;
+ if(completed >= total){
+ pool.close(function(){
+ test.done();
+ });
+ }
+ });
+ }
+ }
+}; \ No newline at end of file