mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-22 18:31:57 +03:00
33ad7c2740
refs 2fa3985d42
- Running tests with error logging set to "error" lever, produced a massive amounts of errors related to failed Stripe keys. Making it hard to look through the output.
- When Ghost is running in teste environment by default it is configured with an invalid Stripe key that looks like `sk_test***`. In this case the Members migrations runs creating requiest to Stripe, which fail.
60 lines
1.9 KiB
JavaScript
60 lines
1.9 KiB
JavaScript
const _ = require('lodash');
|
|
const StripeService = require('@tryghost/members-stripe-service');
|
|
const logging = require('@tryghost/logging');
|
|
const membersService = require('../members');
|
|
const config = require('../../../shared/config');
|
|
const settings = require('../../../shared/settings-cache');
|
|
const urlUtils = require('../../../shared/url-utils');
|
|
const events = require('../../lib/common/events');
|
|
const models = require('../../models');
|
|
const {getConfig} = require('./config');
|
|
|
|
async function configureApi() {
|
|
const cfg = getConfig(settings, config, urlUtils);
|
|
if (cfg) {
|
|
cfg.testEnv = process.env.NODE_ENV.startsWith('test');
|
|
await module.exports.configure(cfg);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
const debouncedConfigureApi = _.debounce(() => {
|
|
configureApi();
|
|
}, 600);
|
|
|
|
module.exports = new StripeService({
|
|
membersService,
|
|
models: _.pick(models, ['Product', 'StripePrice', 'StripeCustomerSubscription', 'StripeProduct', 'MemberStripeCustomer', 'Offer', 'Settings']),
|
|
StripeWebhook: {
|
|
async get() {
|
|
return {
|
|
webhook_id: settings.get('members_stripe_webhook_id'),
|
|
secret: settings.get('members_stripe_webhook_secret')
|
|
};
|
|
},
|
|
async save(data) {
|
|
await models.Settings.edit([{
|
|
key: 'members_stripe_webhook_id',
|
|
value: data.webhook_id
|
|
}, {
|
|
key: 'members_stripe_webhook_secret',
|
|
value: data.secret
|
|
}]);
|
|
}
|
|
}
|
|
});
|
|
|
|
module.exports.init = async function init() {
|
|
try {
|
|
await configureApi();
|
|
} catch (err) {
|
|
logging.error(err);
|
|
}
|
|
events.on('settings.edited', function (model) {
|
|
if (['stripe_publishable_key', 'stripe_secret_key', 'stripe_connect_publishable_key', 'stripe_connect_secret_key'].includes(model.get('key'))) {
|
|
debouncedConfigureApi();
|
|
}
|
|
});
|
|
};
|