tellform/app/tests/user.server.routes.test.js
2015-09-15 15:21:49 -07:00

228 lines
6 KiB
JavaScript

'use strict';
var should = require('should'),
_ = require('lodash'),
app = require('../../server'),
request = require('supertest'),
Session = require('supertest-session')({
app: app
}),
mongoose = require('mongoose'),
url = require('url'),
config = require('../../config/config'),
User = mongoose.model('User'),
tmpUser = mongoose.model(config.tempUserCollection),
agent = request.agent(app);
var mailosaur = require('mailosaur')(config.mailosaur.key),
mailbox = new mailosaur.Mailbox(config.mailosaur.mailbox_id);
var mandrill = require('node-mandrill')(config.mailer.options.auth.pass);
/**
* Globals
*/
var credentials, _User, _Session;
// Create user credentials
credentials = {
username: 'be1e58fb@mailosaur.in',
password: 'password'
};
// Create a new user
_User = {
firstName: 'Full',
lastName: 'Name',
email: credentials.username,
username: credentials.username,
password: credentials.password,
};
/**
* Form routes tests
*/
describe('User CRUD tests', function() {
this.timeout(100000);
var userSession;
beforeEach(function() {
//Initialize Session
userSession = new Session();
// Create user credentials
credentials = {
username: 'be1e58fb@mailosaur.in',
password: 'password'
};
// Create a new user
_User = {
firstName: 'Full',
lastName: 'Name',
email: credentials.username,
username: credentials.username,
password: credentials.password,
};
});
describe('Create, Verify and Activate a User', function() {
_User.email = _User.username = 'testActiveAccount5.be1e58fb@mailosaur.in';
var link, _tmpUser, activateToken = '';
before(function(done){
tmpUser.findOne({username: _User.username}, function (err, user) {
console.log(user);
if(user){
tmpUser.remove({username: _User.username}, function(err){
if(err) done(err)
done();
});
}else {done();}
});
});
it('should be able to query /signup', function(done) {
userSession.post('/auth/signup')
.send(_User)
.expect(200, 'An email has been sent to you. Please check it to verify your account.')
.end(function(FormSaveErr, FormSaveRes) {
should.not.exist(FormSaveErr);
done();
});
});
it('should have created a temporary user', function(done){
tmpUser.findOne({username: _User.username}).exec(function (err, user) {
should.not.exist(err);
should.exist(user);
_tmpUser = user;
_User.username.should.equal(user.username);
_User.firstName.should.equal(user.firstName);
_User.lastName.should.equal(user.lastName);
done();
// mandrill('/messages/search', {
// query: "subject:Confirm",
// senders: [
// "test@forms.polydaic.com"
// ],
// limit: 1
// }, function(error, emails) {
// if (error) console.log( JSON.stringify(error) );
// var confirmation_email = emails[0];
// mandrill('/messages/content', {
// id: confirmation_email._id
// }, function(error, email) {
// if (error) console.log( JSON.stringify(error) );
// // console.log(email);
// var link = _(email.text.split('\n')).reverse().value()[1];
// console.log(link);
// activateToken = _(url.parse(link).hash.split('/')).reverse().value()[0];
// console.log('actual activateToken: '+ activateToken);
// console.log('expected activateToken: ' + user.GENERATED_VERIFYING_URL);
// done();
// });
// });
});
});
it('should have sent a verification email', function(done){
mailbox.getEmails(function(err, _emails) {
if(err) done(err);
var emails = _emails;
console.log('mailbox.getEmails:');
console.log(emails[0].text.links);
var link = emails[0].text.links[0].href;
activateToken = _(url.parse(link).hash.split('/')).reverse().value()[0];
console.log('actual activateToken: '+ activateToken);
console.log('expected activateToken: ' + _tmpUser.GENERATED_VERIFYING_URL);
(activateToken).should.equal(_tmpUser.GENERATED_VERIFYING_URL);
done();
});
});
it('should be able to verify a User Account', function(done) {
userSession.get('/auth/verify/'+activateToken)
.expect(200)
.end(function(VerifyErr, VerifyRes) {
should.not.exist(VerifyErr);
(VerifyRes.text).should.equal('User successfully verified');
done();
});
});
it('should receive confirmation email after verifying a User Account', function(done) {
mailbox.getEmails(function(err, _emails) {
if(err) throw err;
var email = _emails[0];
console.log(email);
(email.subject).should.equal('Account successfully verified!');
done();
});
});
});
// it('should be able to login and logout a User', function (done) {
// var username = 'testActiveAccount.be1e58fb@mailosaur.in';
// _User.email = _User.username = credentials.username = username;
// userSession.post('/auth/signup')
// .send(_User)
// .expect(200)
// .end(function(FormSaveErr, FormSaveRes) {
// (FormSaveRes.text).should.equal('An email has been sent to you. Please check it to verify your account.');
// userSession.post('/auth/signin')
// .send(credentials)
// .expect('Content-Type', /json/)
// .expect(200)
// .end(function(signinErr, signinRes) {
// // Handle signin error
// if (signinErr) throw signinErr;
// userSession.get('/auth/signout')
// .expect(200)
// .end(function(signoutErr, signoutRes) {
// // Handle signout error
// if (signoutErr) throw signoutErr;
// (signoutRes.text).should.equal('Successfully logged out');
// done();
// });
// });
// });
// });
// it('should be able to reset a User\'s password');
// it('should be able to delete a User account without any problems');
afterEach(function(done) {
User.remove().exec(function () {
tmpUser.remove().exec(function(){
// mailbox.deleteAllEmail(function (err, body) {
// if(err) throw err;
userSession.destroy();
done();
// });
});
});
});
});