| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- const FN_URL = 'https://server.fmode.cn/api/functions';
- const APP_ID = 'ncloudmaster';
- const fn = {
- manifest: 'VWejNK8E5z',
- task: 'yL6opHxC4D',
- history: 'cegZcOyOH0',
- result: 'XPv6Sym2I6',
- remix: 'LjcaC94Kno',
- voice: 'LHBMMcDP4n',
- quickly: '',
- proxy: 'wzwnEuAhwb',
- jimeng: 'WUkf74lVE5',
- douyin: 'HArHym0smi',
- douyinInsight: 'pzBTvs6UcE',
- upload: 'VHS0noRP7Q',
- authCredit: '',
- };
- const checks = [
- ['manifest.list', fn.manifest, { action: 'list' }, true],
- ['task.list', fn.task, { action: 'list' }, true],
- ['history.list', fn.history, { action: 'list' }, true],
- ['result.list', fn.result, { action: 'list' }, true],
- ['remix.listAll', fn.remix, { action: 'listAll' }, true],
- ['voice.listProfiles', fn.voice, { action: 'listProfiles' }, true],
- ['upload.token.probe', fn.upload, { action: 'createUploadToken', filename: 'probe.txt', mimeType: 'text/plain', kind: 'probe' }, true],
- ['jimeng.unknownAction', fn.jimeng, { action: 'unknown' }, false],
- ['douyin.unknownRoute', fn.douyin, { action: 'call', route: 'unknown' }, false],
- ['douyinInsight.authGuard', fn.douyinInsight, { action: 'listTopics' }, false],
- ['proxy.unknownAction', fn.proxy, { action: 'foo' }, false],
- ['quickly.configured', fn.quickly, { action: 'query', taskId: 'probe' }, null],
- ['authCredit.configured', fn.authCredit, { action: 'me' }, null],
- ];
- async function call(id, body) {
- const response = await fetch(FN_URL, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- 'X-Parse-Application-Id': APP_ID,
- },
- body: JSON.stringify({ id, _ApplicationId: APP_ID, ...body }),
- });
- const text = await response.text();
- try {
- return JSON.parse(text);
- } catch {
- return { code: response.status, success: false, error: text };
- }
- }
- let failed = 0;
- for (const [name, id, body, expectSuccess] of checks) {
- if (!id) {
- console.log(`SKIP ${name}: function id is empty`);
- continue;
- }
- try {
- const result = await call(id, body);
- const ok = expectSuccess === null
- ? true
- : expectSuccess
- ? result?.code === 200 && result?.success !== false
- : result?.code >= 400 || result?.success === false;
- if (!ok) failed += 1;
- console.log(`${ok ? 'OK' : 'FAIL'} ${name}: ${JSON.stringify(result).slice(0, 500)}`);
- } catch (error) {
- failed += 1;
- console.log(`FAIL ${name}: ${error?.message || error}`);
- }
- }
- if (failed > 0) {
- console.error(`Cloud function smoke failed: ${failed}`);
- process.exit(1);
- }
- console.log('Cloud function smoke passed');
|