|
|
@@ -0,0 +1,34 @@
|
|
|
+const assert = require('assert');
|
|
|
+const http = require('http');
|
|
|
+const { callFmodeWecomGateway } = require('../mcp/src/providers/fmode-wecom-gateway');
|
|
|
+const { classifySubscribeError } = require('../mcp/src/core/subscribe-page');
|
|
|
+
|
|
|
+async function main() {
|
|
|
+ const server = http.createServer((req, res) => {
|
|
|
+ res.writeHead(409, { 'Content-Type': 'application/json' });
|
|
|
+ res.end(JSON.stringify({ code: 500, mess: '上游账号当前没有可用企微登录数量,请稍后重试' }));
|
|
|
+ });
|
|
|
+ await new Promise(resolve => server.listen(0, '127.0.0.1', resolve));
|
|
|
+ try {
|
|
|
+ const apiBase = `http://127.0.0.1:${server.address().port}`;
|
|
|
+ await assert.rejects(
|
|
|
+ () => callFmodeWecomGateway({ gatewayPath: '/login/start', token: 'r:smoke-session', apiBase }),
|
|
|
+ error => {
|
|
|
+ assert.strictEqual(error.httpStatus, 409);
|
|
|
+ assert.strictEqual(
|
|
|
+ classifySubscribeError(error.httpStatus, error.bizMessage),
|
|
|
+ 'QW-UP-409'
|
|
|
+ );
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ );
|
|
|
+ console.log('[ok] preserves 409 capacity conflicts when upstream body code is 500');
|
|
|
+ } finally {
|
|
|
+ await new Promise(resolve => server.close(resolve));
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+main().catch(error => {
|
|
|
+ console.error(error);
|
|
|
+ process.exitCode = 1;
|
|
|
+});
|