From 780dffecaaaae74f062f15d27b560f4fcb8f8ada Mon Sep 17 00:00:00 2001 From: Girish Ramakrishnan Date: Fri, 24 Jun 2016 00:03:26 -0500 Subject: [PATCH] test user can send email --- cloudron.js | 22 ++++++++++++++++++++++ mailer.js | 2 -- test/cloudron-backup-test.js | 22 +++++++++++++++++++++- 3 files changed, 43 insertions(+), 3 deletions(-) diff --git a/cloudron.js b/cloudron.js index 5cfe4f0..d3aac0f 100644 --- a/cloudron.js +++ b/cloudron.js @@ -8,8 +8,10 @@ var assert = require('assert'), dns = require('dns'), ImapProbe = require('./imap-probe.js'), querystring = require('querystring'), + nodemailer = require('nodemailer'), once = require('once'), request = require('superagent-sync'), + smtpTransport = require('nodemailer-smtp-transport'), sleep = require('sleep').sleep, tls = require('tls'), url = require('url'), @@ -625,3 +627,23 @@ Cloudron.prototype.checkForUpdates = function () { .query({ access_token: this._credentials.accessToken }) .end(); }; + +Cloudron.prototype.sendMail = function (owner, to, callback) { + var transport = nodemailer.createTransport(smtpTransport({ + host: this._adminFqdn, + port: 587, + auth: { + user: owner.username, + pass: owner.password + } + })); + + var mailOptions = { + from: owner.username + '@'+ this._box.domain, + to: to, + subject: 'Hello from e2e test', + text: 'The release depends on you' + }; + + transport.sendMail(mailOptions, callback); +}; diff --git a/mailer.js b/mailer.js index c0c6333..6a2fa99 100644 --- a/mailer.js +++ b/mailer.js @@ -1,5 +1,3 @@ -/* jslint node: true */ - 'use strict'; var assert = require('assert'), diff --git a/test/cloudron-backup-test.js b/test/cloudron-backup-test.js index 5374f94..ff5954f 100644 --- a/test/cloudron-backup-test.js +++ b/test/cloudron-backup-test.js @@ -10,6 +10,7 @@ var AppStore = require('../appstore.js'), Cloudron = require('../cloudron.js'), common = require('../common.js'), dnsSync = require('dns-sync'), + ImapProbe = require('../imap-probe.js'), mailer = require('../mailer.js'), sleep = require('sleep').sleep; @@ -27,6 +28,15 @@ describe('Cloudron backup testing', function () { var admin = common.getAdmin(); var cloudron, appId, box, backupInfo; + var imap = new ImapProbe({ + user: process.env.IMAP_USERNAME, + password: process.env.IMAP_PASSWORD, + host: process.env.IMAP_HOST, + port: 993, // imap port + tls: true, + readOnly: true + }); + it('can login to the store', function () { var accessToken = appStore.getAccessToken(owner); appStore.setCredentials(owner.password, accessToken); @@ -67,6 +77,17 @@ describe('Cloudron backup testing', function () { cloudron.checkMail(owner, done); }); + it('can send mail', function (done) { + cloudron.sendMail(owner, 'test+fromcloudron@cloudron.io', done); + }); + + it('sent mail successfully', function (done) { + imap.probe({ + subject: new RegExp('^Hello from e2e test$'), + body: /The release depends on you/ + }, done); + }); + var location = 'test' + (Math.random() * 10000).toFixed(); it('can install app', function () { var manifest = appStore.getManifest(common.TESTAPP_ID, common.TESTAPP_VERSION); @@ -130,4 +151,3 @@ describe('Cloudron backup testing', function () { appStore.deleteCloudron(box); }); }); -