fix(phone-sms): 补回 NexSMS provider registry 接入
补回 NexSMS provider adapter,并在 background 与 sidepanel 加载。 同时补充 registry 创建真实 NexSMS provider 的测试,避免后续回归。
This commit is contained in:
@@ -3,6 +3,8 @@ const assert = require('node:assert/strict');
|
||||
const fs = require('node:fs');
|
||||
|
||||
const source = fs.readFileSync('phone-sms/providers/registry.js', 'utf8');
|
||||
const maDaoSource = fs.readFileSync('phone-sms/providers/madao.js', 'utf8');
|
||||
const nexSmsSource = fs.readFileSync('phone-sms/providers/nexsms.js', 'utf8');
|
||||
|
||||
function loadRegistry(root = {}) {
|
||||
return new Function('self', `${source}; return self.PhoneSmsProviderRegistry;`)(root);
|
||||
@@ -16,6 +18,9 @@ test('phone sms provider registry normalizes ids, order and labels consistently'
|
||||
PhoneSmsFiveSimProvider: {
|
||||
createProvider: (deps = {}) => ({ provider: '5sim', deps }),
|
||||
},
|
||||
PhoneSmsNexSmsProvider: {
|
||||
createProvider: (deps = {}) => ({ provider: 'nexsms', deps }),
|
||||
},
|
||||
PhoneSmsMaDaoProvider: {
|
||||
createProvider: (deps = {}) => ({ provider: 'madao', deps }),
|
||||
},
|
||||
@@ -52,5 +57,43 @@ test('phone sms provider registry normalizes ids, order and labels consistently'
|
||||
registry.createProvider('madao', { foo: 2 }),
|
||||
{ provider: 'madao', deps: { foo: 2 } }
|
||||
);
|
||||
assert.throws(() => registry.createProvider('nexsms'), /接码平台模块未加载:nexsms/);
|
||||
assert.deepStrictEqual(
|
||||
registry.createProvider('nexsms', { foo: 3 }),
|
||||
{ provider: 'nexsms', deps: { foo: 3 } }
|
||||
);
|
||||
});
|
||||
|
||||
test('phone sms provider registry can create the real MaDao provider module', () => {
|
||||
const maDaoModule = new Function('self', `${maDaoSource}; return self.PhoneSmsMaDaoProvider;`)({});
|
||||
const registry = loadRegistry({
|
||||
PhoneSmsMaDaoProvider: maDaoModule,
|
||||
});
|
||||
|
||||
const provider = registry.createProvider('madao', { fetchImpl: 'demo-fetch' });
|
||||
|
||||
assert.equal(provider.id, 'madao');
|
||||
assert.equal(provider.label, 'MaDao');
|
||||
assert.equal(provider.defaultProduct, 'openai');
|
||||
assert.equal(typeof provider.acquireActivation, 'function');
|
||||
assert.equal(typeof provider.pollActivation, 'function');
|
||||
assert.equal(typeof provider.releaseActivation, 'function');
|
||||
assert.equal(provider.mapTicketStatus('waiting_code'), 'waiting_code');
|
||||
});
|
||||
|
||||
test('phone sms provider registry can create the real NexSMS provider module', () => {
|
||||
const nexSmsModule = new Function('self', `${nexSmsSource}; return self.PhoneSmsNexSmsProvider;`)({});
|
||||
const registry = loadRegistry({
|
||||
PhoneSmsNexSmsProvider: nexSmsModule,
|
||||
});
|
||||
|
||||
const provider = registry.createProvider('nexsms', { fetchImpl: 'demo-fetch' });
|
||||
|
||||
assert.equal(provider.id, 'nexsms');
|
||||
assert.equal(provider.label, 'NexSMS');
|
||||
assert.equal(provider.defaultProduct, 'OpenAI');
|
||||
assert.equal(provider.defaultServiceCode, 'ot');
|
||||
assert.equal(typeof provider.fetchBalance, 'function');
|
||||
assert.equal(typeof provider.fetchPrices, 'function');
|
||||
assert.equal(provider.normalizeCountryId('8'), 8);
|
||||
assert.equal(provider.normalizeServiceCode(' OT '), 'ot');
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user