Allow SuperAdmin to disable SMS, email, and bot from dashboard settings on top of env flags. Add admin password reset with credentials SMS, plus payment discounts, notes, and payable amount handling.
99 lines
3.2 KiB
JavaScript
99 lines
3.2 KiB
JavaScript
'use strict';
|
|
|
|
const { describe, it } = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
const {
|
|
isEnvChannelEnabled,
|
|
isDbChannelEnabled,
|
|
isChannelEnabled,
|
|
toPublicMessaging,
|
|
parseIncomingMessaging
|
|
} = require('./messagingChannels');
|
|
|
|
describe('isEnvChannelEnabled', () => {
|
|
it('requires SMS_ENABLED to be truthy', () => {
|
|
assert.equal(isEnvChannelEnabled('sms', { SMS_ENABLED: false }), false);
|
|
assert.equal(isEnvChannelEnabled('sms', { SMS_ENABLED: 'false' }), false);
|
|
assert.equal(isEnvChannelEnabled('sms', { SMS_ENABLED: true }), true);
|
|
assert.equal(isEnvChannelEnabled('sms', { SMS_ENABLED: 'true' }), true);
|
|
});
|
|
|
|
it('treats missing env flags as disabled', () => {
|
|
assert.equal(isEnvChannelEnabled('email', {}), false);
|
|
assert.equal(isEnvChannelEnabled('bot', {}), false);
|
|
});
|
|
});
|
|
|
|
describe('isDbChannelEnabled', () => {
|
|
it('defaults to enabled when the setting is missing', () => {
|
|
assert.equal(isDbChannelEnabled('sms', {}), true);
|
|
assert.equal(isDbChannelEnabled('email', null), true);
|
|
assert.equal(isDbChannelEnabled('bot', { botEnabled: undefined }), true);
|
|
});
|
|
|
|
it('honors explicit dashboard flags', () => {
|
|
assert.equal(isDbChannelEnabled('sms', { smsEnabled: false }), false);
|
|
assert.equal(isDbChannelEnabled('email', { emailEnabled: '0' }), false);
|
|
assert.equal(isDbChannelEnabled('bot', { botEnabled: true }), true);
|
|
});
|
|
});
|
|
|
|
describe('isChannelEnabled', () => {
|
|
it('requires both env and dashboard settings to be enabled', () => {
|
|
const envOn = { SMS_ENABLED: true, EMAIL_ENABLED: true, BOT_ENABLED: true };
|
|
const dbOn = { smsEnabled: true, emailEnabled: true, botEnabled: true };
|
|
|
|
assert.equal(isChannelEnabled('sms', { env: envOn, db: dbOn }), true);
|
|
assert.equal(isChannelEnabled('sms', {
|
|
env: { SMS_ENABLED: false },
|
|
db: { smsEnabled: true }
|
|
}), false);
|
|
assert.equal(isChannelEnabled('sms', {
|
|
env: { SMS_ENABLED: true },
|
|
db: { smsEnabled: false }
|
|
}), false);
|
|
assert.equal(isChannelEnabled('email', {
|
|
env: { EMAIL_ENABLED: true },
|
|
db: { emailEnabled: false }
|
|
}), false);
|
|
assert.equal(isChannelEnabled('bot', {
|
|
env: { BOT_ENABLED: true },
|
|
db: { botEnabled: true }
|
|
}), true);
|
|
});
|
|
});
|
|
|
|
describe('toPublicMessaging', () => {
|
|
it('returns dashboard flags plus an env snapshot', () => {
|
|
assert.deepEqual(toPublicMessaging(
|
|
{ smsEnabled: false, emailEnabled: true },
|
|
{ SMS_ENABLED: true, EMAIL_ENABLED: false, BOT_ENABLED: '1' }
|
|
), {
|
|
smsEnabled: false,
|
|
emailEnabled: true,
|
|
botEnabled: true,
|
|
env: {
|
|
smsEnabled: true,
|
|
emailEnabled: false,
|
|
botEnabled: true
|
|
}
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('parseIncomingMessaging', () => {
|
|
it('reads nested messaging flags and ignores unspecified channels', () => {
|
|
assert.deepEqual(parseIncomingMessaging({
|
|
messaging: { smsEnabled: false, emailEnabled: 'true' }
|
|
}), {
|
|
smsEnabled: false,
|
|
emailEnabled: true
|
|
});
|
|
});
|
|
|
|
it('returns null when no messaging flags are present', () => {
|
|
assert.equal(parseIncomingMessaging({ smsTemplates: {} }), null);
|
|
assert.equal(parseIncomingMessaging({}), null);
|
|
});
|
|
});
|