新增sms的mock
This commit is contained in:
@@ -1,19 +1,21 @@
|
||||
// Message Gateway 内容发送接口 Mock:POST /ewl/msgw/v1/messages/content/send
|
||||
// 后端短信已从旧 SMS Hub(/SMSToken + /SMSRequest/Post)切换到该接口,认证复用 EDIP Token。
|
||||
// 响应严格按真实网关信封:HTTP 200 + status/errorCode,成功时 smsid 为全小写字段、errorCode 为空字符串。
|
||||
const { getForcedErrorCode, getForcedErrorMsg } = require('./smsErrorState')
|
||||
|
||||
function registerMessageGatewayContentSendRoute({ app }) {
|
||||
app.post('/ewl/msgw/v1/messages/content/send', (req, res) => {
|
||||
const data = req.body?.data || {}
|
||||
const recipients = Array.isArray(data.recipients) ? data.recipients : []
|
||||
|
||||
// 错误注入:MOCK_SMS_FORCE_ERROR_CODE=8923 模拟供应商暂不可用(后端应重试),
|
||||
// MOCK_SMS_FORCE_ERROR_CODE=8907 模拟号码非法(后端不应重试)
|
||||
const forcedErrorCode = process.env.MOCK_SMS_FORCE_ERROR_CODE || ''
|
||||
// 错误注入:优先取运行时开关(/mock-api/sms/content-send-error),回落环境变量。
|
||||
// 8923 属供应商暂不可用(后端应重试),8907 属号码非法(后端不应重试)
|
||||
const forcedErrorCode = getForcedErrorCode()
|
||||
if (forcedErrorCode) {
|
||||
return res.status(200).json({
|
||||
status: false,
|
||||
errorCode: forcedErrorCode,
|
||||
message: process.env.MOCK_SMS_FORCE_ERROR_MSG || 'Mock message gateway error',
|
||||
message: getForcedErrorMsg(),
|
||||
data: null,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
// Message Gateway 内容发送 Mock 的运行时错误码开关。
|
||||
// 目的:联调时可在进程内切换 errorCode(如 8923 可重试、8907 不可重试),不必反复重启 Mock 进程。
|
||||
// 初值取环境变量 MOCK_SMS_FORCE_ERROR_CODE,之后由 /mock-api/sms/content-send-error 覆盖。
|
||||
const state = {
|
||||
forcedErrorCode: (process.env.MOCK_SMS_FORCE_ERROR_CODE || '').trim(),
|
||||
forcedErrorMsg: process.env.MOCK_SMS_FORCE_ERROR_MSG || 'Mock message gateway error',
|
||||
}
|
||||
|
||||
function setForcedErrorCode(errorCode, errorMsg) {
|
||||
state.forcedErrorCode = errorCode == null ? '' : String(errorCode).trim()
|
||||
if (errorMsg != null && String(errorMsg).trim() !== '') {
|
||||
state.forcedErrorMsg = String(errorMsg).trim()
|
||||
}
|
||||
return { errorCode: state.forcedErrorCode, errorMsg: state.forcedErrorMsg }
|
||||
}
|
||||
|
||||
function getForcedErrorCode() {
|
||||
return state.forcedErrorCode
|
||||
}
|
||||
|
||||
function getForcedErrorMsg() {
|
||||
return state.forcedErrorMsg
|
||||
}
|
||||
|
||||
module.exports = { setForcedErrorCode, getForcedErrorCode, getForcedErrorMsg }
|
||||
@@ -0,0 +1,38 @@
|
||||
// Message Gateway 内容发送 Mock 的错误码开关节点(仅联调用)。
|
||||
// 用途:进程内切换 errorCode,验后端重试语义(8911-8930 应重试,8901-8910 不应重试),避免反复重启 Mock。
|
||||
const { setForcedErrorCode, getForcedErrorCode, getForcedErrorMsg } = require('../ewl/msgw/smsErrorState')
|
||||
|
||||
function registerSmsContentSendErrorOverrideRoute({ app }) {
|
||||
const route = '/mock-api/sms/content-send-error'
|
||||
|
||||
app.get(route, (req, res) =>
|
||||
res.status(200).json({
|
||||
success: true,
|
||||
message: 'SMS content send error override retrieved successfully.',
|
||||
data: { errorCode: getForcedErrorCode(), errorMsg: getForcedErrorMsg() },
|
||||
}),
|
||||
)
|
||||
|
||||
app.post(route, (req, res) => {
|
||||
const body = req.body && typeof req.body === 'object' ? req.body : {}
|
||||
const override = setForcedErrorCode(body.errorCode ?? '', body.errorMsg)
|
||||
|
||||
return res.status(200).json({
|
||||
success: true,
|
||||
message: 'SMS content send error override saved successfully.',
|
||||
data: override,
|
||||
})
|
||||
})
|
||||
|
||||
app.delete(route, (req, res) => {
|
||||
const cleared = setForcedErrorCode('', null)
|
||||
|
||||
return res.status(200).json({
|
||||
success: true,
|
||||
message: 'SMS content send error override cleared successfully.',
|
||||
data: cleared,
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
module.exports = registerSmsContentSendErrorOverrideRoute
|
||||
@@ -22,6 +22,7 @@ const registerPrizeRedemptionsSyncRoute = require('./api/v1/prizeRedemptionsSync
|
||||
const registerPromotionRedeemFulfillmentOverridesRoute = require('./mockApi/promotionRedeemFulfillmentOverrides')
|
||||
const registerSmsPortalRoutes = require('./sms/smsPortal')
|
||||
const registerMessageGatewayContentSendRoute = require('./ewl/msgw/contentSend')
|
||||
const registerSmsContentSendErrorOverrideRoute = require('./mockApi/smsContentSendErrorOverride')
|
||||
|
||||
function registerRoutes({ app, context, ldapService }) {
|
||||
registerHealthzRoute({ app, ldapService })
|
||||
@@ -48,6 +49,7 @@ function registerRoutes({ app, context, ldapService }) {
|
||||
registerPromotionRedeemFulfillmentOverridesRoute({ app, context })
|
||||
registerSmsPortalRoutes({ app })
|
||||
registerMessageGatewayContentSendRoute({ app })
|
||||
registerSmsContentSendErrorOverrideRoute({ app })
|
||||
}
|
||||
|
||||
module.exports = { registerRoutes }
|
||||
|
||||
Reference in New Issue
Block a user