diff --git a/packages/cli/src/license/license.controller.ts b/packages/cli/src/license/license.controller.ts index e5dd13a18ba9c..7fc24df18846c 100644 --- a/packages/cli/src/license/license.controller.ts +++ b/packages/cli/src/license/license.controller.ts @@ -75,25 +75,29 @@ licenseController.post( } catch (e) { const error = e as Error & { errorId?: string }; + let message = 'Failed to activate license'; + //override specific error messages (to map License Server vocabulary to n8n terms) switch (error.errorId ?? 'UNSPECIFIED') { case 'SCHEMA_VALIDATION': - error.message = 'Activation key is in the wrong format'; + message = 'Activation key is in the wrong format'; break; case 'RESERVATION_EXHAUSTED': - error.message = + message = 'Activation key has been used too many times. Please contact sales@n8n.io if you would like to extend it'; break; case 'RESERVATION_EXPIRED': - error.message = 'Activation key has expired'; + message = 'Activation key has expired'; break; case 'NOT_FOUND': case 'RESERVATION_CONFLICT': - error.message = 'Activation key not found'; + message = 'Activation key not found'; break; + default: + getLogger().error(message, { stack: error.stack ?? 'n/a' }); } - throw new ResponseHelper.BadRequestError(error.message); + throw new ResponseHelper.BadRequestError(message); } // Return the read data, plus the management JWT diff --git a/packages/cli/test/integration/license.api.test.ts b/packages/cli/test/integration/license.api.test.ts index dc023094b531b..3b45f507f4f12 100644 --- a/packages/cli/test/integration/license.api.test.ts +++ b/packages/cli/test/integration/license.api.test.ts @@ -68,13 +68,13 @@ describe('POST /license/activate', () => { test('errors out properly', async () => { License.prototype.activate = jest.fn().mockImplementation(() => { - throw new Error(INVALID_ACIVATION_KEY_MESSAGE); + throw new Error(ACTIVATION_FAILED_MESSAGE); }); await authOwnerAgent .post('/license/activate') .send({ activationKey: 'abcde' }) - .expect(400, { code: 400, message: INVALID_ACIVATION_KEY_MESSAGE }); + .expect(400, { code: 400, message: ACTIVATION_FAILED_MESSAGE }); }); }); @@ -135,5 +135,5 @@ const DEFAULT_POST_RESPONSE: { data: ILicensePostResponse } = { }; const NON_OWNER_ACTIVATE_RENEW_MESSAGE = 'Only an instance owner may activate or renew a license'; -const INVALID_ACIVATION_KEY_MESSAGE = 'Invalid activation key'; +const ACTIVATION_FAILED_MESSAGE = 'Failed to activate license'; const RENEW_ERROR_MESSAGE = 'Something went wrong when trying to renew license';