702a016547
Fixes #1124 - Updated default mocha timeout to 15 seconds. Any future tests that depend on a timeout (and thus might be better off with a lower value) can override the default setting which is now 15 seconds. - Removed test-specific timeout overrides for the mocha tests. - Fixed the editor/splitbutton tests to wait for the appropriate selector instead of assuming the dom has been updated immediately. Should resolve intermittent timeouts when checking the splitbutton's applied classes.
177 lines
4.7 KiB
JavaScript
177 lines
4.7 KiB
JavaScript
/*globals describe, before, beforeEach, afterEach, it*/
|
|
var testUtils = require('./testUtils'),
|
|
should = require('should'),
|
|
when = require('when'),
|
|
_ = require('underscore'),
|
|
errors = require('../../server/errorHandling'),
|
|
|
|
// Stuff we are testing
|
|
Models = require('../../server/models');
|
|
|
|
|
|
describe('User Model', function run() {
|
|
var UserModel = Models.User;
|
|
|
|
before(function (done) {
|
|
testUtils.clearData().then(function () {
|
|
done();
|
|
}, done);
|
|
});
|
|
|
|
afterEach(function (done) {
|
|
testUtils.clearData().then(function () {
|
|
done();
|
|
}, done);
|
|
});
|
|
|
|
describe('Registration', function runRegistration() {
|
|
beforeEach(function (done) {
|
|
testUtils.initData().then(function () {
|
|
done();
|
|
}, done);
|
|
});
|
|
|
|
it('can add first', function (done) {
|
|
var userData = testUtils.DataGenerator.forModel.users[0];
|
|
|
|
UserModel.add(userData).then(function (createdUser) {
|
|
should.exist(createdUser);
|
|
createdUser.has('uuid').should.equal(true);
|
|
createdUser.attributes.password.should.not.equal(userData.password, "password was hashed");
|
|
createdUser.attributes.email.should.eql(userData.email, "email address correct");
|
|
|
|
done();
|
|
}).then(null, done);
|
|
});
|
|
});
|
|
|
|
describe('Basic Operations', function () {
|
|
|
|
beforeEach(function (done) {
|
|
testUtils.initData()
|
|
.then(function () {
|
|
return when(testUtils.insertDefaultUser());
|
|
})
|
|
.then(function () {
|
|
done();
|
|
}, done);
|
|
});
|
|
|
|
it('can\'t add second', function (done) {
|
|
var userData = testUtils.DataGenerator.forModel.users[1];
|
|
|
|
return UserModel.add(userData).then(done, function (failure) {
|
|
failure.message.should.eql('A user is already registered. Only one user for now!');
|
|
done();
|
|
}).then(null, done);
|
|
});
|
|
|
|
it('can browse', function (done) {
|
|
|
|
UserModel.browse().then(function (results) {
|
|
should.exist(results);
|
|
|
|
results.length.should.be.above(0);
|
|
|
|
done();
|
|
|
|
}).then(null, done);
|
|
});
|
|
|
|
it('can read', function (done) {
|
|
var firstUser;
|
|
|
|
UserModel.browse().then(function (results) {
|
|
|
|
should.exist(results);
|
|
|
|
results.length.should.be.above(0);
|
|
|
|
firstUser = results.models[0];
|
|
|
|
return UserModel.read({email: firstUser.attributes.email});
|
|
|
|
}).then(function (found) {
|
|
|
|
should.exist(found);
|
|
|
|
found.attributes.name.should.equal(firstUser.attributes.name);
|
|
|
|
done();
|
|
|
|
}).then(null, done);
|
|
|
|
});
|
|
|
|
it('can edit', function (done) {
|
|
var firstUser;
|
|
|
|
UserModel.browse().then(function (results) {
|
|
|
|
should.exist(results);
|
|
|
|
results.length.should.be.above(0);
|
|
|
|
firstUser = results.models[0];
|
|
|
|
return UserModel.edit({id: firstUser.id, website: "some.newurl.com"});
|
|
|
|
}).then(function (edited) {
|
|
|
|
should.exist(edited);
|
|
|
|
edited.attributes.website.should.equal('some.newurl.com');
|
|
|
|
done();
|
|
|
|
}).then(null, done);
|
|
});
|
|
|
|
it("can get effective permissions", function (done) {
|
|
UserModel.effectivePermissions(1).then(function (effectivePermissions) {
|
|
should.exist(effectivePermissions);
|
|
|
|
effectivePermissions.length.should.be.above(0);
|
|
|
|
done();
|
|
}).then(null, done);
|
|
});
|
|
|
|
it('can delete', function (done) {
|
|
var firstUserId;
|
|
|
|
UserModel.browse().then(function (results) {
|
|
|
|
should.exist(results);
|
|
|
|
results.length.should.be.above(0);
|
|
|
|
firstUserId = results.models[0].id;
|
|
|
|
return UserModel.destroy(firstUserId);
|
|
|
|
}).then(function () {
|
|
|
|
return UserModel.browse();
|
|
|
|
}).then(function (newResults) {
|
|
var ids, hasDeletedId;
|
|
|
|
if (newResults.length < 1) {
|
|
// Bug out if we only had one user and deleted it.
|
|
return done();
|
|
}
|
|
|
|
ids = _.pluck(newResults.models, "id");
|
|
hasDeletedId = _.any(ids, function (id) {
|
|
return id === firstUserId;
|
|
});
|
|
|
|
hasDeletedId.should.equal(false);
|
|
done();
|
|
|
|
}).then(null, done);
|
|
});
|
|
});
|
|
|
|
}); |