mirror of
https://github.com/larksuite/cli.git
synced 2026-07-03 14:02:43 +08:00
Fix IM shortcut behavior for audio messages to match the Feishu/Lark file upload API: --audio is for voice messages and supports only Opus audio. Non-Opus local/URL inputs such as mp3 and wav are now rejected before upload with an actionable typed validation error. Users can still send those files as attachments with --file
6.6 KiB
6.6 KiB
IM CLI E2E Coverage
Metrics
- Denominator: 30 leaf commands
- Covered: 11
- Coverage: 36.7%
Summary
- TestIM_ChatUpdateWorkflow: proves
im +chat-create,im +chat-update, andim chats get; keyt.Run(...)proof points areupdate chat name as bot,update chat description as bot, andget updated chat as bot. - TestIM_ChatsGetWorkflow: proves
im chats geton a fresh chat fixture viaget chat info as bot. - TestIM_ChatsLinkWorkflow: proves
im chats linkviaget chat share link as bot. - TestIM_ChatMessageWorkflowAsUser: proves the user chat message flow through
create chat as user,send message as user, andlist chat messages as userwith the created message ID and content asserted from read-after-write output. - TestIM_MessageGetWorkflowAsUser: proves user message readback through
batch get message as userafter creating a fresh chat and sending a unique message. - TestIM_MessageReplyWorkflowAsBot: proves threaded reply flow through
reply to message in thread as botandlist thread replies as bot, reading back the reply fromim +threads-messages-list. - TestIM_MessagesSendAudioDryRunRejectsNonOpus: proves the
im +messages-send --audiodry-run validation rejects non-Opus local audio before upload, with typed validation metadata and recovery guidance. - TestIM_MessageForwardWorkflowAsUser: proves UAT-backed API forwarding through
im messages forwardandim threads forwardusing a fresh message/thread fixture; skips the forward assertions when the current test app/UAT lacks IM forward permission. - Blocked area:
im +chat-searchdid not reliably return freshly created private chats in UAT, andim +messages-searchdid not reliably index freshly sent messages in time for a deterministic read-after-write assertion, so both remain uncovered.
Command Table
| Status | Cmd | Type | Testcase | Key parameter shapes | Notes / uncovered reason |
|---|---|---|---|---|---|
| ✓ | im +chat-create | shortcut | im/chat_message_workflow_test.go::TestIM_ChatMessageWorkflowAsUser/create chat as user; im/chat_workflow_test.go::TestIM_ChatUpdateWorkflow; im/chat_workflow_test.go::TestIM_ChatsGetWorkflow; im/chat_workflow_test.go::TestIM_ChatsLinkWorkflow; im/message_get_workflow_test.go::TestIM_MessageGetWorkflowAsUser; im/message_reply_workflow_test.go::TestIM_MessageReplyWorkflowAsBot | --name; --type private |
covered via workflow setup with created chat IDs asserted |
| ✓ | im +chat-messages-list | shortcut | im/chat_message_workflow_test.go::TestIM_ChatMessageWorkflowAsUser/list chat messages as user; im/message_reply_workflow_test.go::TestIM_MessageReplyWorkflowAsBot/list thread replies as bot | --chat-id; --start; --end |
reads back created message and discovers thread ID |
| ✕ | im +chat-search | shortcut | none | UAT did not reliably return freshly created private chats, so it is left uncovered | |
| ✓ | im +chat-update | shortcut | im/chat_workflow_test.go::TestIM_ChatUpdateWorkflow/update chat name as bot; im/chat_workflow_test.go::TestIM_ChatUpdateWorkflow/update chat description as bot | --chat-id; --name; --description |
|
| ✓ | im +messages-mget | shortcut | im/message_get_workflow_test.go::TestIM_MessageGetWorkflowAsUser/batch get message as user | --message-ids |
verifies sent message content by ID |
| ✓ | im +messages-reply | shortcut | im/message_reply_workflow_test.go::TestIM_MessageReplyWorkflowAsBot/reply to message in thread as bot | --message-id; --text; --reply-in-thread |
reply is read back via thread list |
| ✕ | im +messages-resources-download | shortcut | none | needs a stable image/file message fixture plus file_key proof; left uncovered | |
| ✕ | im +messages-search | shortcut | none | freshly sent messages were not indexed deterministically in UAT time for a stable read-after-write proof | |
| ✓ | im +messages-send | shortcut | im/chat_message_workflow_test.go::TestIM_ChatMessageWorkflowAsUser/send message as user; im/message_get_workflow_test.go::TestIM_MessageGetWorkflowAsUser; im/message_reply_workflow_test.go::TestIM_MessageReplyWorkflowAsBot; im/message_audio_dryrun_test.go::TestIM_MessagesSendAudioDryRunRejectsNonOpus | --chat-id; --text; --audio ./voice.mp3 --dry-run |
live text sends feed follow-up reads; dry-run pins non-Opus audio validation before upload |
| ✓ | im +threads-messages-list | shortcut | im/message_reply_workflow_test.go::TestIM_MessageReplyWorkflowAsBot/list thread replies as bot | --thread |
proves threaded reply is persisted |
| ✕ | im chat.members create | api | none | no member mutation workflow yet | |
| ✕ | im chat.members get | api | none | no member get workflow yet | |
| ✕ | im chats create | api | none | only covered indirectly through +chat-create |
|
| ✓ | im chats get | api | im/chat_workflow_test.go::TestIM_ChatUpdateWorkflow/get updated chat as bot; im/chat_workflow_test.go::TestIM_ChatsGetWorkflow/get chat info as bot | chat_id in --params |
|
| ✓ | im chats link | api | im/chat_workflow_test.go::TestIM_ChatsLinkWorkflow/get chat share link as bot | chat_id in --params; validity_period in --data |
|
| ✕ | im chats list | api | none | no chats list workflow yet | |
| ✕ | im chats update | api | none | only covered indirectly through +chat-update |
|
| ✕ | im images create | api | none | no image upload workflow yet | |
| ✕ | im messages delete | api | none | no recall workflow yet | |
| ✓ | im messages forward | api | im/message_forward_workflow_test.go::TestIM_MessageForwardWorkflowAsUser/forward message with api command as user | message_id; receive_id_type; uuid; receive_id |
forwards a fresh message back into the test chat using UAT |
| ✕ | im messages merge_forward | api | none | no merge-forward workflow yet | |
| ✕ | im messages read_users | api | none | no read-user workflow yet | |
| ✓ | im threads forward | api | im/message_forward_workflow_test.go::TestIM_MessageForwardWorkflowAsUser/forward thread with api command as user | thread_id; receive_id_type; uuid; receive_id |
forwards a fresh thread back into the test chat using UAT |
| ✕ | im pins create | api | none | pin workflows not covered | |
| ✕ | im pins delete | api | none | pin workflows not covered | |
| ✕ | im pins list | api | none | pin workflows not covered | |
| ✕ | im reactions batch_query | api | none | reaction workflows not covered | |
| ✕ | im reactions create | api | none | reaction workflows not covered | |
| ✕ | im reactions delete | api | none | reaction workflows not covered | |
| ✕ | im reactions list | api | none | reaction workflows not covered |