gateway-status-preservation-smoke-test.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. const assert = require('assert');
  2. const http = require('http');
  3. const { callFmodeWecomGateway } = require('../mcp/src/providers/fmode-wecom-gateway');
  4. const { classifySubscribeError } = require('../mcp/src/core/subscribe-page');
  5. async function main() {
  6. const server = http.createServer((req, res) => {
  7. res.writeHead(409, { 'Content-Type': 'application/json' });
  8. res.end(JSON.stringify({ code: 500, mess: '上游账号当前没有可用企微登录数量,请稍后重试' }));
  9. });
  10. await new Promise(resolve => server.listen(0, '127.0.0.1', resolve));
  11. try {
  12. const apiBase = `http://127.0.0.1:${server.address().port}`;
  13. await assert.rejects(
  14. () => callFmodeWecomGateway({ gatewayPath: '/login/start', token: 'r:smoke-session', apiBase }),
  15. error => {
  16. assert.strictEqual(error.httpStatus, 409);
  17. assert.strictEqual(
  18. classifySubscribeError(error.httpStatus, error.bizMessage),
  19. 'QW-UP-409'
  20. );
  21. return true;
  22. }
  23. );
  24. console.log('[ok] preserves 409 capacity conflicts when upstream body code is 500');
  25. } finally {
  26. await new Promise(resolve => server.close(resolve));
  27. }
  28. }
  29. main().catch(error => {
  30. console.error(error);
  31. process.exitCode = 1;
  32. });