mirror of
https://github.com/n8n-io/n8n.git
synced 2025-01-11 21:07:28 -08:00
feat: Release floating entitlements on license:clear command (no-changelog) (#9603)
Co-authored-by: Iván Ovejero <ivov.src@gmail.com>
This commit is contained in:
parent
3b10c0f6aa
commit
44ecab73d7
|
@ -2,6 +2,7 @@ import { Container } from 'typedi';
|
|||
import { SETTINGS_LICENSE_CERT_KEY } from '@/constants';
|
||||
import { BaseCommand } from '../BaseCommand';
|
||||
import { SettingsRepository } from '@db/repositories/settings.repository';
|
||||
import { License } from '@/License';
|
||||
|
||||
export class ClearLicenseCommand extends BaseCommand {
|
||||
static description = 'Clear license';
|
||||
|
@ -10,6 +11,12 @@ export class ClearLicenseCommand extends BaseCommand {
|
|||
|
||||
async run() {
|
||||
this.logger.info('Clearing license from database.');
|
||||
|
||||
// Invoke shutdown() to force any floating entitlements to be released
|
||||
const license = Container.get(License);
|
||||
await license.init();
|
||||
await license.shutdown();
|
||||
|
||||
await Container.get(SettingsRepository).delete({
|
||||
key: SETTINGS_LICENSE_CERT_KEY,
|
||||
});
|
||||
|
|
28
packages/cli/test/integration/commands/license.cmd.test.ts
Normal file
28
packages/cli/test/integration/commands/license.cmd.test.ts
Normal file
|
@ -0,0 +1,28 @@
|
|||
import { InternalHooks } from '@/InternalHooks';
|
||||
import { License } from '@/License';
|
||||
import { LoadNodesAndCredentials } from '@/LoadNodesAndCredentials';
|
||||
import { ClearLicenseCommand } from '@/commands/license/clear';
|
||||
import { Config } from '@oclif/core';
|
||||
import { mockInstance } from '../../shared/mocking';
|
||||
|
||||
const oclifConfig = new Config({ root: __dirname });
|
||||
|
||||
beforeAll(async () => {
|
||||
mockInstance(InternalHooks);
|
||||
mockInstance(LoadNodesAndCredentials);
|
||||
await oclifConfig.load();
|
||||
});
|
||||
|
||||
test('license:clear invokes shutdown() to release any floating entitlements', async () => {
|
||||
const cmd = new ClearLicenseCommand([], oclifConfig);
|
||||
await cmd.init();
|
||||
|
||||
const license = mockInstance(License);
|
||||
|
||||
await cmd.run();
|
||||
|
||||
expect(license.init).toHaveBeenCalledTimes(1);
|
||||
expect(license.shutdown).toHaveBeenCalledTimes(1);
|
||||
|
||||
jest.restoreAllMocks();
|
||||
});
|
Loading…
Reference in a new issue