'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); }); });