UNPKG

linagora-rse

Version:
639 lines (523 loc) 22.1 kB
'use strict'; var expect = require('chai').expect; describe('The user domain module', function() { function checkIndexResult(res) { return res.status === 200 && res.body.hits.total === 1 && res.body.hits.hits[0]._source.domains && res.body.hits.hits[0]._source.domains.length === 1; } before(function() { this.testEnv.writeDBConfigFile(); }); after(function() { this.testEnv.removeDBConfigFile(); }); describe('Basics tests (list users)', function() { beforeEach(function(done) { var self = this; this.mongoose = require('mongoose'); this.connectMongoose(this.mongoose, function(err) { if (err) { done(err); } self.helpers.elasticsearch.saveTestConfiguration(function(err) { if (err) { return done(err); } self.User = self.helpers.requireBackend('core/db/mongo/models/user'); self.Domain = self.helpers.requireBackend('core/db/mongo/models/domain'); self.helpers.requireBackend('core/db/mongo/models/community'); self.helpers.requireBackend('core/db/mongo/models/community-archive'); done(err); }); }); }); afterEach(function(done) { this.helpers.mongo.dropDatabase(done); }); it('should return users which belong to the given domain when calling getUsersList', function(done) { var userFixtures = this.helpers.requireFixture('models/users.js')(this.User); var userDomain = this.helpers.requireBackend('core/user/domain'); this.helpers.api.applyDomainDeployment('linagora_test_domain', function(err, models) { if (err) { return done(err); } var userWithoutDomain = userFixtures.newDummyUser(['foo@bar.com']); userWithoutDomain.save(function(err) { if (err) { done(err); } userDomain.getUsersList([models.domain], null, function(err, users) { expect(err).to.not.exist; expect(users).to.exist; expect(users.list.length).to.equal(4); done(); }); }); }); }); it('should return an array where limit === size when calling getUsersList with limit option', function(done) { var userDomain = this.helpers.requireBackend('core/user/domain'); this.helpers.api.applyDomainDeployment('linagora_test_domain', function(err, models) { if (err) { return done(err); } userDomain.getUsersList([models.domain], {limit: 2}, function(err, users) { expect(err).to.not.exist; expect(users).to.exist; expect(users.list.length).to.equal(2); done(); }); }); }); it('should return an array which contains the last 2 elements when calling getUsersList with offset option = 2 on domain members = 4', function(done) { var userDomain = this.helpers.requireBackend('core/user/domain'); this.helpers.api.applyDomainDeployment('linagora_test_domain', function(err, models) { if (err) { return done(err); } userDomain.getUsersList([models.domain], {offset: 2}, function(err, users) { expect(err).to.not.exist; expect(users).to.exist; expect(users.list.length).to.equal(2); expect(users.list[0]._id).to.deep.equals(models.users[2]._id); expect(users.list[1]._id).to.deep.equals(models.users[3]._id); done(); }); }); }); it('should return the users which belong to a domain and which contain the search term', function(done) { var userDomain = this.helpers.requireBackend('core/user/domain'); var self = this; this.helpers.api.applyDomainDeployment('linagora_test_domain', function(err, models) { if (err) { return done(err); } var ids = models.users.map(function(element) { return element._id; }); self.helpers.elasticsearch.checkUsersDocumentsFullyIndexed(ids, checkIndexResult, function(err) { if (err) { return done(err); } userDomain.getUsersSearch([models.domain], {search: 'lng'}, function(err, users) { expect(err).to.not.exist; expect(users).to.exist; expect(users.list.length).to.equal(3); expect(users.list[0]._id).to.deep.equals(models.users[0]._id.toString()); expect(users.list[1]._id).to.deep.equals(models.users[1]._id.toString()); expect(users.list[2]._id).to.deep.equals(models.users[2]._id.toString()); done(); }); }); }); }); it('should return an error when calling getUsersList with a null domain', function(done) { var userDomain = this.helpers.requireBackend('core/user/domain'); userDomain.getUsersList(null, null, function(err) { expect(err).to.exist; done(); }); }); }); describe('Tests cases (search users)', function() { var domain; var userDomain; var delphine; var philippe; before(function(done) { var self = this; this.mongoose = require('mongoose'); this.connectMongoose(this.mongoose, function(err) { if (err) { done(err); } self.helpers.elasticsearch.saveTestConfiguration(function(err) { if (err) { return done(err); } self.helpers.api.applyDomainDeployment('linagora_test_cases', function(err, models) { if (err) { return done(err); } domain = models.domain; delphine = models.users[0]; philippe = models.users[1]; var ids = models.users.map(function(element) { return element._id; }); self.helpers.elasticsearch.checkUsersDocumentsFullyIndexed(ids, checkIndexResult, function(err) { if (err) { return done(err); } self.mongoose.disconnect(done); }); }); }); }); }); after(function(done) { this.helpers.mongo.dropDatabase(done); }); beforeEach(function(done) { this.helpers.requireBackend('core/db/mongo/models/user'); this.helpers.requireBackend('core/db/mongo/models/domain'); userDomain = this.helpers.requireBackend('core/user/domain'); this.mongoose = require('mongoose'); this.connectMongoose(this.mongoose, done); }); afterEach(function(done) { this.mongoose.disconnect(done); }); it('should return only Delphine with request "Delp"', function(done) { userDomain.getUsersSearch([domain], {search: 'Delp'}, function(err, users) { expect(err).to.not.exist; expect(users).to.exist; expect(users.list.length).to.equal(1); expect(users.list[0]._id).to.deep.equals(delphine._id.toString()); done(); }); }); it('should return only Philippe with request "faso"', function(done) { userDomain.getUsersSearch([domain], {search: 'faso'}, function(err, users) { expect(err).to.not.exist; expect(users).to.exist; expect(users.list.length).to.equal(1); expect(users.list[0]._id).to.deep.equals(philippe._id.toString()); done(); }); }); it('should return only Delphine with request "yrel"', function(done) { userDomain.getUsersSearch([domain], {search: 'yrel'}, function(err, users) { expect(err).to.not.exist; expect(users).to.exist; expect(users.list.length).to.equal(1); expect(users.list[0]._id).to.deep.equals(delphine._id.toString()); done(); }); }); it('should return nothing with request "deckard"', function(done) { userDomain.getUsersSearch([domain], {search: 'deckard'}, function(err, users) { expect(err).to.not.exist; expect(users).to.exist; expect(users.list.length).to.equal(0); done(); }); }); it('should return nothing with request "Rachel Mifasol"', function(done) { userDomain.getUsersSearch([domain], {search: 'Rachel Mifasol'}, function(err, users) { expect(err).to.not.exist; expect(users).to.exist; expect(users.list.length).to.equal(0); done(); }); }); it('should return nothing with request "Delphine interne.com"', function(done) { userDomain.getUsersSearch([domain], {search: 'Delphine interne.com'}, function(err, users) { expect(err).to.not.exist; expect(users).to.exist; expect(users.list.length).to.equal(0); done(); }); }); it('should return Delphine and Philippe with request "phi"', function(done) { userDomain.getUsersSearch([domain], {search: 'phi'}, function(err, users) { expect(err).to.not.exist; expect(users).to.exist; expect(users.list.length).to.equal(2); expect(users.list[0]._id).to.deep.equals(delphine._id.toString()); expect(users.list[1]._id).to.deep.equals(philippe._id.toString()); done(); }); }); it('should return Delphine and Philippe with request "mi"', function(done) { userDomain.getUsersSearch([domain], {search: 'mi'}, function(err, users) { expect(err).to.not.exist; expect(users).to.exist; expect(users.list.length).to.equal(2); expect(users.list[0]._id).to.deep.equals(delphine._id.toString()); expect(users.list[1]._id).to.deep.equals(philippe._id.toString()); done(); }); }); it('should return Delphine and Philippe with request "linagora"', function(done) { userDomain.getUsersSearch([domain], {search: 'linagora'}, function(err, users) { expect(err).to.not.exist; expect(users).to.exist; expect(users.list.length).to.equal(2); expect(users.list[0]._id).to.deep.equals(delphine._id.toString()); expect(users.list[1]._id).to.deep.equals(philippe._id.toString()); done(); }); }); it('should return only Delphine with request "Delphine Doremi tyrell@linagora.fr"', function(done) { userDomain.getUsersSearch([domain], {search: 'Delphine Doremi tyrell@linagora.fr'}, function(err, users) { expect(err).to.not.exist; expect(users).to.exist; expect(users.list.length).to.equal(1); expect(users.list[0]._id).to.deep.equals(delphine._id.toString()); done(); }); }); it('should return only Delphine with request "Delphine Delphine Doremi"', function(done) { userDomain.getUsersSearch([domain], {search: 'Delphine Delphine Doremi'}, function(err, users) { expect(err).to.not.exist; expect(users).to.exist; expect(users.list.length).to.equal(1); expect(users.list[0]._id).to.deep.equals(delphine._id.toString()); done(); }); }); it('should return only Delphine with request "emi lin elp"', function(done) { userDomain.getUsersSearch([domain], {search: 'emi lin elp'}, function(err, users) { expect(err).to.not.exist; expect(users).to.exist; expect(users.list.length).to.equal(1); expect(users.list[0]._id).to.deep.equals(delphine._id.toString()); done(); }); }); it('should return only Delphine with request "Rémi"', function(done) { userDomain.getUsersSearch([domain], {search: 'Rémi'}, function(err, users) { expect(err).to.not.exist; expect(users).to.exist; expect(users.list.length).to.equal(1); expect(users.list[0]._id).to.deep.equals(delphine._id.toString()); done(); }); }); it('should return only Philippe with request "atty@li"', function(done) { userDomain.getUsersSearch([domain], {search: 'atty@li'}, function(err, users) { expect(err).to.not.exist; expect(users).to.exist; expect(users.list.length).to.equal(1); expect(users.list[0]._id).to.deep.equals(philippe._id.toString()); done(); }); }); it('should return only Delphine with request "DOREM"', function(done) { userDomain.getUsersSearch([domain], {search: 'DOREM'}, function(err, users) { expect(err).to.not.exist; expect(users).to.exist; expect(users.list.length).to.equal(1); expect(users.list[0]._id).to.deep.equals(delphine._id.toString()); done(); }); }); it('should return Delphine and Philippe with empty request', function(done) { userDomain.getUsersList([domain], null, function(err, users) { expect(err).to.not.exist; expect(users).to.exist; expect(users.list.length).to.equal(2); expect(users.list[0]._id.toString()).to.deep.equals(delphine._id.toString()); expect(users.list[1]._id.toString()).to.deep.equals(philippe._id.toString()); done(); }); }); }); describe('Tests cases extra (search users)', function() { var domain; var userDomain; var user; before(function(done) { var self = this; this.mongoose = require('mongoose'); this.connectMongoose(this.mongoose, function(err) { if (err) { done(err); } self.helpers.elasticsearch.saveTestConfiguration(function(err) { if (err) { return done(err); } userDomain = self.helpers.requireBackend('core/user/domain'); self.helpers.api.applyDomainDeployment('linagora_test_cases_extra', function(err, models) { if (err) { return done(err); } domain = models.domain; user = models.users[0]; self.helpers.elasticsearch.checkUsersDocumentsFullyIndexed([user._id], checkIndexResult, function(err) { if (err) { return done(err); } self.mongoose.disconnect(done); }); }); }); }); }); after(function(done) { this.helpers.mongo.dropDatabase(done); }); beforeEach(function(done) { this.mongoose = require('mongoose'); this.connectMongoose(this.mongoose, done); }); afterEach(function(done) { this.mongoose.disconnect(done); }); it('should return the user with request "eeeeaaaaiic"', function(done) { userDomain.getUsersSearch([domain], {search: 'eeeeaaaaiic'}, function(err, users) { expect(err).to.not.exist; expect(users).to.exist; expect(users.list.length).to.equal(1); expect(users.list[0]._id).to.deep.equals(user._id.toString()); done(); }); }); it('should return the user with request "éèêëaàâäïîç"', function(done) { userDomain.getUsersSearch([domain], {search: 'éèêëaàâäïîç'}, function(err, users) { expect(err).to.not.exist; expect(users).to.exist; expect(users.list.length).to.equal(1); expect(users.list[0]._id).to.deep.equals(user._id.toString()); done(); }); }); it('should return the user with request "EEEEAAAAIIC"', function(done) { userDomain.getUsersSearch([domain], {search: 'EEEEAAAAIIC'}, function(err, users) { expect(err).to.not.exist; expect(users).to.exist; expect(users.list.length).to.equal(1); expect(users.list[0]._id).to.deep.equals(user._id.toString()); done(); }); }); }); describe('Community tests', function() { var Community; var domain; var domain2; var community; var userDomain; var user1; var user2; var user3; var user4; var user12; var user22; var user32; var user42; before(function(done) { var self = this; this.mongoose = require('mongoose'); this.connectMongoose(this.mongoose, function(err) { if (err) { done(err); } self.helpers.elasticsearch.saveTestConfiguration(function(err) { if (err) { return done(err); } Community = self.helpers.requireBackend('core/db/mongo/models/community'); self.helpers.api.applyDomainDeployment('linagora_test_domain', function(err, models) { if (err) { return done(err); } domain = models.domain; user1 = models.users[0]; user2 = models.users[1]; user3 = models.users[2]; user4 = models.users[3]; self.helpers.api.applyDomainDeployment('linagora_test_domain2', function(err, models2) { if (err) { return done(err); } domain2 = models2.domain; user12 = models2.users[0]; user22 = models2.users[1]; user32 = models2.users[2]; user42 = models2.users[3]; self.helpers.api.createCommunity('Community', user1, domain, function(err, communitySaved) { if (err) { return done(err); } Community.update({_id: communitySaved._id}, {$push: {domain_ids: domain2._id}}, function(err) { if (err) { return done(err); } self.helpers.api.addUsersInCommunity(communitySaved, [user2, user3, user22], function(err, communityUpdated) { if (err) { return done(err); } community = communityUpdated; var ids = models.users.map(function(user) { return user._id; }); models2.users.forEach(function(user) { ids.push(user._id); }); self.helpers.elasticsearch.checkUsersDocumentsFullyIndexed(ids, checkIndexResult, function(err) { if (err) { return done(err); } self.mongoose.disconnect(done); }); }); }); }); }); }); }); }); }); after(function(done) { this.helpers.mongo.dropDatabase(done); }); beforeEach(function(done) { this.helpers.requireBackend('core/db/mongo/models/user'); this.helpers.requireBackend('core/db/mongo/models/domain'); userDomain = this.helpers.requireBackend('core/user/domain'); Community = this.helpers.requireBackend('core/db/mongo/models/community'); this.mongoose = require('mongoose'); this.connectMongoose(this.mongoose, done); }); afterEach(function(done) { this.mongoose.disconnect(done); }); describe('list users', function() { it('should return users in the two domains and not in the community', function(done) { userDomain.getUsersList([domain, domain2], {not_in_collaboration: community}, function(err, users) { if (err) { return done(err); } expect(err).to.not.exist; expect(users).to.exist; expect(users.list).to.have.length(4); expect(users.total_count).to.equal(4); expect(users.list[0]._id.toString()).to.deep.equals(user12._id.toString()); expect(users.list[1]._id.toString()).to.deep.equals(user32._id.toString()); expect(users.list[2]._id.toString()).to.deep.equals(user4._id.toString()); expect(users.list[3]._id.toString()).to.deep.equals(user42._id.toString()); done(); }); }); it('should return users in the two domains, not in the community and no pending membership', function(done) { Community.update({_id: community._id}, {$push: {membershipRequests: {user: user12._id}}}, function(err) { if (err) { return done(err); } community.membershipRequests.push({user: user12._id}); userDomain.getUsersList([domain, domain2], {not_in_collaboration: community}, function(err, users) { if (err) { return done(err); } expect(err).to.not.exist; expect(users).to.exist; expect(users.list).to.have.length(3); expect(users.total_count).to.equal(3); expect(users.list[0]._id.toString()).to.deep.equals(user32._id.toString()); expect(users.list[1]._id.toString()).to.deep.equals(user4._id.toString()); expect(users.list[2]._id.toString()).to.deep.equals(user42._id.toString()); done(); }); }); }); }); describe('search users', function() { it('should return users in the two domains, not in the community and matching with search terms', function(done) { userDomain.getUsersSearch([domain, domain2], {search: 'linagora', not_in_collaboration: community}, function(err, users) { if (err) { return done(err); } expect(err).to.not.exist; expect(users).to.exist; expect(users.list).to.have.length(2); expect(users.total_count).to.equal(2); expect(users.list[0]._id).to.deep.equals(user4._id.toString()); expect(users.list[1]._id).to.deep.equals(user42._id.toString()); done(); }); }); it('should return users in the two domains, not in the community, no pending membership and ' + 'matching with search terms', function(done) { Community.update({_id: community._id}, {$push: {membershipRequests: {user: user4._id}}}, function(err) { if (err) { return done(err); } community.membershipRequests.push({user: user4._id}); userDomain.getUsersSearch([domain, domain2], {search: 'linagora', not_in_collaboration: community}, function(err, users) { if (err) { return done(err); } expect(err).to.not.exist; expect(users).to.exist; expect(users.list).to.have.length(1); expect(users.total_count).to.equal(1); expect(users.list[0]._id).to.deep.equals(user42._id.toString()); done(); }); }); }); }); }); });