新增sms的mock
This commit is contained in:
@@ -1,19 +1,21 @@
|
|||||||
// Message Gateway 内容发送接口 Mock:POST /ewl/msgw/v1/messages/content/send
|
// Message Gateway 内容发送接口 Mock:POST /ewl/msgw/v1/messages/content/send
|
||||||
// 后端短信已从旧 SMS Hub(/SMSToken + /SMSRequest/Post)切换到该接口,认证复用 EDIP Token。
|
// 后端短信已从旧 SMS Hub(/SMSToken + /SMSRequest/Post)切换到该接口,认证复用 EDIP Token。
|
||||||
// 响应严格按真实网关信封:HTTP 200 + status/errorCode,成功时 smsid 为全小写字段、errorCode 为空字符串。
|
// 响应严格按真实网关信封:HTTP 200 + status/errorCode,成功时 smsid 为全小写字段、errorCode 为空字符串。
|
||||||
|
const { getForcedErrorCode, getForcedErrorMsg } = require('./smsErrorState')
|
||||||
|
|
||||||
function registerMessageGatewayContentSendRoute({ app }) {
|
function registerMessageGatewayContentSendRoute({ app }) {
|
||||||
app.post('/ewl/msgw/v1/messages/content/send', (req, res) => {
|
app.post('/ewl/msgw/v1/messages/content/send', (req, res) => {
|
||||||
const data = req.body?.data || {}
|
const data = req.body?.data || {}
|
||||||
const recipients = Array.isArray(data.recipients) ? data.recipients : []
|
const recipients = Array.isArray(data.recipients) ? data.recipients : []
|
||||||
|
|
||||||
// 错误注入:MOCK_SMS_FORCE_ERROR_CODE=8923 模拟供应商暂不可用(后端应重试),
|
// 错误注入:优先取运行时开关(/mock-api/sms/content-send-error),回落环境变量。
|
||||||
// MOCK_SMS_FORCE_ERROR_CODE=8907 模拟号码非法(后端不应重试)
|
// 8923 属供应商暂不可用(后端应重试),8907 属号码非法(后端不应重试)
|
||||||
const forcedErrorCode = process.env.MOCK_SMS_FORCE_ERROR_CODE || ''
|
const forcedErrorCode = getForcedErrorCode()
|
||||||
if (forcedErrorCode) {
|
if (forcedErrorCode) {
|
||||||
return res.status(200).json({
|
return res.status(200).json({
|
||||||
status: false,
|
status: false,
|
||||||
errorCode: forcedErrorCode,
|
errorCode: forcedErrorCode,
|
||||||
message: process.env.MOCK_SMS_FORCE_ERROR_MSG || 'Mock message gateway error',
|
message: getForcedErrorMsg(),
|
||||||
data: null,
|
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 registerPromotionRedeemFulfillmentOverridesRoute = require('./mockApi/promotionRedeemFulfillmentOverrides')
|
||||||
const registerSmsPortalRoutes = require('./sms/smsPortal')
|
const registerSmsPortalRoutes = require('./sms/smsPortal')
|
||||||
const registerMessageGatewayContentSendRoute = require('./ewl/msgw/contentSend')
|
const registerMessageGatewayContentSendRoute = require('./ewl/msgw/contentSend')
|
||||||
|
const registerSmsContentSendErrorOverrideRoute = require('./mockApi/smsContentSendErrorOverride')
|
||||||
|
|
||||||
function registerRoutes({ app, context, ldapService }) {
|
function registerRoutes({ app, context, ldapService }) {
|
||||||
registerHealthzRoute({ app, ldapService })
|
registerHealthzRoute({ app, ldapService })
|
||||||
@@ -48,6 +49,7 @@ function registerRoutes({ app, context, ldapService }) {
|
|||||||
registerPromotionRedeemFulfillmentOverridesRoute({ app, context })
|
registerPromotionRedeemFulfillmentOverridesRoute({ app, context })
|
||||||
registerSmsPortalRoutes({ app })
|
registerSmsPortalRoutes({ app })
|
||||||
registerMessageGatewayContentSendRoute({ app })
|
registerMessageGatewayContentSendRoute({ app })
|
||||||
|
registerSmsContentSendErrorOverrideRoute({ app })
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = { registerRoutes }
|
module.exports = { registerRoutes }
|
||||||
|
|||||||
Reference in New Issue
Block a user