mirror of
https://github.com/n8n-io/n8n.git
synced 2024-12-24 20:24:05 -08:00
fix(core): Allow license:clear command to be used for licenses that failed renewal (#10665)
Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <netroy@users.noreply.github.com>
This commit is contained in:
parent
3ea114129b
commit
a422c5ac7b
|
@ -12,10 +12,14 @@ export class ClearLicenseCommand extends BaseCommand {
|
||||||
async run() {
|
async run() {
|
||||||
this.logger.info('Clearing license from database.');
|
this.logger.info('Clearing license from database.');
|
||||||
|
|
||||||
// Invoke shutdown() to force any floating entitlements to be released
|
// Attempt to invoke shutdown() to force any floating entitlements to be released
|
||||||
const license = Container.get(License);
|
const license = Container.get(License);
|
||||||
await license.init();
|
await license.init();
|
||||||
await license.shutdown();
|
try {
|
||||||
|
await license.shutdown();
|
||||||
|
} catch {
|
||||||
|
this.logger.info('License shutdown failed. Continuing with clearing license from database.');
|
||||||
|
}
|
||||||
|
|
||||||
await Container.get(SettingsRepository).delete({
|
await Container.get(SettingsRepository).delete({
|
||||||
key: SETTINGS_LICENSE_CERT_KEY,
|
key: SETTINGS_LICENSE_CERT_KEY,
|
||||||
|
|
|
@ -1,10 +1,14 @@
|
||||||
import { License } from '@/license';
|
import { Container } from 'typedi';
|
||||||
import { LoadNodesAndCredentials } from '@/load-nodes-and-credentials';
|
|
||||||
import { ClearLicenseCommand } from '@/commands/license/clear';
|
|
||||||
|
|
||||||
import { setupTestCommand } from '@test-integration/utils/test-command';
|
import { setupTestCommand } from '@test-integration/utils/test-command';
|
||||||
import { mockInstance } from '../../shared/mocking';
|
import { mockInstance } from '../../shared/mocking';
|
||||||
|
|
||||||
|
import { ClearLicenseCommand } from '@/commands/license/clear';
|
||||||
|
import { SETTINGS_LICENSE_CERT_KEY } from '@/constants';
|
||||||
|
import { SettingsRepository } from '@/databases/repositories/settings.repository';
|
||||||
|
import { License } from '@/license';
|
||||||
|
import { LoadNodesAndCredentials } from '@/load-nodes-and-credentials';
|
||||||
|
|
||||||
mockInstance(LoadNodesAndCredentials);
|
mockInstance(LoadNodesAndCredentials);
|
||||||
const license = mockInstance(License);
|
const license = mockInstance(License);
|
||||||
const command = setupTestCommand(ClearLicenseCommand);
|
const command = setupTestCommand(ClearLicenseCommand);
|
||||||
|
@ -15,3 +19,17 @@ test('license:clear invokes shutdown() to release any floating entitlements', as
|
||||||
expect(license.init).toHaveBeenCalledTimes(1);
|
expect(license.init).toHaveBeenCalledTimes(1);
|
||||||
expect(license.shutdown).toHaveBeenCalledTimes(1);
|
expect(license.shutdown).toHaveBeenCalledTimes(1);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('license:clear deletes the license from the DB even if shutdown() fails', async () => {
|
||||||
|
license.shutdown.mockRejectedValueOnce(new Error('shutdown failed'));
|
||||||
|
|
||||||
|
const settingsRepository = Container.get(SettingsRepository);
|
||||||
|
|
||||||
|
settingsRepository.delete = jest.fn();
|
||||||
|
|
||||||
|
await command.run();
|
||||||
|
|
||||||
|
expect(settingsRepository.delete).toHaveBeenCalledWith({
|
||||||
|
key: SETTINGS_LICENSE_CERT_KEY,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
Loading…
Reference in a new issue