/* Copyright (C) 2023-2026 QuantumNous This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . For commercial licensing, please contact support@quantumnous.com */ import assert from 'node:assert/strict' import { describe, test } from 'node:test' import { getServerErrorMessageKey } from './server-error-message' describe('server error message mapping', () => { test('maps the active-session limit to recovery instructions', () => { const message = getServerErrorMessageKey({ code: 'AUTH_SESSION_LIMIT' }) assert.match(message ?? '', /Sign out other sessions/) assert.match(message ?? '', /reset your password/) }) test('maps an Axios-shaped issuance limit to rolling-window guidance', () => { const message = getServerErrorMessageKey({ response: { data: { code: 'AUTH_SESSION_ISSUANCE_LIMIT' } }, }) assert.match(message ?? '', /rolling window/) assert.equal(getServerErrorMessageKey({ code: 'UNKNOWN_CODE' }), null) }) test('maps stable Telegram bind errors without exposing server text', () => { const expected = { TELEGRAM_BIND_DISABLED: 'Telegram binding is disabled.', TELEGRAM_BIND_INVALID_REQUEST: 'The Telegram authorization request is invalid or expired.', TELEGRAM_BIND_FLOW_INVALID: 'This Telegram binding request has expired or has already been used.', TELEGRAM_BIND_SESSION_INVALID: 'The login session that started this Telegram binding is no longer valid.', TELEGRAM_BIND_ALREADY_BOUND: 'This Telegram account is already bound.', TELEGRAM_BIND_USER_DELETED: 'This user account no longer exists.', TELEGRAM_BIND_USER_DISABLED: 'This user account is disabled.', TELEGRAM_BIND_INTERNAL_ERROR: 'Telegram binding failed. Please try again.', } for (const [code, message] of Object.entries(expected)) { assert.equal(getServerErrorMessageKey({ code }), message) } assert.equal( getServerErrorMessageKey({ response: { data: { code: 'TELEGRAM_BIND_INTERNAL_ERROR', message: 'raw detail' }, }, }), expected.TELEGRAM_BIND_INTERNAL_ERROR ) }) })