diff --git a/Gruntfile.js b/Gruntfile.js index 179b8524dd..73a029e37f 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -245,7 +245,8 @@ var path = require('path'), integration: { src: [ 'core/test/integration/**/model*_spec.js', - 'core/test/integration/**/api*_spec.js' + 'core/test/integration/**/api*_spec.js', + 'core/test/integration/*_spec.js' ] }, diff --git a/core/server/update-check.js b/core/server/update-check.js index 8e2631f8ee..0c2505f6c8 100644 --- a/core/server/update-check.js +++ b/core/server/update-check.js @@ -64,7 +64,7 @@ function updateCheckData() { return _.reduce(apps, function (memo, item) { return memo === '' ? memo + item : memo + ', ' + item; }, ''); }).otherwise(errors.rejectError)); ops.push(api.posts.browse().otherwise(errors.rejectError)); - ops.push(api.users.browse().otherwise(errors.rejectError)); + ops.push(api.users.browse.call({user: 1}).otherwise(errors.rejectError)); ops.push(nodefn.call(exec, 'npm -v').otherwise(errors.rejectError)); data.ghost_version = currentVersion; @@ -86,8 +86,8 @@ function updateCheckData() { data.blog_id = crypto.createHash('md5').update(blogId).digest('hex'); data.theme = theme ? theme.value : ''; data.apps = apps || ''; - data.post_count = posts && posts.posts && posts.posts.total ? posts.total : 0; - data.user_count = users && users.users && users.users.length ? users.length : 0; + data.post_count = posts && posts.meta && posts.meta.pagination ? posts.meta.pagination.total : 0; + data.user_count = users && users.users && users.users.length ? users.users.length : 0; data.blog_created_at = users && users.users && users.users[0] && users.users[0].created_at ? moment(users.users[0].created_at).unix() : ''; data.npm_version = _.isArray(npm) && npm[0] ? npm[0].toString().replace(/\n/, '') : ''; diff --git a/core/test/integration/update_check_spec.js b/core/test/integration/update_check_spec.js new file mode 100644 index 0000000000..588e0f485e --- /dev/null +++ b/core/test/integration/update_check_spec.js @@ -0,0 +1,70 @@ +var should = require('should'); +var when = require('when'); +var rewire = require('rewire'); +var packageInfo = require('../../../package'); +var ghost = require('../../../core'); +var permissions = require('../../server/permissions'); +var testUtils = require('../utils'); +var updateCheck = rewire('../../server/update-check'); + +describe('Update Check', function () { + var environmentsOrig; + + before(function (done) { + environmentsOrig = updateCheck.__get__('allowedCheckEnvironments'); + updateCheck.__set__('allowedCheckEnvironments', ['development', 'production', 'testing']); + + ghost().then(function () { + return testUtils.clearData(); + }).then(function () { + done(); + }, done); + }); + + after(function () { + updateCheck.__set__('allowedCheckEnvironments', environmentsOrig); + }); + + beforeEach(function (done) { + testUtils.initData().then(function () { + return testUtils.insertDefaultFixtures(); + }).then(function () { + return testUtils.insertEditorUser(); + }).then(function () { + return testUtils.insertAuthorUser(); + }).then(function () { + return permissions.init(); + }).then(function () { + done(); + }, done); + }); + + afterEach(function (done) { + testUtils.clearData().then(function () { + done(); + }, done); + }); + + it('should report the correct data', function (done) { + var updateCheckData = updateCheck.__get__('updateCheckData'); + + updateCheckData().then(function (data) { + data.should.exist; + data.ghost_version.should.equal(packageInfo.version); + data.node_version.should.equal(process.versions.node); + data.env.should.equal(process.env.NODE_ENV); + data.database_type.should.match(/sqlite3|pg|mysql/); + data.blog_id.should.be.a.string; + data.blog_id.should.not.be.empty; + data.theme.should.be.equal('casper'); + data.apps.should.be.a.string; + data.blog_created_at.should.be.a.number; + data.user_count.should.be.above(0); + data.post_count.should.be.above(0); + data.npm_version.should.be.a.string; + data.npm_version.should.not.be.empty; + + done(); + }).otherwise(done); + }); +});