|
|
|
@ -513,8 +513,7 @@ describe('User', function () {
|
|
|
|
|
it('should upload profile picture', function (done) {
|
|
|
|
|
helpers.copyFile(
|
|
|
|
|
path.join(nconf.get('base_dir'), 'test/files/test.png'),
|
|
|
|
|
path.join(nconf.get('base_dir'), 'test/files/test_copy.png')
|
|
|
|
|
, function (err) {
|
|
|
|
|
path.join(nconf.get('base_dir'), 'test/files/test_copy.png'), function (err) {
|
|
|
|
|
assert.ifError(err);
|
|
|
|
|
var picture = {
|
|
|
|
|
path: path.join(nconf.get('base_dir'), 'test/files/test_copy.png'),
|
|
|
|
@ -572,7 +571,7 @@ describe('User', function () {
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should return error if no plugins listening for filter:uploadImage when uploading from url', function (done) {
|
|
|
|
|
var url = nconf.get('url') + '/logo.png';
|
|
|
|
|
var url = nconf.get('url') + '/assets/logo.png';
|
|
|
|
|
User.uploadFromUrl(uid, url, function (err) {
|
|
|
|
|
assert.equal(err.message, '[[error:no-plugin]]');
|
|
|
|
|
done();
|
|
|
|
@ -595,7 +594,7 @@ describe('User', function () {
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should return error if the file is too big when uploading from url', function (done) {
|
|
|
|
|
var url = nconf.get('url') + '/logo.png';
|
|
|
|
|
var url = nconf.get('url') + '/assets/logo.png';
|
|
|
|
|
meta.config.maximumProfileImageSize = 1;
|
|
|
|
|
|
|
|
|
|
function filterMethod(data, callback) {
|
|
|
|
@ -613,7 +612,7 @@ describe('User', function () {
|
|
|
|
|
it('should error with invalid data', function (done) {
|
|
|
|
|
var socketUser = require('../src/socket.io/user');
|
|
|
|
|
|
|
|
|
|
socketUser.uploadProfileImageFromUrl({uid: uid}, {uid: uid, url: ''}, function (err, uploadedPicture) {
|
|
|
|
|
socketUser.uploadProfileImageFromUrl({uid: uid}, {uid: uid, url: ''}, function (err) {
|
|
|
|
|
assert.equal(err.message, '[[error:invalid-data]]');
|
|
|
|
|
done();
|
|
|
|
|
});
|
|
|
|
@ -621,7 +620,7 @@ describe('User', function () {
|
|
|
|
|
|
|
|
|
|
it('should upload picture when uploading from url', function (done) {
|
|
|
|
|
var socketUser = require('../src/socket.io/user');
|
|
|
|
|
var url = nconf.get('url') + '/logo.png';
|
|
|
|
|
var url = nconf.get('url') + '/assets/logo.png';
|
|
|
|
|
meta.config.maximumProfileImageSize = '';
|
|
|
|
|
|
|
|
|
|
function filterMethod(data, callback) {
|
|
|
|
@ -1006,6 +1005,149 @@ describe('User', function () {
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
describe('invites', function () {
|
|
|
|
|
var socketUser = require('../src/socket.io/user');
|
|
|
|
|
var inviterUid;
|
|
|
|
|
|
|
|
|
|
before(function (done) {
|
|
|
|
|
User.create({
|
|
|
|
|
username: 'inviter',
|
|
|
|
|
email: 'inviter@nodebb.org'
|
|
|
|
|
}, function (err, uid) {
|
|
|
|
|
assert.ifError(err);
|
|
|
|
|
inviterUid = uid;
|
|
|
|
|
done();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should error with invalid data', function (done) {
|
|
|
|
|
socketUser.invite({uid: inviterUid}, null, function (err) {
|
|
|
|
|
assert.equal(err.message, '[[error:invalid-data]]');
|
|
|
|
|
done();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should eror if forum is not invite only', function (done) {
|
|
|
|
|
socketUser.invite({uid: inviterUid}, 'invite1@test.com', function (err) {
|
|
|
|
|
assert.equal(err.message, '[[error:forum-not-invite-only]]');
|
|
|
|
|
done();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should error if user is not admin and type is admin-invite-only', function (done) {
|
|
|
|
|
meta.config.registrationType = 'admin-invite-only';
|
|
|
|
|
socketUser.invite({uid: inviterUid}, 'invite1@test.com', function (err) {
|
|
|
|
|
assert.equal(err.message, '[[error:no-privileges]]');
|
|
|
|
|
done();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should send invitation email', function (done) {
|
|
|
|
|
meta.config.registrationType = 'invite-only';
|
|
|
|
|
socketUser.invite({uid: inviterUid}, 'invite1@test.com', function (err) {
|
|
|
|
|
assert.ifError(err);
|
|
|
|
|
done();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should error if ouf of invitations', function (done) {
|
|
|
|
|
meta.config.maximumInvites = 1;
|
|
|
|
|
socketUser.invite({uid: inviterUid}, 'invite2@test.com', function (err) {
|
|
|
|
|
assert.equal(err.message, '[[error:invite-maximum-met, ' + 1 + ', ' + 1 + ']]');
|
|
|
|
|
meta.config.maximumInvites = 5;
|
|
|
|
|
done();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should error if email exists', function (done) {
|
|
|
|
|
socketUser.invite({uid: inviterUid}, 'inviter@nodebb.org', function (err) {
|
|
|
|
|
assert.equal(err.message, '[[error:email-taken]]');
|
|
|
|
|
done();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should send invitation email', function (done) {
|
|
|
|
|
socketUser.invite({uid: inviterUid}, 'invite2@test.com', function (err) {
|
|
|
|
|
assert.ifError(err);
|
|
|
|
|
done();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should get user\'s invites', function (done) {
|
|
|
|
|
User.getInvites(inviterUid, function (err, data) {
|
|
|
|
|
assert.ifError(err);
|
|
|
|
|
assert.deepEqual(data, ['invite1@test.com', 'invite2@test.com']);
|
|
|
|
|
done();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should get all invites', function (done) {
|
|
|
|
|
User.getAllInvites(function (err, data) {
|
|
|
|
|
assert.ifError(err);
|
|
|
|
|
assert.deepEqual(data, [ { uid: inviterUid, invitations: [ 'invite1@test.com', 'invite2@test.com' ] } ]);
|
|
|
|
|
done();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should fail to verify invitation with invalid data', function (done) {
|
|
|
|
|
User.verifyInvitation({token: '', email: ''}, function (err) {
|
|
|
|
|
assert.equal(err.message, '[[error:invalid-data]]');
|
|
|
|
|
done();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should fail to verify invitation with invalid email', function (done) {
|
|
|
|
|
User.verifyInvitation({token: 'test', email: 'doesnotexist@test.com'}, function (err) {
|
|
|
|
|
assert.equal(err.message, '[[error:invalid-token]]');
|
|
|
|
|
done();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should verify installation with no errors', function (done) {
|
|
|
|
|
db.get('invitation:email:' + 'invite1@test.com', function (err, token) {
|
|
|
|
|
assert.ifError(err);
|
|
|
|
|
User.verifyInvitation({token: token, email: 'invite1@test.com'}, function (err) {
|
|
|
|
|
assert.ifError(err);
|
|
|
|
|
done();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should error with invalid username', function (done) {
|
|
|
|
|
User.deleteInvitation('doesnotexist', 'test@test.com', function (err) {
|
|
|
|
|
assert.equal(err.message, '[[error:invalid-username]]');
|
|
|
|
|
done();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should delete invitation', function (done) {
|
|
|
|
|
var socketAdmin = require('../src/socket.io/admin');
|
|
|
|
|
socketAdmin.user.deleteInvitation({uid: inviterUid}, {invitedBy: 'inviter', email: 'invite1@test.com'}, function (err) {
|
|
|
|
|
assert.ifError(err);
|
|
|
|
|
db.isSetMember('invitation:uid:' + inviterUid, 'invite1@test.com', function (err, isMember) {
|
|
|
|
|
assert.ifError(err);
|
|
|
|
|
assert.equal(isMember, false);
|
|
|
|
|
done();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should delete invitation key', function (done) {
|
|
|
|
|
User.deleteInvitationKey('invite2@test.com', function (err) {
|
|
|
|
|
assert.ifError(err);
|
|
|
|
|
db.isSetMember('invitation:uid:' + inviterUid, 'invite2@test.com', function (err, isMember) {
|
|
|
|
|
assert.ifError(err);
|
|
|
|
|
assert.equal(isMember, false);
|
|
|
|
|
db.isSetMember('invitation:uids', inviterUid, function (err, isMember) {
|
|
|
|
|
assert.ifError(err);
|
|
|
|
|
assert.equal(isMember, false);
|
|
|
|
|
done();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|