process.env.NODE_ENV = 'test'; var async = require('async'); var mongoose = require('mongoose'); var User = require('../app/models/User.js'); var Invite = require('../app/models/Invite.js'); var Upload = require('../app/models/Upload.js'); var chai = require('chai'); var should = chai.should(); var app = require('../server'); var server = app.server; var util = require('./testUtil.js'); before(function (done) { async.series([ function (cb) { util.resetDatabase(cb); }, function(cb) { util.createInvites([{ code: 'TestCode1', scope: ['test.perm'] }, { code: 'TestCode2' }, { code: 'TestCode3', exp: new Date() } ], cb); } ], function (err) { if (err) console.log(err); done(); }); }); describe('Users', function () { describe('/POST register', function () { it('SHOULD register valid user, valid invite', function (done) { util.verifySuccessfulRegister({ username: 'TestUser1', password: 'TestPassword', invite: 'TestCode1' }, done); }); it('SHOULD register another valid user, valid invite', function(done) { util.verifySuccessfulRegister({ username: 'TestUser2', password: 'TestPassword', invite: 'TestCode2' }, done); }); it('SHOULD NOT register invalid user, valid invite', function (done) { util.verifyFailedUserRegister({ username: 'TestUser1', password: 'TestPassword', invite: 'TestCode2' }, done); }); it('SHOULD NOT register valid user, nonexistant invite', function (done) { util.verifyFailedInviteRegister({ username: 'TestUser3', password: 'TestPassword', invite: 'bogus' }, done); }); it('SHOULD NOT register valid user, used invite', function (done) { util.verifyFailedInviteRegister({ username: 'TestUser3', password: 'TestPassword', invite: 'TestCode1' }, done); }); it('SHOULD NOT register valid user, expired invite', function (done) { util.verifyFailedInviteRegister({ username: 'TestUser3', password: 'TestPassword', invite: 'TestCode3' }, done); }) }); describe('/POST login', function () { it('SHOULD accept valid user, valid password', function (done) { util.verifySuccessfulLogin({ username: 'TestUser1', password: 'TestPassword' }, done); }); it('SHOULD NOT accept valid user, invalid password', function (done) { util.verifyFailedPasswordLogin({ username: 'TestUser1', password: 'bogus' }, done); }); it('SHOULD NOT accept invalid user, any password', function (done) { util.verifyFailedUsernameLogin({ username: 'BogusTestUser', password: 'bogus' }, done); }); }); }); describe('Uploads', function () { describe('/POST upload', function () { it('SHOULD accept logged in valid upload', function(done) { util.verifySuccessfulUpload({ username: 'TestUser2', password: 'TestPassword' }, done); }); it('SHOULD NOT accept unauthenticated valid upload', function(done) { util.verifyFailedAuthUpload(done); }); it('SHOULD NOT accept invalid permission, valid upload', function(done) { util.verifyFailedPermissionUpload({ username: 'TestUser1', password: 'TestPassword' }, done); }); it('SHOULD NOT accept invalid size upload', function(done) { util.verifyFailedSizeUpload({ username: 'TestUser2', password: 'TestPassword' }, done); }) }); }); after(function () { server.close(function () { process.exit(); }); });