|
10 | 10 | "children": [{ |
11 | 11 | "data": {"text": "分类:功能案例"}, |
12 | 12 | "children": [{ |
13 | | - "data": {"text": "【AIGC】飞书启用且配置完整-校验通过"}, |
| 13 | + "data": {"text": "【AIGC】节点选择发送飞书且配置完整-校验通过"}, |
14 | 14 | "children": [ |
15 | | - {"data": {"text": "条件:wds.dss.appconn.feishu.enabled=true,appId和appSecret已配置有效值"}, "children": []}, |
| 15 | + {"data": {"text": "条件:sendemail节点参数sendFeishu=true,appId和appSecret已配置有效值"}, "children": []}, |
16 | 16 | {"data": {"text": "步骤:\n1、设置所有飞书配置项为有效值\n2、调用FeishuConfig.validate()"}, "children": []}, |
17 | | - {"data": {"text": "预期结果:不抛出任何异常,日志输出Feishu integration is enabled"}, "children": []} |
| 17 | + {"data": {"text": "预期结果:不抛出任何异常,日志输出Feishu integration config validated"}, "children": []} |
18 | 18 | ] |
19 | 19 | }, { |
20 | | - "data": {"text": "【AIGC】飞书启用但appId为空-校验失败"}, |
| 20 | + "data": {"text": "【AIGC】节点选择发送飞书但appId为空-校验失败"}, |
21 | 21 | "children": [ |
22 | | - {"data": {"text": "条件:wds.dss.appconn.feishu.enabled=true,wds.dss.appconn.feishu.app.id为空字符串"}, "children": []}, |
23 | | - {"data": {"text": "步骤:\n1、设置enabled=true,appId为空\n2、调用FeishuConfig.validate()"}, "children": []}, |
| 22 | + {"data": {"text": "条件:sendemail节点参数sendFeishu=true,wds.dss.appconn.feishu.app.id为空字符串"}, "children": []}, |
| 23 | + {"data": {"text": "步骤:\n1、设置sendFeishu=true,appId为空\n2、调用FeishuConfig.validate()"}, "children": []}, |
24 | 24 | {"data": {"text": "预期结果:抛出IllegalArgumentException,异常消息包含app.id is not configured"}, "children": []} |
25 | 25 | ] |
26 | 26 | }, { |
27 | | - "data": {"text": "【AIGC】飞书启用但appSecret为空-校验失败"}, |
| 27 | + "data": {"text": "【AIGC】节点选择发送飞书但appSecret为空-校验失败"}, |
28 | 28 | "children": [ |
29 | | - {"data": {"text": "条件:wds.dss.appconn.feishu.enabled=true,wds.dss.appconn.feishu.app.secret为空字符串"}, "children": []}, |
30 | | - {"data": {"text": "步骤:\n1、设置enabled=true,appSecret为空\n2、调用FeishuConfig.validate()"}, "children": []}, |
| 29 | + {"data": {"text": "条件:sendemail节点参数sendFeishu=true,wds.dss.appconn.feishu.app.secret为空字符串"}, "children": []}, |
| 30 | + {"data": {"text": "步骤:\n1、设置sendFeishu=true,appSecret为空\n2、调用FeishuConfig.validate()"}, "children": []}, |
31 | 31 | {"data": {"text": "预期结果:抛出IllegalArgumentException,异常消息包含app.secret is not configured"}, "children": []} |
32 | 32 | ] |
33 | 33 | }, { |
34 | | - "data": {"text": "【AIGC】飞书未启用-校验通过"}, |
| 34 | + "data": {"text": "【AIGC】节点未选择发送飞书-校验通过"}, |
35 | 35 | "children": [ |
36 | | - {"data": {"text": "条件:wds.dss.appconn.feishu.enabled=false"}, "children": []}, |
37 | | - {"data": {"text": "步骤:\n1、设置enabled=false\n2、调用FeishuConfig.validate()"}, "children": []}, |
38 | | - {"data": {"text": "预期结果:不抛出异常,日志输出Feishu integration is disabled"}, "children": []} |
| 36 | + {"data": {"text": "条件:sendemail节点参数sendFeishu=false,执行逻辑不调用FeishuMessageSender.send"}, "children": []}, |
| 37 | + {"data": {"text": "步骤:\n1、设置sendFeishu=false\n2、调用FeishuConfig.validate()"}, "children": []}, |
| 38 | + {"data": {"text": "预期结果:仅发送邮件,不调用FeishuConfig.validate()"}, "children": []} |
39 | 39 | ] |
40 | 40 | }, { |
41 | 41 | "data": {"text": "【AIGC】飞书配置默认值验证"}, |
42 | 42 | "children": [ |
43 | 43 | {"data": {"text": "条件:未配置任何飞书相关配置项"}, "children": []}, |
44 | 44 | {"data": {"text": "步骤:\n1、不设置任何飞书配置\n2、读取各配置项的默认值"}, "children": []}, |
45 | | - {"data": {"text": "预期结果:FEISHU_ENABLED=false,APP_ID和APP_SECRET为空字符串,API_BASE_URL为https://open.feishu.cn/open-apis"}, "children": []} |
| 45 | + {"data": {"text": "预期结果:APP_ID和APP_SECRET为空字符串,API_BASE_URL为https://open.feishu.cn/open-apis"}, "children": []} |
46 | 46 | ] |
47 | 47 | }] |
48 | 48 | }] |
|
165 | 165 | {"data": {"text": "预期结果:不抛出异常,不调用任何飞书API"}, "children": []} |
166 | 166 | ] |
167 | 167 | }, { |
168 | | - "data": {"text": "【AIGC】发送飞书消息-feishuTo仅含空格和逗号"}, |
| 168 | + "data": {"text": "【AIGC】发送飞书消息-feishuTo仅含空格和分号"}, |
169 | 169 | "children": [ |
170 | | - {"data": {"text": "条件:Email对象feishuTo为\" , , \""}, "children": []}, |
171 | | - {"data": {"text": "步骤:\n1、构造Email对象feishuTo为空格和逗号\n2、调用FeishuMessageSender.send(email)"}, "children": []}, |
| 170 | + {"data": {"text": "条件:Email对象feishuTo为\" ; ; \""}, "children": []}, |
| 171 | + {"data": {"text": "步骤:\n1、构造Email对象feishuTo为空格和分号\n2、调用FeishuMessageSender.send(email)"}, "children": []}, |
172 | 172 | {"data": {"text": "预期结果:不抛出异常,receivers列表为空,日志输出No valid Feishu receiver IDs found"}, "children": []} |
173 | 173 | ] |
174 | 174 | }, { |
175 | | - "data": {"text": "【AIGC】发送飞书消息-多接收者逗号分隔"}, |
| 175 | + "data": {"text": "【AIGC】发送飞书消息-多接收者分号分隔"}, |
176 | 176 | "children": [ |
177 | | - {"data": {"text": "条件:Email对象feishuTo为ou_user1,ou_user2,ou_user3,含1个附件"}, "children": []}, |
| 177 | + {"data": {"text": "条件:Email对象feishuTo为ou_user1;ou_user2;ou_user3,含1个附件"}, "children": []}, |
178 | 178 | {"data": {"text": "步骤:\n1、构造Email对象feishuTo含3个接收者\n2、Mock FeishuClient所有方法成功\n3、调用FeishuMessageSender.send(email)"}, "children": []}, |
179 | 179 | {"data": {"text": "预期结果:sendTextMessage调用3次,uploadFile调用1次,sendFileMessage调用3次,总计7次飞书API调用"}, "children": []} |
180 | 180 | ] |
181 | 181 | }, { |
182 | 182 | "data": {"text": "【AIGC】发送飞书消息-接收者含前后空格"}, |
183 | 183 | "children": [ |
184 | | - {"data": {"text": "条件:Email对象feishuTo为\" ou_user1 , ou_user2 \""}, "children": []}, |
| 184 | + {"data": {"text": "条件:Email对象feishuTo为\" ou_user1 ; ou_user2 \""}, "children": []}, |
185 | 185 | {"data": {"text": "步骤:\n1、构造Email对象feishuTo含带空格的接收者\n2、调用FeishuMessageSender.send(email)"}, "children": []}, |
186 | | - {"data": {"text": "预期结果:空格被trim,receivers为[ou_user1,ou_user2],每个接收者收到消息"}, "children": []} |
| 186 | + {"data": {"text": "预期结果:空格被trim,receivers分别为ou_user1和ou_user2,每个接收者收到消息"}, "children": []} |
187 | 187 | ] |
188 | 188 | }, { |
189 | 189 | "data": {"text": "【AIGC】发送飞书消息-subject为null时使用默认主题"}, |
|
261 | 261 | }, { |
262 | 262 | "data": {"text": "【AIGC】飞书配置校验失败-validate抛出IllegalArgumentException"}, |
263 | 263 | "children": [ |
264 | | - {"data": {"text": "条件:飞书enabled=true但appId为空"}, "children": []}, |
265 | | - {"data": {"text": "步骤:\n1、设置FeishuConfig.enabled=true, appId为空\n2、构造Email对象feishuTo=ou_user1\n3、调用FeishuMessageSender.send(email)"}, "children": []}, |
| 264 | + {"data": {"text": "条件:节点sendFeishu=true但appId为空"}, "children": []}, |
| 265 | + {"data": {"text": "步骤:\n1、设置节点参数sendFeishu=true,并将appId为空\n2、构造Email对象feishuTo=ou_user1\n3、调用FeishuMessageSender.send(email)"}, "children": []}, |
266 | 266 | {"data": {"text": "预期结果:抛出IllegalArgumentException,消息包含app.id is not configured"}, "children": []} |
267 | 267 | ] |
268 | 268 | }] |
|
272 | 272 | "children": [{ |
273 | 273 | "data": {"text": "分类:流程案例"}, |
274 | 274 | "children": [{ |
275 | | - "data": {"text": "【AIGC】邮件发送后-飞书启用且feishuTo有值-执行飞书发送"}, |
| 275 | + "data": {"text": "【AIGC】邮件发送后-节点选择发送飞书且feishuTo有值-执行飞书发送"}, |
276 | 276 | "children": [ |
277 | | - {"data": {"text": "条件:飞书enabled=true,feishuTo=ou_user1,邮件发送成功,飞书Mock成功"}, "children": []}, |
| 277 | + {"data": {"text": "条件:节点sendFeishu=true,feishuTo=ou_user1,邮件发送成功,飞书Mock成功"}, "children": []}, |
278 | 278 | {"data": {"text": "步骤:\n1、Mock emailSender.send()成功\n2、Mock FeishuMessageSender.send()成功\n3、构造requestRef设置feishuTo=ou_user1\n4、调用execute(requestRef)"}, "children": []}, |
279 | 279 | {"data": {"text": "预期结果:邮件先发送成功,FeishuMessageSender.send()被调用,返回成功响应"}, "children": []} |
280 | 280 | ] |
281 | 281 | }, { |
282 | | - "data": {"text": "【AIGC】邮件发送后-飞书未启用-不执行飞书发送"}, |
| 282 | + "data": {"text": "【AIGC】邮件发送后-节点未选择发送飞书-不执行飞书发送"}, |
283 | 283 | "children": [ |
284 | | - {"data": {"text": "条件:飞书enabled=false,feishuTo=ou_user1"}, "children": []}, |
285 | | - {"data": {"text": "步骤:\n1、设置enabled=false\n2、Mock emailSender.send()成功\n3、构造requestRef设置feishuTo=ou_user1\n4、调用execute(requestRef)"}, "children": []}, |
| 284 | + {"data": {"text": "条件:节点sendFeishu=false,feishuTo=ou_user1"}, "children": []}, |
| 285 | + {"data": {"text": "步骤:\n1、设置sendFeishu=false\n2、Mock emailSender.send()成功\n3、构造requestRef设置feishuTo=ou_user1\n4、调用execute(requestRef)"}, "children": []}, |
286 | 286 | {"data": {"text": "预期结果:仅发送邮件,FeishuMessageSender.send()不被调用,返回成功响应"}, "children": []} |
287 | 287 | ] |
288 | 288 | }, { |
289 | 289 | "data": {"text": "【AIGC】邮件发送后-feishuTo为空-不执行飞书发送"}, |
290 | 290 | "children": [ |
291 | | - {"data": {"text": "条件:飞书enabled=true,feishuTo为null或空字符串"}, "children": []}, |
292 | | - {"data": {"text": "步骤:\n1、设置enabled=true\n2、Mock emailSender.send()成功\n3、构造requestRef不设置feishuTo\n4、调用execute(requestRef)"}, "children": []}, |
| 291 | + {"data": {"text": "条件:节点sendFeishu=true,feishuTo为null或空字符串"}, "children": []}, |
| 292 | + {"data": {"text": "步骤:\n1、设置sendFeishu=true\n2、Mock emailSender.send()成功\n3、构造requestRef不设置feishuTo\n4、调用execute(requestRef)"}, "children": []}, |
293 | 293 | {"data": {"text": "预期结果:仅发送邮件,FeishuMessageSender.send()不被调用,返回成功响应"}, "children": []} |
294 | 294 | ] |
295 | 295 | }, { |
296 | 296 | "data": {"text": "【AIGC】飞书发送失败-节点标记为错误"}, |
297 | 297 | "children": [ |
298 | | - {"data": {"text": "条件:飞书enabled=true,feishuTo=ou_user1,邮件发送成功,飞书发送失败"}, "children": []}, |
| 298 | + {"data": {"text": "条件:节点sendFeishu=true,feishuTo=ou_user1,邮件发送成功,飞书发送失败"}, "children": []}, |
299 | 299 | {"data": {"text": "步骤:\n1、Mock emailSender.send()成功\n2、Mock FeishuMessageSender.send()抛出EmailSendFailedException\n3、构造requestRef设置feishuTo=ou_user1\n4、调用execute(requestRef)"}, "children": []}, |
300 | 300 | {"data": {"text": "预期结果:邮件发送成功但飞书发送失败,返回错误响应,错误消息为飞书发送失败!"}, "children": []} |
301 | 301 | ] |
302 | 302 | }, { |
303 | 303 | "data": {"text": "【AIGC】邮件发送失败-不执行飞书发送"}, |
304 | 304 | "children": [ |
305 | | - {"data": {"text": "条件:邮件发送失败,飞书已启用且feishuTo有值"}, "children": []}, |
| 305 | + {"data": {"text": "条件:邮件发送失败,节点已选择发送飞书且feishuTo有值"}, "children": []}, |
306 | 306 | {"data": {"text": "步骤:\n1、Mock emailSender.send()抛出异常\n2、构造requestRef设置feishuTo=ou_user1\n3、调用execute(requestRef)"}, "children": []}, |
307 | 307 | {"data": {"text": "预期结果:邮件发送失败时立即返回错误,FeishuMessageSender.send()不被调用,错误消息为发送邮件失败!"}, "children": []} |
308 | 308 | ] |
309 | 309 | }, { |
310 | 310 | "data": {"text": "【AIGC】feishuTo为纯空格-不执行飞书发送"}, |
311 | 311 | "children": [ |
312 | | - {"data": {"text": "条件:飞书enabled=true,feishuTo为纯空格"}, "children": []}, |
313 | | - {"data": {"text": "步骤:\n1、设置enabled=true\n2、Mock emailSender.send()成功\n3、构造requestRef设置feishuTo为纯空格\n4、调用execute(requestRef)"}, "children": []}, |
| 312 | + {"data": {"text": "条件:节点sendFeishu=true,feishuTo为纯空格"}, "children": []}, |
| 313 | + {"data": {"text": "步骤:\n1、设置sendFeishu=true\n2、Mock emailSender.send()成功\n3、构造requestRef设置feishuTo为纯空格\n4、调用execute(requestRef)"}, "children": []}, |
314 | 314 | {"data": {"text": "预期结果:仅发送邮件,feishuTo.trim.nonEmpty为false跳过飞书发送"}, "children": []} |
315 | 315 | ] |
316 | 316 | }] |
|
322 | 322 | "children": [{ |
323 | 323 | "data": {"text": "【AIGC】从runtimeMap读取feishuTo-正常值"}, |
324 | 324 | "children": [ |
325 | | - {"data": {"text": "条件:runtimeMap中feishuTo=ou_user1,ou_user2"}, "children": []}, |
326 | | - {"data": {"text": "步骤:\n1、构造requestRef,runtimeMap中设置feishuTo=ou_user1,ou_user2\n2、调用emailGenerator.generateEmail(requestRef)\n3、验证email.getFeishuTo()"}, "children": []}, |
327 | | - {"data": {"text": "预期结果:email.getFeishuTo()返回ou_user1,ou_user2"}, "children": []} |
| 325 | + {"data": {"text": "条件:runtimeMap中feishuTo=ou_user1;ou_user2"}, "children": []}, |
| 326 | + {"data": {"text": "步骤:\n1、构造requestRef,runtimeMap中设置feishuTo=ou_user1;ou_user2\n2、调用emailGenerator.generateEmail(requestRef)\n3、验证email.getFeishuTo()"}, "children": []}, |
| 327 | + {"data": {"text": "预期结果:email.getFeishuTo()返回ou_user1;ou_user2"}, "children": []} |
328 | 328 | ] |
329 | 329 | }, { |
330 | 330 | "data": {"text": "【AIGC】从runtimeMap读取feishuTo-不存在时默认为空字符串"}, |
|
412 | 412 | {"data": {"text": "预期结果:邮件发送成功,飞书接收者仅收到文本消息,不发送文件消息"}, "children": []} |
413 | 413 | ] |
414 | 414 | }, { |
415 | | - "data": {"text": "【AIGC】端到端-飞书未启用仅发邮件"}, |
| 415 | + "data": {"text": "【AIGC】端到端-节点未选择发送飞书仅发邮件"}, |
416 | 416 | "children": [ |
417 | | - {"data": {"text": "条件:飞书enabled=false,sendemail节点配置了feishuTo"}, "children": []}, |
418 | | - {"data": {"text": "步骤:\n1、设置飞书enabled=false\n2、配置sendemail节点设置feishuTo\n3、执行工作流"}, "children": []}, |
| 417 | + {"data": {"text": "条件:节点sendFeishu=false,sendemail节点配置了feishuTo"}, "children": []}, |
| 418 | + {"data": {"text": "步骤:\n1、设置节点sendFeishu=false\n2、配置sendemail节点设置feishuTo\n3、执行工作流"}, "children": []}, |
419 | 419 | {"data": {"text": "预期结果:仅发送邮件,飞书不发送任何消息,工作流节点状态为成功"}, "children": []} |
420 | 420 | ] |
421 | 421 | }, { |
422 | 422 | "data": {"text": "【AIGC】端到端-飞书发送失败工作流节点失败"}, |
423 | 423 | "children": [ |
424 | | - {"data": {"text": "条件:飞书enabled=true,appId/appSecret配置错误或API不可达,feishuTo有值"}, "children": []}, |
| 424 | + {"data": {"text": "条件:节点sendFeishu=true,appId/appSecret配置错误或API不可达,feishuTo有值"}, "children": []}, |
425 | 425 | {"data": {"text": "步骤:\n1、配置无效的飞书appId/appSecret\n2、配置sendemail节点设置feishuTo\n3、执行工作流"}, "children": []}, |
426 | 426 | {"data": {"text": "预期结果:邮件发送成功但飞书发送失败,工作流节点标记为失败,日志包含飞书发送失败"}, "children": []} |
427 | 427 | ] |
|
439 | 439 | {"data": {"text": "预期结果:返回自定义URL,飞书API请求发送到自定义地址"}, "children": []} |
440 | 440 | ] |
441 | 441 | }, { |
442 | | - "data": {"text": "【AIGC】配置项-feishu.enabled设为true字符串"}, |
| 442 | + "data": {"text": "【AIGC】节点参数-sendFeishu设为true字符串"}, |
443 | 443 | "children": [ |
444 | 444 | {"data": {"text": "条件:配置值为字符串true"}, "children": []}, |
445 | | - {"data": {"text": "步骤:\n1、设置wds.dss.appconn.feishu.enabled=true\n2、调用FeishuConfig.isEnabled"}, "children": []}, |
446 | | - {"data": {"text": "预期结果:isEnabled返回true(布尔值)"}, "children": []} |
| 445 | + {"data": {"text": "步骤:\n1、设置sendemail节点参数sendFeishu=true\n2、执行SendEmailRefExecutionOperation并读取runtimeMap中的sendFeishu"}, "children": []}, |
| 446 | + {"data": {"text": "预期结果:sendFeishu按true处理,满足feishuTo非空时执行飞书发送"}, "children": []} |
447 | 447 | ] |
448 | 448 | }] |
449 | 449 | }] |
|
452 | 452 | }] |
453 | 453 | } |
454 | 454 | } |
| 455 | + |
| 456 | + |
| 457 | + |
0 commit comments