const test = require('node:test'); const assert = require('node:assert/strict'); const fs = require('node:fs'); const vm = require('node:vm'); function loadRegistry() { const sandbox = { globalThis: {} }; sandbox.self = sandbox.globalThis; vm.runInNewContext(fs.readFileSync('phone-sms/providers/sms-bower.js', 'utf8'), sandbox); vm.runInNewContext(fs.readFileSync('phone-sms/providers/registry.js', 'utf8'), sandbox); return sandbox.globalThis.PhoneSmsProviderRegistry; } test('SMS Bower is registered as a known phone SMS provider', () => { const registry = loadRegistry(); assert.equal(registry.normalizeProviderId('sms-bower'), 'sms-bower'); assert.equal(registry.getProviderLabel('sms-bower'), 'SMS Bower'); assert.ok(registry.getProviderIds().includes('sms-bower')); assert.deepEqual( Array.from(registry.normalizeProviderOrder(['sms-bower', 'hero-sms'])), ['sms-bower', 'hero-sms'] ); const provider = registry.createProvider('sms-bower', { fetchImpl: async () => ({ ok: true, text: async () => 'ACCESS_BALANCE:1.23' }) }); assert.equal(provider.id, 'sms-bower'); });