it('callback #1', callback => { clickhouse.query(sql).exec((err, rows) => { expect(err).to.not.be.ok(); expect(rows).to.have.length(rowCount); expect(rows[0]).to.eql({ number: 0, str: '0', date: '1970-01-02' }); callback(); }); });
it('.find $ne', async function() { const posts = await Post.find({ id: { $ne: 100 }}, { limit: 10 }); expect(posts.some(post => post.id == 100)).to.not.be.ok(); });
it('should create properly a local account', function (done) { var uniqueness = Date.now(); var sampleUser = { email: 'test-local-' + uniqueness + '@puredev.eu', password: 'admin1' //:D }; userRepo.createUser(sampleUser) .then(function(user) { expect(user).to.be.a('object'); expect(user.password).to.not.be(null); expect(user.email).to.be(sampleUser.email); bcrypt.compare(sampleUser.password, user.password, function(err, res) { expect(res).to.be(true); done(); }); }) .catch(function() { expect().fail('It should not happen'); done(); }); });
describe('jsonPreferredMime method', function () { it('should return the json mime if it is present in an array', function () { var mimeTypes = ['application/xml', 'application/json', 'application/x-www-form-urlencoded']; expect(apiClient.jsonPreferredMime(mimeTypes)).to.be('application/json'); }); it('should return the vnd.api+json mime if it is present in an array', function () { var mimeTypes = ['application/xml', 'application/vnd.api+json', 'application/x-www-form-urlencoded']; expect(apiClient.jsonPreferredMime(mimeTypes)).to.be('application/vnd.api+json'); }); it('should return the first json mime if it is present in an array', function () { var mimeTypes = ['application/xml', 'application/json', 'application/vnd.api+json', 'application/x-www-form-urlencoded']; expect(apiClient.jsonPreferredMime(mimeTypes)).to.be('application/json'); }); it('should return the first mime if json is not present in an array', function () { var mimeTypes = ['application/xml', 'application/x-www-form-urlencoded']; expect(apiClient.jsonPreferredMime(mimeTypes)).to.be('application/xml'); }); it('should fail for a an empty array', function () { expect(apiClient.jsonPreferredMime([])).to.not.be.ok(); }); });
it('should properly unlink linked facebook account', function (done) { var uniqueness = Date.now(); var sampleUser = { email: 'test-local-' + uniqueness + '@puredev.eu', password: 'admin1' //:D }; var $u = createUser(); userRepo.createUser(sampleUser) .then(function(user) { $u.profile._json = {email: $u.email}; return userRepo.linkFacebookProfile(user.id, $u.accessToken, $u.refreshToken, $u.profile); }) .then(function(user) { expect(user).to.be.a('object'); expect(user.facebookId).to.not.be(null); expect(user.tokens).to.be.a('object'); expect(user.tokens.facebook).to.be($u.accessToken); return userRepo.unlinkProviderFromAccount('facebook', user.id); }) .then(function(user) { expect(user.tokens.facebook).to.be(null); expect(user.facebookId).to.be(null); done(); }); });
it('stream with pause/resume', function(callback) { const count = 10, pause = 1000, ts = Date.now(); this.timeout(count * pause * 2); let i = 0, error = null; const stream = clickhouse.query(`SELECT number FROM system.numbers LIMIT ${count}`).stream(); stream .on('data', () => { ++i; stream.pause(); setTimeout(() => stream.resume(), pause); }) .on('error', err => error = err) .on('end', () => { expect(error).to.not.be.ok(); expect(i).to.be(count); expect(Date.now() - ts).to.be.greaterThan(count * pause); callback(); }) });
describe('Abort query', () => { it('exec & abort', cb => { const $q = clickhouse.query(`SELECT number FROM system.numbers LIMIT ${rowCount}`); let i = 0, error = null; const stream = $q.stream() .on('data', () => { ++i; if (i > minRnd) { stream.pause(); } }) .on('error', err => error = err) .on('close', () => { expect(error).to.not.be.ok(); expect(i).to.be.below(rowCount); // Take some time for waiting of cancel query setTimeout(() => cb(), 4 * 1000); }) .on('end', () => { cb(new Error('no way! May be stream very quick!')); }); setTimeout(() => $q.destroy(), 10 * 1000); }); });
it('should properly unlink linked twitter account', function (done) { var uniqueness = Date.now(); var sampleUser = { email: 'test-local2-' + uniqueness + '@puredev.eu', password: 'admin1' //:D }; var $u = createUser(); userRepo.createUser(sampleUser) .then(function(user) { return userRepo.linkTwitterProfile(user.id, $u.accessToken, $u.tokenSecret, $u.profile); }) .then(function(user) { expect(user).to.be.a('object'); expect(user.twitterId).to.not.be(null); expect(user.tokens).to.be.a('object'); expect(user.tokens.twitter).to.be($u.accessToken); expect(user.tokens.twitterSecret).to.be($u.tokenSecret); return userRepo.unlinkProviderFromAccount('twitter', user.id); }) .then(function(user) { expect(user.tokens.twitter).to.be(null); expect(user.tokens.twitterSecret).to.be(null); expect(user.twitterId).to.be(null); done(); }); });
expect(fs.existsSync(storageDirectory + '/streams/eventstore.stream-foo-bar.index')).to.be(true); eventstore.deleteEventStream('foo-bar'); expect(eventstore.getEventStream('foo-bar')).to.be(false); expect(fs.existsSync(storageDirectory + '/streams/eventstore.stream-foo-bar.index')).to.be(false); done(); }); expect(eventstore.getEventStream('foo-bar')).to.not.be(false); done(); });
it('should properly change password in DB', function (done) { var uniqueness = Date.now(); var sampleUser = { email: 'test-local-' + uniqueness + '@puredev.eu', password: 'admin1' //:D }; var newPassword = 'admin2'; userRepo.createUser(sampleUser) .then(function(user) { return userRepo.changeUserPassword(user.id, newPassword); }) .then(function(user) { expect(user).to.be.a('object'); expect(user.password).to.not.be(null); bcrypt.compare(newPassword, user.password, function(err, res) { expect(res).to.be(true); done(); }); }) .catch(function() { expect().fail('It should not happen'); done(); }); });
describe('Reset Password Functionality', function() { it('should password be changed properly', function(done) { var uniqueness = Date.now(); var newPassword = 'admin2'; var token = 'abcdef0123456789' + uniqueness; var sampleUser = { email: 'test-local123-' + uniqueness + '@puredev.eu', resetPasswordToken: token, resetPasswordExpires: Date.now() + 36000000, password: 'admin1' //:D }; userRepo.createUser(sampleUser) .then(function() { return userRepo.changeUserPswAndResetToken(token, newPassword); }) .then(function(user) { expect(user).to.not.be(null); expect(user.resetPasswordToken).to.be(null); expect(user.resetPasswordExpires).to.be(null); bcrypt.compare(newPassword, user.password, function(err, res) { expect(res).to.be(true); done(); }); }); }); });
it('callback #2', callback => { clickhouse.query(sql, (err, rows) => { expect(err).to.not.be.ok(); expect(rows).to.have.length(rowCount); expect(rows[0]).to.eql({ number: 0, str: '0', date: '1970-01-02' }); callback(); }); });