mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-23 02:41:50 +03:00
98c27b5555
refs https://linear.app/tryghost/issue/CORE-1/multiple-adapters-per-type - There's a need to support multiple adapter variations per given adapter type (storage, sso, etc.) - With the introduced changes we can specify a version of an adapter that should be fetched based on `:feature` postfix. For example: `adapterManager.getAdapter('storage')` - would return the default adapter listed under "active" configuration `adapterManager.getAdapter('storage:videos') - would return an adapter configured for videos *feature* - Here's an example configuration for a custom video storage: ``` "storage": { "active": "LocalFileStorage", "videos": "ghost-storage-custom-video", "ghost-storage-custom-video": { "custom": "configHere" } } ```
75 lines
2.4 KiB
JavaScript
75 lines
2.4 KiB
JavaScript
const should = require('should');
|
|
|
|
const resolveAdapterOptions = require('../../../../../core/server/services/adapter-manager/options-resolver');
|
|
|
|
describe('Adapter Manager: options resolver', function () {
|
|
it('returns default adapter configuration', function () {
|
|
const name = 'storage';
|
|
const adapterServiceConfig = {
|
|
storage: {
|
|
active: 'cloud-storage',
|
|
'cloud-storage': {
|
|
custom: 'configValue'
|
|
}
|
|
}
|
|
};
|
|
|
|
const {adapterType, adapterName, adapterConfig} = resolveAdapterOptions(name, adapterServiceConfig);
|
|
|
|
adapterType.should.equal('storage');
|
|
adapterName.should.equal('cloud-storage');
|
|
adapterConfig.should.deepEqual({
|
|
custom: 'configValue'
|
|
});
|
|
});
|
|
|
|
it('returns adapter configuration based on specified feature', function () {
|
|
const name = 'storage:videos';
|
|
const adapterServiceConfig = {
|
|
storage: {
|
|
active: 'cloud-storage',
|
|
videos: 'local-storage',
|
|
'cloud-storage': {
|
|
custom: 'configValue'
|
|
},
|
|
'local-storage': {
|
|
custom: 'localStorageConfig'
|
|
}
|
|
}
|
|
};
|
|
|
|
const {adapterType, adapterName, adapterConfig} = resolveAdapterOptions(name, adapterServiceConfig);
|
|
|
|
adapterType.should.equal('storage');
|
|
adapterName.should.equal('local-storage');
|
|
adapterConfig.should.deepEqual({
|
|
custom: 'localStorageConfig'
|
|
});
|
|
});
|
|
|
|
it('returns active configuration if piece of feature adapter is missing', function () {
|
|
const name = 'storage:videos';
|
|
const adapterServiceConfig = {
|
|
storage: {
|
|
active: 'cloud-storage',
|
|
videos: 'local-storage',
|
|
'cloud-storage': {
|
|
custom: 'configValue'
|
|
}
|
|
// when you forget to configure local-storage!
|
|
// 'local-storage': {
|
|
// custom: 'localStorageConfig'
|
|
// }
|
|
}
|
|
};
|
|
|
|
const {adapterType, adapterName, adapterConfig} = resolveAdapterOptions(name, adapterServiceConfig);
|
|
|
|
adapterType.should.equal('storage');
|
|
adapterName.should.equal('cloud-storage');
|
|
adapterConfig.should.deepEqual({
|
|
custom: 'configValue'
|
|
});
|
|
});
|
|
});
|