mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-04-15 03:01:37 -05:00
Moved server unit tests into the server folder
- this is a small part of a bit of cleanup of our test files - the goal is to make the existing tests clearer with a view to making it easier to write more tests - this makes the test structure follow the codebase structure more closely - eventually we will colocate the tests as we break the codebase down further
This commit is contained in:
parent
95d27e7f58
commit
9e96b04542
92 changed files with 468 additions and 244 deletions
|
@ -3,7 +3,7 @@ const sinon = require('sinon');
|
|||
const moment = require('moment');
|
||||
const _ = require('lodash');
|
||||
const nock = require('nock');
|
||||
const SchedulingDefault = require('../../../../core/server/adapters/scheduling/SchedulingDefault');
|
||||
const SchedulingDefault = require('../../../../../core/server/adapters/scheduling/SchedulingDefault');
|
||||
|
||||
describe('Scheduling Default Adapter', function () {
|
||||
const scope = {};
|
|
@ -3,13 +3,13 @@ const should = require('should');
|
|||
const sinon = require('sinon');
|
||||
const Promise = require('bluebird');
|
||||
const moment = require('moment');
|
||||
const testUtils = require('../../../../utils');
|
||||
const models = require('../../../../../core/server/models');
|
||||
const events = require('../../../../../core/server/lib/common/events');
|
||||
const schedulingUtils = require('../../../../../core/server/adapters/scheduling/utils');
|
||||
const SchedulingDefault = require('../../../../../core/server/adapters/scheduling/SchedulingDefault');
|
||||
const urlUtils = require('../../../../../core/shared/url-utils');
|
||||
const PostScheduler = require('../../../../../core/server/adapters/scheduling/post-scheduling/post-scheduler');
|
||||
const testUtils = require('../../../../../utils');
|
||||
const models = require('../../../../../../core/server/models');
|
||||
const events = require('../../../../../../core/server/lib/common/events');
|
||||
const schedulingUtils = require('../../../../../../core/server/adapters/scheduling/utils');
|
||||
const SchedulingDefault = require('../../../../../../core/server/adapters/scheduling/SchedulingDefault');
|
||||
const urlUtils = require('../../../../../../core/shared/url-utils');
|
||||
const PostScheduler = require('../../../../../../core/server/adapters/scheduling/post-scheduling/post-scheduler');
|
||||
|
||||
describe('Scheduling: Post Scheduler', function () {
|
||||
let adapter;
|
|
@ -1,8 +1,8 @@
|
|||
const should = require('should');
|
||||
const fs = require('fs-extra');
|
||||
const configUtils = require('../../../utils/configUtils');
|
||||
const config = require('../../../../core/shared/config');
|
||||
const schedulingUtils = require('../../../../core/server/adapters/scheduling/utils');
|
||||
const configUtils = require('../../../../utils/configUtils');
|
||||
const config = require('../../../../../core/shared/config');
|
||||
const schedulingUtils = require('../../../../../core/server/adapters/scheduling/utils');
|
||||
|
||||
const schedulingPath = configUtils.config.getContentPath('adapters') + 'scheduling/';
|
||||
describe('Scheduling: utils', function () {
|
|
@ -5,9 +5,9 @@ const fs = require('fs-extra');
|
|||
const moment = require('moment');
|
||||
const Promise = require('bluebird');
|
||||
const path = require('path');
|
||||
const LocalFileStore = require('../../../../core/server/adapters/storage/LocalFileStorage');
|
||||
const LocalFileStore = require('../../../../../core/server/adapters/storage/LocalFileStorage');
|
||||
let localFileStore;
|
||||
const configUtils = require('../../../utils/configUtils');
|
||||
const configUtils = require('../../../../utils/configUtils');
|
||||
|
||||
describe('Local File System Storage', function () {
|
||||
let image;
|
||||
|
@ -143,7 +143,7 @@ describe('Local File System Storage', function () {
|
|||
describe('read image', function () {
|
||||
beforeEach(function () {
|
||||
// we have some example images in our test utils folder
|
||||
localFileStore.storagePath = path.join(__dirname, '../../../utils/fixtures/images/');
|
||||
localFileStore.storagePath = path.join(__dirname, '../../../../utils/fixtures/images/');
|
||||
});
|
||||
|
||||
it('success', function (done) {
|
|
@ -1,9 +1,9 @@
|
|||
const should = require('should');
|
||||
const fs = require('fs-extra');
|
||||
const StorageBase = require('ghost-storage-base');
|
||||
const configUtils = require('../../../utils/configUtils');
|
||||
const storage = require('../../../../core/server/adapters/storage');
|
||||
const LocalFileStorage = require('../../../../core/server/adapters/storage/LocalFileStorage');
|
||||
const configUtils = require('../../../../utils/configUtils');
|
||||
const storage = require('../../../../../core/server/adapters/storage');
|
||||
const LocalFileStorage = require('../../../../../core/server/adapters/storage/LocalFileStorage');
|
||||
|
||||
const storagePath = configUtils.config.getContentPath('adapters') + 'storage/';
|
||||
describe('storage: index_spec', function () {
|
|
@ -1,9 +1,9 @@
|
|||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
const urlUtils = require('../../../../core/shared/url-utils');
|
||||
const urlUtils = require('../../../../../core/shared/url-utils');
|
||||
|
||||
// Stuff we are testing
|
||||
const storageUtils = require('../../../../core/server/adapters/storage/utils');
|
||||
const storageUtils = require('../../../../../core/server/adapters/storage/utils');
|
||||
|
||||
describe('storage utils', function () {
|
||||
let urlForStub;
|
|
@ -2,9 +2,9 @@ const should = require('should');
|
|||
const sinon = require('sinon');
|
||||
const _ = require('lodash');
|
||||
const fs = require('fs-extra');
|
||||
const models = require('../../../../core/server/models');
|
||||
const exporter = require('../../../../core/server/data/exporter');
|
||||
const dbBackup = require('../../../../core/server/data/db/backup');
|
||||
const models = require('../../../../../core/server/models');
|
||||
const exporter = require('../../../../../core/server/data/exporter');
|
||||
const dbBackup = require('../../../../../core/server/data/db/backup');
|
||||
|
||||
describe('Backup', function () {
|
||||
let exportStub;
|
|
@ -3,10 +3,10 @@ const sinon = require('sinon');
|
|||
const rewire = require('rewire');
|
||||
const Promise = require('bluebird');
|
||||
const errors = require('@tryghost/errors');
|
||||
const db = require('../../../../core/server/data/db');
|
||||
const exporter = rewire('../../../../core/server/data/exporter');
|
||||
const schema = require('../../../../core/server/data/schema');
|
||||
const models = require('../../../../core/server/models');
|
||||
const db = require('../../../../../core/server/data/db');
|
||||
const exporter = rewire('../../../../../core/server/data/exporter');
|
||||
const schema = require('../../../../../core/server/data/schema');
|
||||
const models = require('../../../../../core/server/models');
|
||||
const schemaTables = Object.keys(schema.tables);
|
||||
|
||||
describe('Exporter', function () {
|
||||
|
@ -172,7 +172,7 @@ describe('Exporter', function () {
|
|||
const {
|
||||
BACKUP_TABLES,
|
||||
TABLES_ALLOWLIST
|
||||
} = require('../../../../core/server/data/exporter/table-lists.js');
|
||||
} = require('../../../../../core/server/data/exporter/table-lists.js');
|
||||
|
||||
const nonSchemaTables = ['migrations', 'migrations_lock'];
|
||||
const requiredTables = schemaTables.concat(nonSchemaTables);
|
||||
|
@ -190,8 +190,8 @@ describe('Exporter', function () {
|
|||
it('should be fixed when default settings is changed', function () {
|
||||
const {
|
||||
SETTING_KEYS_BLOCKLIST
|
||||
} = require('../../../../core/server/data/exporter/table-lists.js');
|
||||
const defaultSettings = require('../../../../core/server/data/schema/default-settings.json');
|
||||
} = require('../../../../../core/server/data/exporter/table-lists.js');
|
||||
const defaultSettings = require('../../../../../core/server/data/schema/default-settings.json');
|
||||
|
||||
const totalKeysLength = Object.keys(defaultSettings).reduce((acc, curr, index) => {
|
||||
return acc + Object.keys(defaultSettings[curr]).length;
|
|
@ -1,6 +1,6 @@
|
|||
const should = require('should');
|
||||
const find = require('lodash/find');
|
||||
const PostsImporter = require('../../../../../../core/server/data/importer/importers/data/posts');
|
||||
const PostsImporter = require('../../../../../../../core/server/data/importer/importers/data/posts');
|
||||
|
||||
describe('PostsImporter', function () {
|
||||
describe('#beforeImport', function () {
|
|
@ -1,6 +1,6 @@
|
|||
const find = require('lodash/find');
|
||||
const should = require('should');
|
||||
const SettingsImporter = require('../../../../../../core/server/data/importer/importers/data/settings');
|
||||
const SettingsImporter = require('../../../../../../../core/server/data/importer/importers/data/settings');
|
||||
|
||||
describe('SettingsImporter', function () {
|
||||
describe('#beforeImport', function () {
|
|
@ -4,25 +4,25 @@ const sinon = require('sinon');
|
|||
const rewire = require('rewire');
|
||||
const Promise = require('bluebird');
|
||||
const _ = require('lodash');
|
||||
const testUtils = require('../../../utils');
|
||||
const testUtils = require('../../../../utils');
|
||||
const moment = require('moment');
|
||||
const path = require('path');
|
||||
|
||||
// Stuff we are testing
|
||||
const ImportManager = require('../../../../core/server/data/importer');
|
||||
const ImportManager = require('../../../../../core/server/data/importer');
|
||||
|
||||
const JSONHandler = require('../../../../core/server/data/importer/handlers/json');
|
||||
let ImageHandler = rewire('../../../../core/server/data/importer/handlers/image');
|
||||
const MarkdownHandler = require('../../../../core/server/data/importer/handlers/markdown');
|
||||
const DataImporter = require('../../../../core/server/data/importer/importers/data');
|
||||
const ImageImporter = require('../../../../core/server/data/importer/importers/image');
|
||||
const storage = require('../../../../core/server/adapters/storage');
|
||||
const configUtils = require('../../../utils/configUtils');
|
||||
const JSONHandler = require('../../../../../core/server/data/importer/handlers/json');
|
||||
let ImageHandler = rewire('../../../../../core/server/data/importer/handlers/image');
|
||||
const MarkdownHandler = require('../../../../../core/server/data/importer/handlers/markdown');
|
||||
const DataImporter = require('../../../../../core/server/data/importer/importers/data');
|
||||
const ImageImporter = require('../../../../../core/server/data/importer/importers/image');
|
||||
const storage = require('../../../../../core/server/adapters/storage');
|
||||
const configUtils = require('../../../../utils/configUtils');
|
||||
|
||||
describe('Importer', function () {
|
||||
afterEach(function () {
|
||||
sinon.restore();
|
||||
ImageHandler = rewire('../../../../core/server/data/importer/handlers/image');
|
||||
ImageHandler = rewire('../../../../../core/server/data/importer/handlers/image');
|
||||
configUtils.restore();
|
||||
});
|
||||
|
||||
|
@ -680,7 +680,7 @@ describe('Importer', function () {
|
|||
});
|
||||
|
||||
it('does preprocess posts, users and tags correctly', function () {
|
||||
const inputData = require('../../../utils/fixtures/import/import-data-1.json');
|
||||
const inputData = require('../../../../utils/fixtures/import/import-data-1.json');
|
||||
const outputData = DataImporter.preProcess(_.cloneDeep(inputData));
|
||||
|
||||
// Data preprocess is a noop
|
||||
|
@ -698,7 +698,7 @@ describe('Importer', function () {
|
|||
});
|
||||
|
||||
it('does preprocess posts, users and tags correctly', function () {
|
||||
let inputData = require('../../../utils/fixtures/import/import-data-1.json');
|
||||
let inputData = require('../../../../utils/fixtures/import/import-data-1.json');
|
||||
let outputData = ImageImporter.preProcess(_.cloneDeep(inputData));
|
||||
|
||||
inputData = inputData.data.data;
|
||||
|
@ -727,7 +727,7 @@ describe('Importer', function () {
|
|||
});
|
||||
|
||||
it('does import the images correctly', function () {
|
||||
const inputData = require('../../../utils/fixtures/import/import-data-1.json');
|
||||
const inputData = require('../../../../utils/fixtures/import/import-data-1.json');
|
||||
|
||||
const storageApi = {
|
||||
save: sinon.stub().returns(Promise.resolve())
|
|
@ -2,7 +2,7 @@ const should = require('should');
|
|||
const sinon = require('sinon');
|
||||
const errors = require('@tryghost/errors');
|
||||
|
||||
const utils = require('../../../../core/server/data/migrations/utils');
|
||||
const utils = require('../../../../../core/server/data/migrations/utils');
|
||||
|
||||
class Deferred {
|
||||
constructor() {
|
|
@ -1,7 +1,7 @@
|
|||
const should = require('should');
|
||||
const errors = require('@tryghost/errors');
|
||||
|
||||
const commands = require('../../../../core/server/data/schema/commands');
|
||||
const commands = require('../../../../../core/server/data/schema/commands');
|
||||
|
||||
describe('schema commands', function () {
|
||||
it('_hasForeignSQLite throws when knex is nox configured to use sqlite3', async function () {
|
|
@ -2,10 +2,10 @@ const should = require('should');
|
|||
const sinon = require('sinon');
|
||||
const Promise = require('bluebird');
|
||||
const rewire = require('rewire');
|
||||
const models = require('../../../../../core/server/models');
|
||||
const baseUtils = require('../../../../../core/server/models/base/utils');
|
||||
const fixtureUtils = rewire('../../../../../core/server/data/schema/fixtures/utils');
|
||||
const fixtures = require('../../../../../core/server/data/schema/fixtures/fixtures');
|
||||
const models = require('../../../../../../core/server/models');
|
||||
const baseUtils = require('../../../../../../core/server/models/base/utils');
|
||||
const fixtureUtils = rewire('../../../../../../core/server/data/schema/fixtures/utils');
|
||||
const fixtures = require('../../../../../../core/server/data/schema/fixtures/fixtures');
|
||||
|
||||
describe('Migration Fixture Utils', function () {
|
||||
let loggerStub;
|
|
@ -4,12 +4,12 @@ const yaml = require('js-yaml');
|
|||
const crypto = require('crypto');
|
||||
const fs = require('fs-extra');
|
||||
const path = require('path');
|
||||
const {config} = require('../../../utils/configUtils');
|
||||
const schema = require('../../../../core/server/data/schema');
|
||||
const fixtures = require('../../../../core/server/data/schema/fixtures');
|
||||
const routeSettings = require('../../../../core/server/services/route-settings');
|
||||
const validateRouteSettings = require('../../../../core/server/services/route-settings/validate');
|
||||
const defaultSettings = require('../../../../core/server/data/schema/default-settings');
|
||||
const {config} = require('../../../../utils/configUtils');
|
||||
const schema = require('../../../../../core/server/data/schema');
|
||||
const fixtures = require('../../../../../core/server/data/schema/fixtures');
|
||||
const routeSettings = require('../../../../../core/server/services/route-settings');
|
||||
const validateRouteSettings = require('../../../../../core/server/services/route-settings/validate');
|
||||
const defaultSettings = require('../../../../../core/server/data/schema/default-settings');
|
||||
|
||||
/**
|
||||
* @NOTE
|
|
@ -1,10 +1,10 @@
|
|||
const should = require('should');
|
||||
const _ = require('lodash');
|
||||
const ObjectId = require('bson-objectid');
|
||||
const testUtils = require('../../../utils');
|
||||
const models = require('../../../../core/server/models');
|
||||
const testUtils = require('../../../../utils');
|
||||
const models = require('../../../../../core/server/models');
|
||||
|
||||
const validateSchema = require('../../../../core/server/data/schema/validator');
|
||||
const validateSchema = require('../../../../../core/server/data/schema/validator');
|
||||
|
||||
describe('Validate Schema', function () {
|
||||
before(function () {
|
|
@ -2,7 +2,7 @@ const should = require('should');
|
|||
const sinon = require('sinon');
|
||||
const _ = require('lodash');
|
||||
const path = require('path');
|
||||
const BlogIcon = require('../../../../core/server/lib/image/blog-icon');
|
||||
const BlogIcon = require('../../../../../core/server/lib/image/blog-icon');
|
||||
|
||||
describe('lib/image: blog icon', function () {
|
||||
describe('getIconUrl', function () {
|
||||
|
@ -198,7 +198,7 @@ describe('lib/image: blog icon', function () {
|
|||
describe('getIconDimensions', function () {
|
||||
it('[success] returns .ico dimensions', function (done) {
|
||||
const blogIcon = new BlogIcon({config: {}, i18n: {}, storageUtils: {}, urlUtils: {}, settingsCache: {}});
|
||||
blogIcon.getIconDimensions(path.join(__dirname, '../../../utils/fixtures/images/favicon.ico'))
|
||||
blogIcon.getIconDimensions(path.join(__dirname, '../../../../utils/fixtures/images/favicon.ico'))
|
||||
.then(function (result) {
|
||||
should.exist(result);
|
||||
result.should.eql({
|
||||
|
@ -211,7 +211,7 @@ describe('lib/image: blog icon', function () {
|
|||
|
||||
it('[success] returns .png dimensions', function (done) {
|
||||
const blogIcon = new BlogIcon({config: {}, i18n: {}, storageUtils: {}, urlUtils: {}, settingsCache: {}});
|
||||
blogIcon.getIconDimensions(path.join(__dirname, '../../../utils/fixtures/images/favicon.png'))
|
||||
blogIcon.getIconDimensions(path.join(__dirname, '../../../../utils/fixtures/images/favicon.png'))
|
||||
.then(function (result) {
|
||||
should.exist(result);
|
||||
result.should.eql({
|
||||
|
@ -224,7 +224,7 @@ describe('lib/image: blog icon', function () {
|
|||
|
||||
it('[success] returns .ico dimensions for icon with multiple sizes', function (done) {
|
||||
const blogIcon = new BlogIcon({config: {}, i18n: {}, storageUtils: {}, urlUtils: {}, settingsCache: {}});
|
||||
blogIcon.getIconDimensions(path.join(__dirname, '../../../utils/fixtures/images/favicon_multi_sizes.ico'))
|
||||
blogIcon.getIconDimensions(path.join(__dirname, '../../../../utils/fixtures/images/favicon_multi_sizes.ico'))
|
||||
.then(function (result) {
|
||||
should.exist(result);
|
||||
result.should.eql({
|
||||
|
@ -240,7 +240,7 @@ describe('lib/image: blog icon', function () {
|
|||
t: key => key
|
||||
}, storageUtils: {}, urlUtils: {}, settingsCache: {}});
|
||||
|
||||
blogIcon.getIconDimensions(path.join(__dirname, '../../../utils/fixtures/images/favicon_multi_sizes_FILE_DOES_NOT_EXIST.ico'))
|
||||
blogIcon.getIconDimensions(path.join(__dirname, '../../../../utils/fixtures/images/favicon_multi_sizes_FILE_DOES_NOT_EXIST.ico'))
|
||||
.catch(function (error) {
|
||||
should.exist(error);
|
||||
error.message.should.eql('errors.utils.blogIcon.error');
|
|
@ -1,7 +1,7 @@
|
|||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
const Promise = require('bluebird');
|
||||
const CachedImageSizeFromUrl = require('../../../../core/server/lib/image/cached-image-size-from-url');
|
||||
const CachedImageSizeFromUrl = require('../../../../../core/server/lib/image/cached-image-size-from-url');
|
||||
|
||||
describe('lib/image: image size cache', function () {
|
||||
let sizeOfStub;
|
|
@ -1,5 +1,5 @@
|
|||
const should = require('should');
|
||||
const Gravatar = require('../../../../core/server/lib/image/gravatar');
|
||||
const Gravatar = require('../../../../../core/server/lib/image/gravatar');
|
||||
|
||||
describe('lib/image: gravatar', function () {
|
||||
it('can successfully lookup a gravatar url', function (done) {
|
|
@ -4,7 +4,7 @@ const nock = require('nock');
|
|||
const path = require('path');
|
||||
const errors = require('@tryghost/errors');
|
||||
const fs = require('fs');
|
||||
const ImageSize = require('../../../../core/server/lib/image/image-size');
|
||||
const ImageSize = require('../../../../../core/server/lib/image/image-size');
|
||||
|
||||
describe('lib/image: image size', function () {
|
||||
// use a 1x1 gif in nock responses because it's really small and easy to work with
|
||||
|
@ -138,7 +138,7 @@ describe('lib/image: image size', function () {
|
|||
}, urlUtils: {}, request: (requestUrl) => {
|
||||
if (requestUrl === url) {
|
||||
return Promise.resolve({
|
||||
body: fs.readFileSync(path.join(__dirname, '/../../../utils/fixtures/images/favicon_multi_sizes.ico'))
|
||||
body: fs.readFileSync(path.join(__dirname, '../../../../utils/fixtures/images/favicon_multi_sizes.ico'))
|
||||
});
|
||||
}
|
||||
return Promise.reject();
|
||||
|
@ -278,7 +278,7 @@ describe('lib/image: image size', function () {
|
|||
width: 100
|
||||
};
|
||||
|
||||
const storagePath = path.join(__dirname, '../../../../test/utils/fixtures/images/');
|
||||
const storagePath = path.join(__dirname, '../../../../utils/fixtures/images/');
|
||||
const urlForStub = sinon.stub();
|
||||
urlForStub.withArgs('image').returns('http://myblog.com/content/images/favicon.png');
|
||||
urlForStub.withArgs('home').returns('http://myblog.com/');
|
||||
|
@ -408,7 +408,7 @@ describe('lib/image: image size', function () {
|
|||
.get('/media/355241_d31358572a2542c5a44738ddcb59e7ea.jpg_256')
|
||||
.delayConnection(10)
|
||||
.reply(408);
|
||||
|
||||
|
||||
const imageSize = new ImageSize({config: {
|
||||
get: (key) => {
|
||||
if (key === 'times:getImageSizeTimeoutInMS') {
|
||||
|
@ -524,7 +524,7 @@ describe('lib/image: image size', function () {
|
|||
width: 800
|
||||
};
|
||||
|
||||
const storagePath = path.join(__dirname, '../../../../test/utils/fixtures/images/');
|
||||
const storagePath = path.join(__dirname, '../../../../utils/fixtures/images/');
|
||||
const urlForStub = sinon.stub();
|
||||
urlForStub.withArgs('image').returns('http://myblog.com/content/images/ghost-logo.png');
|
||||
urlForStub.withArgs('home').returns('http://myblog.com/');
|
||||
|
@ -567,7 +567,7 @@ describe('lib/image: image size', function () {
|
|||
width: 1010
|
||||
};
|
||||
|
||||
const storagePath = path.join(__dirname, '../../../../test/utils/fixtures/images/');
|
||||
const storagePath = path.join(__dirname, '../../../../utils/fixtures/images/');
|
||||
const urlForStub = sinon.stub();
|
||||
urlForStub.withArgs('image').returns('http://myblog.com/blog/content/images/favicon_too_large.png');
|
||||
urlForStub.withArgs('home').returns('http://myblog.com/');
|
||||
|
@ -610,7 +610,7 @@ describe('lib/image: image size', function () {
|
|||
width: 64
|
||||
};
|
||||
|
||||
const storagePath = path.join(__dirname, '../../../../test/utils/fixtures/images/');
|
||||
const storagePath = path.join(__dirname, '../../../../utils/fixtures/images/');
|
||||
const urlForStub = sinon.stub();
|
||||
urlForStub.withArgs('image').returns('http://myblog.com/content/images/favicon_multi_sizes.ico');
|
||||
urlForStub.withArgs('home').returns('http://myblog.com/');
|
||||
|
@ -653,7 +653,7 @@ describe('lib/image: image size', function () {
|
|||
width: 249
|
||||
};
|
||||
|
||||
const storagePath = path.join(__dirname, '../../../../test/utils/fixtures/images/');
|
||||
const storagePath = path.join(__dirname, '../../../../utils/fixtures/images/');
|
||||
const urlForStub = sinon.stub();
|
||||
urlForStub.withArgs('image').returns('http://myblog.com/content/images/ghosticon.webp');
|
||||
urlForStub.withArgs('home').returns('http://myblog.com/');
|
||||
|
@ -691,7 +691,7 @@ describe('lib/image: image size', function () {
|
|||
it('[failure] returns error if storage adapter errors', function (done) {
|
||||
const url = '/content/images/not-existing-image.png';
|
||||
|
||||
const storagePath = path.join(__dirname, '../../../../test/utils/fixtures/images/');
|
||||
const storagePath = path.join(__dirname, '../../../../utils/fixtures/images/');
|
||||
const urlForStub = sinon.stub();
|
||||
urlForStub.withArgs('image').returns('http://myblog.com/content/images/not-existing-image.png');
|
||||
urlForStub.withArgs('home').returns('http://myblog.com/');
|
|
@ -2,11 +2,11 @@ const path = require('path');
|
|||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
const nock = require('nock');
|
||||
const configUtils = require('../../utils/configUtils');
|
||||
const mobiledocLib = require('../../../core/server/lib/mobiledoc');
|
||||
const storage = require('../../../core/server/adapters/storage');
|
||||
const urlUtils = require('../../../core/shared/url-utils');
|
||||
const mockUtils = require('../../utils/mocks');
|
||||
const configUtils = require('../../../utils/configUtils');
|
||||
const mobiledocLib = require('../../../../core/server/lib/mobiledoc');
|
||||
const storage = require('../../../../core/server/adapters/storage');
|
||||
const urlUtils = require('../../../../core/shared/url-utils');
|
||||
const mockUtils = require('../../../utils/mocks');
|
||||
|
||||
describe('lib/mobiledoc', function () {
|
||||
afterEach(function () {
|
||||
|
@ -279,7 +279,7 @@ describe('lib/mobiledoc', function () {
|
|||
|
||||
beforeEach(function () {
|
||||
originalStoragePath = storage.getStorage().storagePath;
|
||||
storage.getStorage().storagePath = path.join(__dirname, '../../utils/fixtures/images/');
|
||||
storage.getStorage().storagePath = path.join(__dirname, '../../../utils/fixtures/images/');
|
||||
});
|
||||
|
||||
afterEach(function () {
|
||||
|
@ -299,7 +299,7 @@ describe('lib/mobiledoc', function () {
|
|||
const unsplashMock = nock('https://images.unsplash.com/')
|
||||
.get('/favicon_too_large')
|
||||
.query(true)
|
||||
.replyWithFile(200, path.join(__dirname, '../../utils/fixtures/images/favicon_not_square.png'), {
|
||||
.replyWithFile(200, path.join(__dirname, '../../../utils/fixtures/images/favicon_not_square.png'), {
|
||||
'Content-Type': 'image/png'
|
||||
});
|
||||
|
|
@ -2,8 +2,8 @@ const sinon = require('sinon');
|
|||
const should = require('should');
|
||||
const rewire = require('rewire');
|
||||
const nock = require('nock');
|
||||
const externalRequest = rewire('../../../core/server/lib/request-external');
|
||||
const configUtils = require('../../utils/configUtils');
|
||||
const externalRequest = rewire('../../../../core/server/lib/request-external');
|
||||
const configUtils = require('../../../utils/configUtils');
|
||||
|
||||
// for sinon stubs
|
||||
const dnsPromises = require('dns').promises;
|
|
@ -1,7 +1,7 @@
|
|||
const models = require('../../../core/server/models');
|
||||
const models = require('../../../../core/server/models');
|
||||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
const testUtils = require('../../utils');
|
||||
const testUtils = require('../../../utils');
|
||||
|
||||
describe('Unit: models/api_key', function () {
|
||||
before(models.init);
|
|
@ -1,7 +1,7 @@
|
|||
const errors = require('@tryghost/errors');
|
||||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
const models = require('../../../../core/server/models');
|
||||
const models = require('../../../../../core/server/models');
|
||||
|
||||
describe('Models: crud', function () {
|
||||
before(function () {
|
|
@ -4,9 +4,9 @@ const sinon = require('sinon');
|
|||
const _ = require('lodash');
|
||||
const Promise = require('bluebird');
|
||||
const security = require('@tryghost/security');
|
||||
const models = require('../../../../core/server/models');
|
||||
const urlUtils = require('../../../../core/shared/url-utils');
|
||||
const testUtils = require('../../../utils');
|
||||
const models = require('../../../../../core/server/models');
|
||||
const urlUtils = require('../../../../../core/shared/url-utils');
|
||||
const testUtils = require('../../../../utils');
|
||||
|
||||
describe('Models: base', function () {
|
||||
before(function () {
|
|
@ -1,9 +1,9 @@
|
|||
const should = require('should');
|
||||
const url = require('url');
|
||||
const sinon = require('sinon');
|
||||
const models = require('../../../core/server/models');
|
||||
const testUtils = require('../../utils');
|
||||
const {knex} = require('../../../core/server/data/db');
|
||||
const models = require('../../../../core/server/models');
|
||||
const testUtils = require('../../../utils');
|
||||
const {knex} = require('../../../../core/server/data/db');
|
||||
|
||||
describe('Unit: models/integration', function () {
|
||||
before(function () {
|
|
@ -1,8 +1,8 @@
|
|||
const errors = require('@tryghost/errors');
|
||||
const sinon = require('sinon');
|
||||
const Promise = require('bluebird');
|
||||
const models = require('../../../core/server/models');
|
||||
const settingsCache = require('../../../core/shared/settings-cache');
|
||||
const models = require('../../../../core/server/models');
|
||||
const settingsCache = require('../../../../core/shared/settings-cache');
|
||||
|
||||
describe('Unit: models/invite', function () {
|
||||
before(function () {
|
|
@ -1,6 +1,6 @@
|
|||
const sinon = require('sinon');
|
||||
const models = require('../../../core/server/models');
|
||||
const configUtils = require('../../utils/configUtils');
|
||||
const models = require('../../../../core/server/models');
|
||||
const configUtils = require('../../../utils/configUtils');
|
||||
|
||||
const config = configUtils.config;
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
const models = require('../../../core/server/models');
|
||||
const testUtils = require('../../utils');
|
||||
const configUtils = require('../../utils/configUtils');
|
||||
const models = require('../../../../core/server/models');
|
||||
const testUtils = require('../../../utils');
|
||||
const configUtils = require('../../../utils/configUtils');
|
||||
|
||||
describe('Unit: models/permission', function () {
|
||||
before(function () {
|
|
@ -2,10 +2,10 @@
|
|||
const errors = require('@tryghost/errors');
|
||||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
const testUtils = require('../../utils');
|
||||
const knex = require('../../../core/server/data/db').knex;
|
||||
const urlService = require('../../../core/frontend/services/url');
|
||||
const models = require('../../../core/server/models');
|
||||
const testUtils = require('../../../utils');
|
||||
const knex = require('../../../../core/server/data/db').knex;
|
||||
const urlService = require('../../../../core/frontend/services/url');
|
||||
const models = require('../../../../core/server/models');
|
||||
const security = require('@tryghost/security');
|
||||
|
||||
describe('Unit: models/post', function () {
|
|
@ -1,6 +1,6 @@
|
|||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
const models = require('../../../core/server/models');
|
||||
const models = require('../../../../core/server/models');
|
||||
|
||||
describe('Unit: models/session', function () {
|
||||
before(function () {
|
|
@ -1,9 +1,9 @@
|
|||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
const mockDb = require('mock-knex');
|
||||
const models = require('../../../core/server/models');
|
||||
const {knex} = require('../../../core/server/data/db');
|
||||
const events = require('../../../core/server/lib/common/events');
|
||||
const models = require('../../../../core/server/models');
|
||||
const {knex} = require('../../../../core/server/data/db');
|
||||
const events = require('../../../../core/server/lib/common/events');
|
||||
const errors = require('@tryghost/errors');
|
||||
|
||||
describe('Unit: models/settings', function () {
|
|
@ -1,4 +1,4 @@
|
|||
const models = require('../../../core/server/models');
|
||||
const models = require('../../../../core/server/models');
|
||||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
|
||||
|
@ -38,4 +38,3 @@ describe('Unit: models/single-use-token', function () {
|
|||
});
|
||||
});
|
||||
});
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
const should = require('should');
|
||||
const url = require('url');
|
||||
const sinon = require('sinon');
|
||||
const models = require('../../../core/server/models');
|
||||
const testUtils = require('../../utils');
|
||||
const {knex} = require('../../../core/server/data/db');
|
||||
const models = require('../../../../core/server/models');
|
||||
const testUtils = require('../../../utils');
|
||||
const {knex} = require('../../../../core/server/data/db');
|
||||
|
||||
describe('Unit: models/tag', function () {
|
||||
before(function () {
|
|
@ -2,11 +2,11 @@ const should = require('should');
|
|||
const sinon = require('sinon');
|
||||
const Promise = require('bluebird');
|
||||
const errors = require('@tryghost/errors');
|
||||
const models = require('../../../core/server/models');
|
||||
const permissions = require('../../../core/server/services/permissions');
|
||||
const schema = require('../../../core/server/data/schema');
|
||||
const models = require('../../../../core/server/models');
|
||||
const permissions = require('../../../../core/server/services/permissions');
|
||||
const schema = require('../../../../core/server/data/schema');
|
||||
const security = require('@tryghost/security');
|
||||
const testUtils = require('../../utils');
|
||||
const testUtils = require('../../../utils');
|
||||
|
||||
describe('Unit: models/user', function () {
|
||||
before(function () {
|
|
@ -2,8 +2,8 @@ const errors = require('@tryghost/errors');
|
|||
const jwt = require('jsonwebtoken');
|
||||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
const apiKeyAuth = require('../../../../../core/server/services/auth/api-key');
|
||||
const models = require('../../../../../core/server/models');
|
||||
const apiKeyAuth = require('../../../../../../core/server/services/auth/api-key');
|
||||
const models = require('../../../../../../core/server/models');
|
||||
|
||||
describe('Admin API Key Auth', function () {
|
||||
before(models.init);
|
|
@ -1,9 +1,9 @@
|
|||
const errors = require('@tryghost/errors');
|
||||
const {authenticateContentApiKey} = require('../../../../../core/server/services/auth/api-key/content');
|
||||
const models = require('../../../../../core/server/models');
|
||||
const {authenticateContentApiKey} = require('../../../../../../core/server/services/auth/api-key/content');
|
||||
const models = require('../../../../../../core/server/models');
|
||||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
const testUtils = require('../../../../utils');
|
||||
const testUtils = require('../../../../../utils');
|
||||
|
||||
describe('Content API Key Auth', function () {
|
||||
before(models.init);
|
|
@ -1,7 +1,7 @@
|
|||
const jwt = require('jsonwebtoken');
|
||||
const should = require('should');
|
||||
const {UnauthorizedError} = require('@tryghost/errors');
|
||||
const members = require('../../../../../core/server/services/auth/members');
|
||||
const members = require('../../../../../../core/server/services/auth/members');
|
||||
|
||||
describe('Auth Service - Members', function () {
|
||||
it('exports an authenticateMembersToken method', function () {
|
|
@ -1,5 +1,5 @@
|
|||
const sessionMiddleware = require('../../../../../core/server/services/auth').session;
|
||||
const models = require('../../../../../core/server/models');
|
||||
const sessionMiddleware = require('../../../../../../core/server/services/auth').session;
|
||||
const models = require('../../../../../../core/server/models');
|
||||
const sinon = require('sinon');
|
||||
const should = require('should');
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
const SessionStore = require('../../../../../core/server/services/auth/session/store');
|
||||
const models = require('../../../../../core/server/models');
|
||||
const SessionStore = require('../../../../../../core/server/services/auth/session/store');
|
||||
const models = require('../../../../../../core/server/models');
|
||||
const EventEmitter = require('events');
|
||||
const {Store} = require('express-session');
|
||||
const sinon = require('sinon');
|
|
@ -1,9 +1,9 @@
|
|||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
|
||||
const configUtils = require('../../utils/configUtils');
|
||||
const labs = require('../../../core/shared/labs');
|
||||
const settingsCache = require('../../../core/shared/settings-cache');
|
||||
const configUtils = require('../../../utils/configUtils');
|
||||
const labs = require('../../../../core/shared/labs');
|
||||
const settingsCache = require('../../../../core/shared/settings-cache');
|
||||
|
||||
describe('Labs Service', function () {
|
||||
afterEach(function () {
|
|
@ -1,11 +1,11 @@
|
|||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
const Promise = require('bluebird');
|
||||
const mail = require('../../../../core/server/services/mail');
|
||||
const settingsCache = require('../../../../core/shared/settings-cache');
|
||||
const configUtils = require('../../../utils/configUtils');
|
||||
const urlUtils = require('../../../../core/shared/url-utils');
|
||||
const i18n = require('../../../../core/shared/i18n');
|
||||
const mail = require('../../../../../core/server/services/mail');
|
||||
const settingsCache = require('../../../../../core/shared/settings-cache');
|
||||
const configUtils = require('../../../../utils/configUtils');
|
||||
const urlUtils = require('../../../../../core/shared/url-utils');
|
||||
const i18n = require('../../../../../core/shared/i18n');
|
||||
let mailer;
|
||||
|
||||
// Mock SMTP config
|
|
@ -1,7 +1,7 @@
|
|||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
const mail = require('../../../../core/server/services/mail');
|
||||
const configUtils = require('../../../utils/configUtils');
|
||||
const mail = require('../../../../../core/server/services/mail');
|
||||
const configUtils = require('../../../../utils/configUtils');
|
||||
|
||||
describe('Mail: Utils', function () {
|
||||
const scope = {ghostMailer: null};
|
|
@ -2,7 +2,7 @@ const should = require('should');
|
|||
const sinon = require('sinon');
|
||||
const errors = require('@tryghost/errors');
|
||||
|
||||
const {addEmail, _partitionMembersBySegment, _getEmailMemberRows, _transformEmailRecipientFilter} = require('../../../../core/server/services/mega/mega');
|
||||
const {addEmail, _partitionMembersBySegment, _getEmailMemberRows, _transformEmailRecipientFilter} = require('../../../../../core/server/services/mega/mega');
|
||||
|
||||
describe('MEGA', function () {
|
||||
describe('addEmail', function () {
|
|
@ -1,6 +1,6 @@
|
|||
const should = require('should');
|
||||
|
||||
const {parseReplacements, renderEmailForSegment} = require('../../../../core/server/services/mega/post-email-serializer');
|
||||
const {parseReplacements, renderEmailForSegment} = require('../../../../../core/server/services/mega/post-email-serializer');
|
||||
|
||||
describe('Post Email Serializer', function () {
|
||||
it('creates replacement pattern for valid format and value', function () {
|
|
@ -1,6 +1,6 @@
|
|||
const should = require('should');
|
||||
|
||||
const {getSegmentsFromHtml} = require('../../../../core/server/services/mega/segment-parser');
|
||||
const {getSegmentsFromHtml} = require('../../../../../core/server/services/mega/segment-parser');
|
||||
|
||||
describe('MEGA: Segment Parser', function () {
|
||||
it('extracts a single segments used in HTML', function () {
|
|
@ -1,8 +1,8 @@
|
|||
const should = require('should');
|
||||
const UrlUtils = require('@tryghost/url-utils');
|
||||
const MembersConfigProvider = require('../../../../core/server/services/members/config');
|
||||
const MembersConfigProvider = require('../../../../../core/server/services/members/config');
|
||||
|
||||
const configUtils = require('../../../utils/configUtils');
|
||||
const configUtils = require('../../../../utils/configUtils');
|
||||
const sinon = require('sinon');
|
||||
|
||||
/**
|
|
@ -1,10 +1,10 @@
|
|||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
|
||||
const urlUtils = require('../../../../core/shared/url-utils');
|
||||
const membersService = require('../../../../core/server/services/members');
|
||||
const membersMiddleware = require('../../../../core/server/services/members/middleware');
|
||||
const settingsCache = require('../../../../core/shared/settings-cache');
|
||||
const urlUtils = require('../../../../../core/shared/url-utils');
|
||||
const membersService = require('../../../../../core/server/services/members');
|
||||
const membersMiddleware = require('../../../../../core/server/services/members/middleware');
|
||||
const settingsCache = require('../../../../../core/shared/settings-cache');
|
||||
|
||||
describe('Members Service Middleware', function () {
|
||||
describe('createSessionFromMagicLink', function () {
|
|
@ -1,5 +1,5 @@
|
|||
const should = require('should');
|
||||
const stripeConnect = require('../../../../core/server/services/members/stripe-connect');
|
||||
const stripeConnect = require('../../../../../core/server/services/members/stripe-connect');
|
||||
|
||||
describe('Members - Stripe Connect', function () {
|
||||
it('getStripeConnectOAuthUrl returns the correct url and sets the necessary state on session and url', async function () {
|
|
@ -1,8 +1,8 @@
|
|||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
|
||||
const Notifications = require('../../../../core/server/services/notifications/notifications');
|
||||
const {owner} = require('../../../utils/fixtures/context');
|
||||
const Notifications = require('../../../../../core/server/services/notifications/notifications');
|
||||
const {owner} = require('../../../../utils/fixtures/context');
|
||||
|
||||
describe('Notifications Service', function () {
|
||||
it('can browse non-major version upgrade notifications', function () {
|
|
@ -1,11 +1,11 @@
|
|||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
const testUtils = require('../../../utils');
|
||||
const testUtils = require('../../../../utils');
|
||||
const Promise = require('bluebird');
|
||||
const _ = require('lodash');
|
||||
const models = require('../../../../core/server/models');
|
||||
const permissions = require('../../../../core/server/services/permissions');
|
||||
const providers = require('../../../../core/server/services/permissions/providers');
|
||||
const models = require('../../../../../core/server/models');
|
||||
const permissions = require('../../../../../core/server/services/permissions');
|
||||
const providers = require('../../../../../core/server/services/permissions/providers');
|
||||
|
||||
describe('Permissions', function () {
|
||||
let fakePermissions = [];
|
|
@ -1,11 +1,11 @@
|
|||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
const testUtils = require('../../../utils');
|
||||
const testUtils = require('../../../../utils');
|
||||
const Promise = require('bluebird');
|
||||
const _ = require('lodash');
|
||||
const models = require('../../../../core/server/models');
|
||||
const actionsMap = require('../../../../core/server/services/permissions/actions-map-cache');
|
||||
const permissions = require('../../../../core/server/services/permissions');
|
||||
const models = require('../../../../../core/server/models');
|
||||
const actionsMap = require('../../../../../core/server/services/permissions/actions-map-cache');
|
||||
const permissions = require('../../../../../core/server/services/permissions');
|
||||
|
||||
describe('Permissions', function () {
|
||||
let fakePermissions = [];
|
|
@ -1,5 +1,5 @@
|
|||
const should = require('should');
|
||||
const parseContext = require('../../../../core/server/services/permissions/parse-context');
|
||||
const parseContext = require('../../../../../core/server/services/permissions/parse-context');
|
||||
|
||||
describe('Permissions', function () {
|
||||
describe('parseContext', function () {
|
|
@ -1,9 +1,9 @@
|
|||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
const testUtils = require('../../../utils');
|
||||
const testUtils = require('../../../../utils');
|
||||
const Promise = require('bluebird');
|
||||
const models = require('../../../../core/server/models');
|
||||
const providers = require('../../../../core/server/services/permissions/providers');
|
||||
const models = require('../../../../../core/server/models');
|
||||
const providers = require('../../../../../core/server/services/permissions/providers');
|
||||
|
||||
describe('Permission Providers', function () {
|
||||
before(function () {
|
|
@ -1,7 +1,7 @@
|
|||
const should = require('should');
|
||||
const _ = require('lodash');
|
||||
const errors = require('@tryghost/errors');
|
||||
const applyPublicRules = require('../../../../core/server/services/permissions/public');
|
||||
const applyPublicRules = require('../../../../../core/server/services/permissions/public');
|
||||
|
||||
describe('Permissions', function () {
|
||||
describe('applyPublicRules', function () {
|
|
@ -1,6 +1,6 @@
|
|||
const should = require('should');
|
||||
|
||||
const {PostsService} = require('../../../../core/server/services/posts/posts-service');
|
||||
const {PostsService} = require('../../../../../core/server/services/posts/posts-service');
|
||||
|
||||
describe('PostsService', function () {
|
||||
describe('shouldSendEmail', function () {
|
|
@ -1,6 +1,6 @@
|
|||
const should = require('should');
|
||||
|
||||
const {validate} = require('../../../../core/server/services/redirects/validation');
|
||||
const {validate} = require('../../../../../core/server/services/redirects/validation');
|
||||
|
||||
describe('UNIT: custom redirects validation', function () {
|
||||
it('passes validation for a valid redirects config', function () {
|
|
@ -2,7 +2,7 @@ const sinon = require('sinon');
|
|||
const should = require('should');
|
||||
const fs = require('fs-extra');
|
||||
const path = require('path');
|
||||
const DefaultSettingsManager = require('../../../../core/server/services/route-settings/default-settings-manager');
|
||||
const DefaultSettingsManager = require('../../../../../core/server/services/route-settings/default-settings-manager');
|
||||
|
||||
describe('UNIT > Settings Service DefaultSettingsManager:', function () {
|
||||
beforeEach(function () {
|
||||
|
@ -16,12 +16,12 @@ describe('UNIT > Settings Service DefaultSettingsManager:', function () {
|
|||
|
||||
describe('Ensure settings files', function () {
|
||||
it('returns yaml file from settings folder if it exists', async function () {
|
||||
fs.readFile.withArgs(path.join(__dirname, '../../../utils/fixtures/settings/routes.yaml'), 'utf8').resolves('content');
|
||||
fs.readFile.withArgs(path.join(__dirname, '../../../../utils/fixtures/settings/routes.yaml'), 'utf8').resolves('content');
|
||||
|
||||
const defaultSettingsManager = new DefaultSettingsManager({
|
||||
type: 'routes',
|
||||
extension: '.yaml',
|
||||
destinationFolderPath: path.join(__dirname, '../../../utils/fixtures/settings/'),
|
||||
destinationFolderPath: path.join(__dirname, '../../../../utils/fixtures/settings/'),
|
||||
sourceFolderPath: ''
|
||||
});
|
||||
|
||||
|
@ -32,8 +32,8 @@ describe('UNIT > Settings Service DefaultSettingsManager:', function () {
|
|||
});
|
||||
|
||||
it('copies default settings file if no file found', async function () {
|
||||
const destinationFolderPath = path.join(__dirname, '../../../utils/fixtures/settings/');
|
||||
const sourceFolderPath = path.join(__dirname, '../../../../core/server/services/route-settings/');
|
||||
const destinationFolderPath = path.join(__dirname, '../../../../utils/fixtures/settings/');
|
||||
const sourceFolderPath = path.join(__dirname, '../../../../../core/server/services/route-settings/');
|
||||
|
||||
const defaultSettingsManager = new DefaultSettingsManager({
|
||||
type: 'routes',
|
||||
|
@ -56,7 +56,7 @@ describe('UNIT > Settings Service DefaultSettingsManager:', function () {
|
|||
});
|
||||
|
||||
it('rejects, if error is not a not found error', async function () {
|
||||
const destinationFolderPath = path.join(__dirname, '../../../utils/fixtures/settings/');
|
||||
const destinationFolderPath = path.join(__dirname, '../../../../utils/fixtures/settings/');
|
||||
|
||||
const defaultSettingsManager = new DefaultSettingsManager({
|
||||
type: 'routes',
|
|
@ -3,13 +3,13 @@ const should = require('should');
|
|||
const rewire = require('rewire');
|
||||
const fs = require('fs-extra');
|
||||
const path = require('path');
|
||||
const configUtils = require('../../../utils/configUtils');
|
||||
const configUtils = require('../../../../utils/configUtils');
|
||||
const errors = require('@tryghost/errors');
|
||||
const SettingsLoader = rewire('../../../../core/server/services/route-settings/settings-loader');
|
||||
const SettingsLoader = rewire('../../../../../core/server/services/route-settings/settings-loader');
|
||||
|
||||
describe('UNIT > SettingsLoader:', function () {
|
||||
beforeEach(function () {
|
||||
configUtils.set('paths:contentPath', path.join(__dirname, '../../../utils/fixtures/'));
|
||||
configUtils.set('paths:contentPath', path.join(__dirname, '../../../../utils/fixtures/'));
|
||||
});
|
||||
|
||||
afterEach(function () {
|
||||
|
@ -64,7 +64,7 @@ describe('UNIT > SettingsLoader:', function () {
|
|||
|
||||
it('can find yaml settings file and returns a settings object', function () {
|
||||
const fsReadFileSpy = sinon.spy(fs, 'readFileSync');
|
||||
const expectedSettingsFile = path.join(__dirname, '../../../utils/fixtures/settings/routes.yaml');
|
||||
const expectedSettingsFile = path.join(__dirname, '../../../../utils/fixtures/settings/routes.yaml');
|
||||
|
||||
yamlParserStub.returns(yamlStubFile);
|
||||
validateStub.returns({routes: {}, collections: {}, taxonomies: {}});
|
||||
|
@ -105,7 +105,7 @@ describe('UNIT > SettingsLoader:', function () {
|
|||
});
|
||||
|
||||
it('throws error if file can\'t be accessed', function (done) {
|
||||
const expectedSettingsFile = path.join(__dirname, '../../../utils/fixtures/settings/routes.yaml');
|
||||
const expectedSettingsFile = path.join(__dirname, '../../../../utils/fixtures/settings/routes.yaml');
|
||||
const fsError = new Error('no permission');
|
||||
fsError.code = 'EPERM';
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
const errors = require('@tryghost/errors');
|
||||
const themeEngine = require('../../../../core/frontend/services/theme-engine');
|
||||
const validate = require('../../../../core/server/services/route-settings/validate');
|
||||
const themeEngine = require('../../../../../core/frontend/services/theme-engine');
|
||||
const validate = require('../../../../../core/server/services/route-settings/validate');
|
||||
|
||||
should.equal(true, true);
|
||||
|
|
@ -3,7 +3,7 @@ const should = require('should');
|
|||
const fs = require('fs-extra');
|
||||
const yaml = require('js-yaml');
|
||||
const path = require('path');
|
||||
const yamlParser = require('../../../../core/server/services/route-settings/yaml-parser');
|
||||
const yamlParser = require('../../../../../core/server/services/route-settings/yaml-parser');
|
||||
|
||||
describe('UNIT > Settings Service yaml parser:', function () {
|
||||
let yamlSpy;
|
||||
|
@ -18,7 +18,7 @@ describe('UNIT > Settings Service yaml parser:', function () {
|
|||
|
||||
describe('Yaml Parser', function () {
|
||||
it('parses correct yaml file', function () {
|
||||
const file = fs.readFileSync(path.join(__dirname, '../../../utils/fixtures/settings/', 'goodroutes.yaml'), 'utf8');
|
||||
const file = fs.readFileSync(path.join(__dirname, '../../../../utils/fixtures/settings/', 'goodroutes.yaml'), 'utf8');
|
||||
|
||||
const result = yamlParser(file);
|
||||
should.exist(result);
|
||||
|
@ -27,7 +27,7 @@ describe('UNIT > Settings Service yaml parser:', function () {
|
|||
});
|
||||
|
||||
it('rejects with clear error when parsing fails', function () {
|
||||
const file = fs.readFileSync(path.join(__dirname, '../../../utils/fixtures/settings/', 'badroutes.yaml'), 'utf8');
|
||||
const file = fs.readFileSync(path.join(__dirname, '../../../../utils/fixtures/settings/', 'badroutes.yaml'), 'utf8');
|
||||
|
||||
try {
|
||||
const result = yamlParser(file);
|
|
@ -1,18 +1,18 @@
|
|||
const sinon = require('sinon');
|
||||
const _ = require('lodash');
|
||||
const rewire = require('rewire');
|
||||
const testUtils = require('../../utils');
|
||||
const configUtils = require('../../utils/configUtils');
|
||||
const testUtils = require('../../../utils');
|
||||
const configUtils = require('../../../utils/configUtils');
|
||||
|
||||
// Stuff we test
|
||||
const slack = rewire('../../../core/server/services/slack');
|
||||
const slack = rewire('../../../../core/server/services/slack');
|
||||
|
||||
const events = require('../../../core/server/lib/common/events');
|
||||
const events = require('../../../../core/server/lib/common/events');
|
||||
const logging = require('@tryghost/logging');
|
||||
const imageLib = require('../../../core/server/lib/image');
|
||||
const urlService = require('../../../core/frontend/services/url');
|
||||
const schema = require('../../../core/server/data/schema').checks;
|
||||
const settingsCache = require('../../../core/shared/settings-cache');
|
||||
const imageLib = require('../../../../core/server/lib/image');
|
||||
const urlService = require('../../../../core/frontend/services/url');
|
||||
const schema = require('../../../../core/server/data/schema').checks;
|
||||
const settingsCache = require('../../../../core/shared/settings-cache');
|
||||
|
||||
// Test data
|
||||
const slackURL = 'https://hooks.slack.com/services/a-b-c-d';
|
|
@ -1,7 +1,7 @@
|
|||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
|
||||
const {getConfig} = require('../../../../core/server/services/stripe/config');
|
||||
const {getConfig} = require('../../../../../core/server/services/stripe/config');
|
||||
|
||||
describe('Stripe - config', function () {
|
||||
it('Uses direct keys when stripeDirect is true, regardles of which keys exist', function () {
|
|
@ -1,7 +1,7 @@
|
|||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
const _ = require('lodash');
|
||||
const themeList = require('../../../../core/server/services/themes/list');
|
||||
const themeList = require('../../../../../core/server/services/themes/list');
|
||||
|
||||
describe('Themes', function () {
|
||||
afterEach(function () {
|
|
@ -3,9 +3,9 @@ const sinon = require('sinon');
|
|||
const fs = require('fs-extra');
|
||||
const tmp = require('tmp');
|
||||
const join = require('path').join;
|
||||
const config = require('../../../../core/shared/config');
|
||||
const loader = require('../../../../core/server/services/themes/loader');
|
||||
const themeList = require('../../../../core/server/services/themes/list');
|
||||
const config = require('../../../../../core/shared/config');
|
||||
const loader = require('../../../../../core/server/services/themes/loader');
|
||||
const themeList = require('../../../../../core/server/services/themes/list');
|
||||
|
||||
describe('Themes', function () {
|
||||
afterEach(function () {
|
|
@ -2,7 +2,7 @@ const should = require('should');
|
|||
const sinon = require('sinon');
|
||||
const _ = require('lodash');
|
||||
|
||||
const validate = require('../../../../core/server/services/themes/validate');
|
||||
const validate = require('../../../../../core/server/services/themes/validate');
|
||||
|
||||
const gscan = require('gscan');
|
||||
|
|
@ -2,10 +2,10 @@ const sinon = require('sinon');
|
|||
const _ = require('lodash');
|
||||
const nock = require('nock');
|
||||
const rewire = require('rewire');
|
||||
const testUtils = require('../../utils');
|
||||
const configUtils = require('../../utils/configUtils');
|
||||
const xmlrpc = rewire('../../../core/server/services/xmlrpc');
|
||||
const events = require('../../../core/server/lib/common/events');
|
||||
const testUtils = require('../../../utils');
|
||||
const configUtils = require('../../../utils/configUtils');
|
||||
const xmlrpc = rewire('../../../../core/server/services/xmlrpc');
|
||||
const events = require('../../../../core/server/lib/common/events');
|
||||
const logging = require('@tryghost/logging');
|
||||
|
||||
describe('XMLRPC', function () {
|
|
@ -1,7 +1,7 @@
|
|||
require('should');
|
||||
const sinon = require('sinon');
|
||||
const configUtils = require('../../../utils/configUtils');
|
||||
const controller = require('../../../../core/server/web/admin/controller');
|
||||
const configUtils = require('../../../../utils/configUtils');
|
||||
const controller = require('../../../../../core/server/web/admin/controller');
|
||||
|
||||
describe('Admin App', function () {
|
||||
describe('controller', function () {
|
|
@ -2,7 +2,7 @@ const should = require('should');
|
|||
const sinon = require('sinon');
|
||||
|
||||
// Thing we are testing
|
||||
const redirectAdminUrls = require('../../../../core/server/web/admin/middleware')[0];
|
||||
const redirectAdminUrls = require('../../../../../core/server/web/admin/middleware')[0];
|
||||
|
||||
describe('Admin App', function () {
|
||||
afterEach(function () {
|
|
@ -1,5 +1,5 @@
|
|||
const should = require('should');
|
||||
const middleware = require('../../../../../../core/server/web/api/canary/content/middleware');
|
||||
const middleware = require('../../../../../../../core/server/web/api/canary/content/middleware');
|
||||
|
||||
describe('Content Api canary middleware', function () {
|
||||
it('exports an authenticatePublic middleware', function () {
|
||||
|
@ -9,7 +9,7 @@ describe('Content Api canary middleware', function () {
|
|||
describe('authenticatePublic', function () {
|
||||
it('uses brute content api middleware as the first middleware in the chain', function () {
|
||||
const firstMiddleware = middleware.authenticatePublic[0];
|
||||
const brute = require('../../../../../../core/server/web/shared/middlewares/brute');
|
||||
const brute = require('../../../../../../../core/server/web/shared/middlewares/brute');
|
||||
|
||||
should.equal(firstMiddleware, brute.contentApiKey);
|
||||
});
|
|
@ -1,9 +1,9 @@
|
|||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
const rewire = require('rewire');
|
||||
const configUtils = require('../../../../utils/configUtils');
|
||||
const configUtils = require('../../../../../utils/configUtils');
|
||||
|
||||
let cors = rewire('../../../../../core/server/web/api/middleware/cors');
|
||||
let cors = rewire('../../../../../../core/server/web/api/middleware/cors');
|
||||
|
||||
describe('cors', function () {
|
||||
let res;
|
||||
|
@ -33,7 +33,7 @@ describe('cors', function () {
|
|||
afterEach(function () {
|
||||
sinon.restore();
|
||||
configUtils.restore();
|
||||
cors = rewire('../../../../../core/server/web/api/middleware/cors');
|
||||
cors = rewire('../../../../../../core/server/web/api/middleware/cors');
|
||||
});
|
||||
|
||||
it('should not be enabled without a request origin header', function (done) {
|
|
@ -1,9 +1,9 @@
|
|||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
const configUtils = require('../../../../utils/configUtils');
|
||||
const configUtils = require('../../../../../utils/configUtils');
|
||||
const imageTransform = require('@tryghost/image-transform');
|
||||
const logging = require('@tryghost/logging');
|
||||
const normalize = require('../../../../../core/server/web/api/middleware/normalize-image');
|
||||
const normalize = require('../../../../../../core/server/web/api/middleware/normalize-image');
|
||||
|
||||
describe('normalize', function () {
|
||||
let res;
|
|
@ -1,7 +1,7 @@
|
|||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
const constants = require('@tryghost/constants');
|
||||
const updateUserLastSeenMiddleware = require('../../../../../core/server/web/api/middleware/update-user-last-seen');
|
||||
const updateUserLastSeenMiddleware = require('../../../../../../core/server/web/api/middleware/update-user-last-seen');
|
||||
|
||||
describe('updateUserLastSeenMiddleware', function () {
|
||||
afterEach(function () {
|
|
@ -1,5 +1,5 @@
|
|||
const should = require('should');
|
||||
const validation = require('../../../../../core/server/web/api/middleware/upload')._test;
|
||||
const validation = require('../../../../../../core/server/web/api/middleware/upload')._test;
|
||||
|
||||
describe('web utils', function () {
|
||||
describe('checkFileExists', function () {
|
|
@ -1,6 +1,6 @@
|
|||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
const versionMatch = require('../../../../../core/server/web/api/middleware/version-match');
|
||||
const versionMatch = require('../../../../../../core/server/web/api/middleware/version-match');
|
||||
|
||||
describe('Version Mismatch', function () {
|
||||
let req;
|
|
@ -1,5 +1,5 @@
|
|||
const should = require('should');
|
||||
const middleware = require('../../../../../../core/server/web/api/v2/content/middleware');
|
||||
const middleware = require('../../../../../../../core/server/web/api/v2/content/middleware');
|
||||
|
||||
describe('Content Api v2 middleware', function () {
|
||||
it('exports an authenticatePublic middleware', function () {
|
||||
|
@ -9,7 +9,7 @@ describe('Content Api v2 middleware', function () {
|
|||
describe('authenticatePublic', function () {
|
||||
it('uses brute content api middleware as the first middleware in the chain', function () {
|
||||
const firstMiddleware = middleware.authenticatePublic[0];
|
||||
const brute = require('../../../../../../core/server/web/shared/middlewares/brute');
|
||||
const brute = require('../../../../../../../core/server/web/shared/middlewares/brute');
|
||||
|
||||
should.equal(firstMiddleware, brute.contentApiKey);
|
||||
});
|
|
@ -1,5 +1,5 @@
|
|||
const should = require('should');
|
||||
const middleware = require('../../../../../../core/server/web/api/v3/content/middleware');
|
||||
const middleware = require('../../../../../../../core/server/web/api/v3/content/middleware');
|
||||
|
||||
describe('Content Api v3 middleware', function () {
|
||||
it('exports an authenticatePublic middleware', function () {
|
||||
|
@ -9,7 +9,7 @@ describe('Content Api v3 middleware', function () {
|
|||
describe('authenticatePublic', function () {
|
||||
it('uses brute content api middleware as the first middleware in the chain', function () {
|
||||
const firstMiddleware = middleware.authenticatePublic[0];
|
||||
const brute = require('../../../../../../core/server/web/shared/middlewares/brute');
|
||||
const brute = require('../../../../../../../core/server/web/shared/middlewares/brute');
|
||||
|
||||
should.equal(firstMiddleware, brute.contentApiKey);
|
||||
});
|
|
@ -1,7 +1,7 @@
|
|||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
const ghostLocals = require('../../../../../core/server/web/parent/middleware/ghost-locals');
|
||||
const bridge = require('../../../../../core/bridge');
|
||||
const ghostLocals = require('../../../../../../core/server/web/parent/middleware/ghost-locals');
|
||||
const bridge = require('../../../../../../core/bridge');
|
||||
|
||||
describe('Theme Handler', function () {
|
||||
let req;
|
|
@ -2,7 +2,7 @@ const should = require('should');
|
|||
const sinon = require('sinon');
|
||||
const validator = require('@tryghost/validator');
|
||||
|
||||
const requestId = require('../../../../../core/server/web/parent/middleware/request-id');
|
||||
const requestId = require('../../../../../../core/server/web/parent/middleware/request-id');
|
||||
|
||||
describe('Request ID middleware', function () {
|
||||
let res;
|
|
@ -1,7 +1,7 @@
|
|||
const should = require('should');
|
||||
const configUtils = require('../../../utils/configUtils');
|
||||
const configUtils = require('../../../../utils/configUtils');
|
||||
|
||||
const vhostUtils = require('../../../../core/server/web/parent/vhost-utils');
|
||||
const vhostUtils = require('../../../../../core/server/web/parent/vhost-utils');
|
||||
|
||||
describe('vhost utils', function () {
|
||||
beforeEach(function () {
|
|
@ -1,5 +1,5 @@
|
|||
const should = require('should');
|
||||
const spamPrevention = require('../../../../../../core/server/web/shared/middlewares/api/spam-prevention');
|
||||
const spamPrevention = require('../../../../../../../core/server/web/shared/middlewares/api/spam-prevention');
|
||||
|
||||
describe('Spam Prevention', function () {
|
||||
it('exports a contentApiKey method', function () {
|
|
@ -1,6 +1,6 @@
|
|||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
const brute = require('../../../../../core/server/web/shared/middlewares/brute');
|
||||
const brute = require('../../../../../../core/server/web/shared/middlewares/brute');
|
||||
|
||||
describe('brute middleware', function () {
|
||||
after(function () {
|
||||
|
@ -13,7 +13,7 @@ describe('brute middleware', function () {
|
|||
|
||||
describe('contentApiKey', function () {
|
||||
it('calls the contentApiKey method of spam prevention', function () {
|
||||
const spamPrevention = require('../../../../../core/server/web/shared/middlewares/api/spam-prevention');
|
||||
const spamPrevention = require('../../../../../../core/server/web/shared/middlewares/api/spam-prevention');
|
||||
const contentApiKeyStub = sinon.stub(spamPrevention, 'contentApiKey');
|
||||
|
||||
// CASE: we don't care about what params it takes
|
|
@ -1,6 +1,6 @@
|
|||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
const cacheControl = require('../../../../../core/server/web/shared/middlewares/cache-control');
|
||||
const cacheControl = require('../../../../../../core/server/web/shared/middlewares/cache-control');
|
||||
|
||||
describe('Middleware: cacheControl', function () {
|
||||
let res;
|
|
@ -4,7 +4,7 @@ const rewire = require('rewire');
|
|||
const express = require('express');
|
||||
const supertest = require('supertest');
|
||||
|
||||
const customRedirects = rewire('../../../../../core/server/web/shared/middlewares/custom-redirects');
|
||||
const customRedirects = rewire('../../../../../../core/server/web/shared/middlewares/custom-redirects');
|
||||
const registerRoutes = customRedirects.__get__('_private.registerRoutes');
|
||||
|
||||
describe('UNIT: custom redirects', function () {
|
|
@ -1,6 +1,6 @@
|
|||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
const uncapitalise = require('../../../../../core/server/web/shared/middlewares/uncapitalise');
|
||||
const uncapitalise = require('../../../../../../core/server/web/shared/middlewares/uncapitalise');
|
||||
|
||||
// NOTE: all urls will have had trailing slashes added before uncapitalise is called
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
const rewire = require('rewire');
|
||||
const urlUtils = require('../../../../utils/urlUtils');
|
||||
const configUtils = require('../../../../utils/configUtils');
|
||||
const urlRedirects = rewire('../../../../../core/server/web/shared/middlewares/url-redirects');
|
||||
const urlUtils = require('../../../../../utils/urlUtils');
|
||||
const configUtils = require('../../../../../utils/configUtils');
|
||||
const urlRedirects = rewire('../../../../../../core/server/web/shared/middlewares/url-redirects');
|
||||
const {frontendSSLRedirect, adminSSLAndHostRedirect} = urlRedirects;
|
||||
const getAdminRedirectUrl = urlRedirects.__get__('_private.getAdminRedirectUrl');
|
||||
const getFrontendRedirectUrl = urlRedirects.__get__('_private.getFrontendRedirectUrl');
|
|
@ -1,8 +1,8 @@
|
|||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
const storage = require('../../../../../core/server/adapters/storage');
|
||||
const activeTheme = require('../../../../../core/frontend/services/theme-engine/active');
|
||||
const handleImageSizes = require('../../../../../core/server/web/site/middleware/handle-image-sizes.js');
|
||||
const storage = require('../../../../../../core/server/adapters/storage');
|
||||
const activeTheme = require('../../../../../../core/frontend/services/theme-engine/active');
|
||||
const handleImageSizes = require('../../../../../../core/server/web/site/middleware/handle-image-sizes.js');
|
||||
|
||||
// @TODO make these tests lovely and non specific to implementation
|
||||
describe('handleImageSizes middleware', function () {
|
|
@ -1,10 +1,10 @@
|
|||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
const express = require('../../../../../core/shared/express');
|
||||
const serveFavicon = require('../../../../../core/server/web/site/middleware/serve-favicon');
|
||||
const settingsCache = require('../../../../../core/shared/settings-cache');
|
||||
const storage = require('../../../../../core/server/adapters/storage');
|
||||
const configUtils = require('../../../../utils/configUtils');
|
||||
const express = require('../../../../../../core/shared/express');
|
||||
const serveFavicon = require('../../../../../../core/server/web/site/middleware/serve-favicon');
|
||||
const settingsCache = require('../../../../../../core/shared/settings-cache');
|
||||
const storage = require('../../../../../../core/server/adapters/storage');
|
||||
const configUtils = require('../../../../../utils/configUtils');
|
||||
const path = require('path');
|
||||
|
||||
describe('Serve Favicon', function () {
|
||||
|
@ -55,7 +55,7 @@ describe('Serve Favicon', function () {
|
|||
const middleware = serveFavicon();
|
||||
req.path = '/favicon.png';
|
||||
|
||||
storage.getStorage().storagePath = path.join(__dirname, '../../../../../test/utils/fixtures/images/');
|
||||
storage.getStorage().storagePath = path.join(__dirname, '../../../../../utils/fixtures/images/');
|
||||
localSettingsCache.icon = 'favicon.png';
|
||||
|
||||
res = {
|
||||
|
@ -75,7 +75,7 @@ describe('Serve Favicon', function () {
|
|||
const middleware = serveFavicon();
|
||||
req.path = '/favicon.ico';
|
||||
|
||||
storage.getStorage().storagePath = path.join(__dirname, '../../../../../test/utils/fixtures/images/');
|
||||
storage.getStorage().storagePath = path.join(__dirname, '../../../../../utils/fixtures/images/');
|
||||
localSettingsCache.icon = 'favicon.ico';
|
||||
|
||||
res = {
|
||||
|
@ -95,7 +95,7 @@ describe('Serve Favicon', function () {
|
|||
const middleware = serveFavicon();
|
||||
req.path = '/favicon.ico';
|
||||
|
||||
storage.getStorage().storagePath = path.join(__dirname, '../../../../../test/utils/fixtures/images/');
|
||||
storage.getStorage().storagePath = path.join(__dirname, '../../../../../utils/fixtures/images/');
|
||||
localSettingsCache.icon = 'myicon.ico';
|
||||
|
||||
res = {
|
|
@ -1,7 +1,7 @@
|
|||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
const fs = require('fs-extra');
|
||||
const servePublicFile = require('../../../../../core/server/web/site/middleware/serve-public-file');
|
||||
const servePublicFile = require('../../../../../../core/server/web/site/middleware/serve-public-file');
|
||||
|
||||
describe('servePublicFile', function () {
|
||||
let res;
|
|
@ -1,9 +1,9 @@
|
|||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
|
||||
const express = require('../../../../../core/shared/express');
|
||||
const themeEngine = require('../../../../../core/frontend/services/theme-engine');
|
||||
const staticTheme = require('../../../../../core/server/web/site/middleware/static-theme');
|
||||
const express = require('../../../../../../core/shared/express');
|
||||
const themeEngine = require('../../../../../../core/frontend/services/theme-engine');
|
||||
const staticTheme = require('../../../../../../core/server/web/site/middleware/static-theme');
|
||||
|
||||
describe('staticTheme', function () {
|
||||
let expressStaticStub;
|
101
test/unit/services/rss/renderer.test.js
Normal file
101
test/unit/services/rss/renderer.test.js
Normal file
|
@ -0,0 +1,101 @@
|
|||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
const Promise = require('bluebird');
|
||||
const rssCache = require('../../../../../core/frontend/services/rss/cache');
|
||||
const renderer = require('../../../../../core/frontend/services/rss/renderer');
|
||||
|
||||
describe('RSS: Renderer', function () {
|
||||
let rssCacheStub;
|
||||
let res;
|
||||
let baseUrl;
|
||||
|
||||
beforeEach(function () {
|
||||
rssCacheStub = sinon.stub(rssCache, 'getXML');
|
||||
|
||||
res = {
|
||||
locals: {},
|
||||
set: sinon.stub(),
|
||||
send: sinon.spy()
|
||||
};
|
||||
|
||||
baseUrl = '/rss/';
|
||||
});
|
||||
|
||||
afterEach(function () {
|
||||
sinon.restore();
|
||||
});
|
||||
|
||||
it('calls the cache and attempts to render, even without data', function (done) {
|
||||
rssCacheStub.returns(new Promise.resolve('dummyxml'));
|
||||
|
||||
renderer.render(res, baseUrl).then(function () {
|
||||
rssCacheStub.calledOnce.should.be.true();
|
||||
rssCacheStub.firstCall.args.should.eql(['/rss/', {}]);
|
||||
|
||||
res.set.calledOnce.should.be.true();
|
||||
res.set.calledWith('Content-Type', 'text/xml; charset=UTF-8').should.be.true();
|
||||
|
||||
res.send.calledOnce.should.be.true();
|
||||
res.send.calledWith('dummyxml').should.be.true();
|
||||
|
||||
done();
|
||||
}).catch(done);
|
||||
});
|
||||
|
||||
it('correctly merges locals into empty data before rendering', function (done) {
|
||||
rssCacheStub.returns(new Promise.resolve('dummyxml'));
|
||||
|
||||
res.locals = {foo: 'bar'};
|
||||
|
||||
renderer.render(res, baseUrl).then(function () {
|
||||
rssCacheStub.calledOnce.should.be.true();
|
||||
rssCacheStub.firstCall.args.should.eql(['/rss/', {foo: 'bar'}]);
|
||||
|
||||
res.set.calledOnce.should.be.true();
|
||||
res.set.calledWith('Content-Type', 'text/xml; charset=UTF-8').should.be.true();
|
||||
|
||||
res.send.calledOnce.should.be.true();
|
||||
res.send.calledWith('dummyxml').should.be.true();
|
||||
|
||||
done();
|
||||
}).catch(done);
|
||||
});
|
||||
|
||||
it('correctly merges locals into non-empty data before rendering', function (done) {
|
||||
rssCacheStub.returns(new Promise.resolve('dummyxml'));
|
||||
|
||||
res.locals = {foo: 'bar'};
|
||||
const data = {foo: 'baz', fizz: 'buzz'};
|
||||
|
||||
renderer.render(res, baseUrl, data).then(function () {
|
||||
rssCacheStub.calledOnce.should.be.true();
|
||||
rssCacheStub.firstCall.args.should.eql(['/rss/', {foo: 'baz', fizz: 'buzz'}]);
|
||||
|
||||
res.set.calledOnce.should.be.true();
|
||||
res.set.calledWith('Content-Type', 'text/xml; charset=UTF-8').should.be.true();
|
||||
|
||||
res.send.calledOnce.should.be.true();
|
||||
res.send.calledWith('dummyxml').should.be.true();
|
||||
|
||||
done();
|
||||
}).catch(done);
|
||||
});
|
||||
|
||||
it('does nothing if it gets an error', function (done) {
|
||||
rssCacheStub.returns(new Promise.reject(new Error('Fake Error')));
|
||||
|
||||
renderer.render(res, baseUrl).then(function () {
|
||||
done('This should have errored');
|
||||
}).catch(function (err) {
|
||||
err.message.should.eql('Fake Error');
|
||||
|
||||
rssCacheStub.calledOnce.should.be.true();
|
||||
rssCacheStub.firstCall.args.should.eql(['/rss/', {}]);
|
||||
|
||||
res.set.called.should.be.false();
|
||||
res.send.called.should.be.false();
|
||||
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
124
test/unit/services/sitemap/manager.test.js
Normal file
124
test/unit/services/sitemap/manager.test.js
Normal file
|
@ -0,0 +1,124 @@
|
|||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
|
||||
// Stuff we are testing
|
||||
const events = require('../../../../../core/server/lib/common/events');
|
||||
|
||||
const SiteMapManager = require('../../../../../core/frontend/services/sitemap/manager');
|
||||
const PostGenerator = require('../../../../../core/frontend/services/sitemap/post-generator');
|
||||
const PageGenerator = require('../../../../../core/frontend/services/sitemap/page-generator');
|
||||
const TagGenerator = require('../../../../../core/frontend/services/sitemap/tag-generator');
|
||||
const UserGenerator = require('../../../../../core/frontend/services/sitemap/user-generator');
|
||||
const IndexGenerator = require('../../../../../core/frontend/services/sitemap/index-generator');
|
||||
|
||||
describe('Unit: sitemap/manager', function () {
|
||||
let eventsToRemember;
|
||||
|
||||
const makeStubManager = function () {
|
||||
let posts;
|
||||
let pages;
|
||||
let tags;
|
||||
let authors;
|
||||
let index;
|
||||
|
||||
index = new IndexGenerator();
|
||||
posts = new PostGenerator();
|
||||
pages = new PageGenerator();
|
||||
tags = new TagGenerator();
|
||||
authors = new UserGenerator();
|
||||
|
||||
return new SiteMapManager({posts: posts, pages: pages, tags: tags, authors: authors});
|
||||
};
|
||||
|
||||
beforeEach(function () {
|
||||
eventsToRemember = {};
|
||||
|
||||
sinon.stub(events, 'on').callsFake(function (eventName, callback) {
|
||||
eventsToRemember[eventName] = callback;
|
||||
});
|
||||
|
||||
sinon.stub(PostGenerator.prototype, 'getXml');
|
||||
sinon.stub(PostGenerator.prototype, 'addUrl');
|
||||
sinon.stub(PostGenerator.prototype, 'removeUrl');
|
||||
sinon.stub(IndexGenerator.prototype, 'getXml');
|
||||
});
|
||||
|
||||
afterEach(function () {
|
||||
sinon.restore();
|
||||
});
|
||||
|
||||
describe('SiteMapManager', function () {
|
||||
let manager;
|
||||
let fake;
|
||||
|
||||
beforeEach(function () {
|
||||
manager = makeStubManager();
|
||||
fake = sinon.stub();
|
||||
});
|
||||
|
||||
it('create SiteMapManager with defaults', function () {
|
||||
const siteMapManager = new SiteMapManager();
|
||||
should.exist(siteMapManager.posts);
|
||||
should.exist(siteMapManager.pages);
|
||||
should.exist(siteMapManager.users);
|
||||
should.exist(siteMapManager.tags);
|
||||
});
|
||||
|
||||
it('can create a SiteMapManager instance', function () {
|
||||
should.exist(manager);
|
||||
Object.keys(eventsToRemember).length.should.eql(4);
|
||||
should.exist(eventsToRemember['url.added']);
|
||||
should.exist(eventsToRemember['url.removed']);
|
||||
should.exist(eventsToRemember['router.created']);
|
||||
should.exist(eventsToRemember['routers.reset']);
|
||||
});
|
||||
|
||||
describe('trigger url events', function () {
|
||||
it('url.added', function () {
|
||||
eventsToRemember['url.added']({
|
||||
url: {
|
||||
relative: '/test/',
|
||||
absolute: 'https://myblog.com/test/'
|
||||
},
|
||||
resource: {
|
||||
config: {
|
||||
type: 'posts'
|
||||
},
|
||||
data: {}
|
||||
}
|
||||
});
|
||||
|
||||
PostGenerator.prototype.addUrl.calledOnce.should.be.true();
|
||||
});
|
||||
|
||||
it('url.removed', function () {
|
||||
eventsToRemember['url.removed']({
|
||||
url: {
|
||||
relative: '/test/',
|
||||
absolute: 'https://myblog.com/test/'
|
||||
},
|
||||
resource: {
|
||||
config: {
|
||||
type: 'posts'
|
||||
},
|
||||
data: {}
|
||||
}
|
||||
});
|
||||
|
||||
PostGenerator.prototype.removeUrl.calledOnce.should.be.true();
|
||||
});
|
||||
});
|
||||
|
||||
it('fn: getSiteMapXml', function () {
|
||||
PostGenerator.prototype.getXml.returns('xml');
|
||||
manager.getSiteMapXml('posts').should.eql('xml');
|
||||
PostGenerator.prototype.getXml.calledOnce.should.be.true();
|
||||
});
|
||||
|
||||
it('fn: getIndexXml', function () {
|
||||
IndexGenerator.prototype.getXml.returns('xml');
|
||||
manager.getIndexXml().should.eql('xml');
|
||||
IndexGenerator.prototype.getXml.calledOnce.should.be.true();
|
||||
});
|
||||
});
|
||||
});
|
Loading…
Add table
Reference in a new issue