yao/integrations/feishu/e2e_test.go
Max 33efd3e890 Add Feishu and DingTalk integration support in robot lifecycle</message>
<message>
- Introduce Feishu and DingTalk adapters in the robot lifecycle for enhanced integration capabilities.
- Update the integration dispatcher to include new adapters for handling events from Feishu and DingTalk.
- Modify the configuration structure to support settings for both Feishu and DingTalk integrations.
- Enhance the integration parsing logic to recognize and process configurations for Feishu and DingTalk.
2026-03-02 07:36:34 +08:00

70 lines
2.1 KiB
Go

package feishu
import (
"context"
"testing"
"time"
)
// TestE2E_01_BotCredentials verifies the Feishu app credentials by
// sending a simple text message send request (if a chat_id is available).
func TestE2E_01_BotCredentials(t *testing.T) {
skipIfNoCreds(t)
b := testBot()
ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second)
defer cancel()
// Verify credentials by attempting to send a message.
// This will fail with a descriptive error if credentials are invalid.
_, err := b.sendMessage(ctx, "open_id", "test_invalid_open_id", "text", `{"text":"e2e test"}`)
if err == nil {
t.Log("message send succeeded (unexpected, but credentials are valid)")
return
}
// We expect a Feishu API error (not a network error), which proves
// the credentials were accepted and the API was reached.
t.Logf("API response (expected error for invalid open_id): %v", err)
}
// TestE2E_02_SendMessage tests sending a real message if FEISHU_TEST_CHAT_ID is set.
func TestE2E_02_SendMessage(t *testing.T) {
skipIfNoCreds(t)
chatID := getChatID(t)
if chatID == "" {
t.Skip("no chat_id available for send test")
}
b := testBot()
ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second)
defer cancel()
msgID, err := b.SendTextMessage(ctx, chatID, "E2E test from Yao integration at "+time.Now().Format(time.RFC3339))
if err != nil {
t.Fatalf("SendTextMessage: %v", err)
}
t.Logf("OK sent message_id=%s to chat=%s", msgID, chatID)
}
// TestE2E_03_SendImage tests sending an image message.
func TestE2E_03_SendImage(t *testing.T) {
skipIfNoCreds(t)
chatID := getChatID(t)
if chatID == "" {
t.Skip("no chat_id available for image send test")
}
// Would need an uploaded image_key. Skip if not available.
t.Skip("image_key upload not implemented yet in test suite")
}
// getChatID attempts to retrieve a test chat ID from environment or skip.
func getChatID(t *testing.T) string {
t.Helper()
// For now we don't have a chat_id mechanism like Telegram's getUpdates.
// A chat_id can be obtained by having the bot in a group or by user messaging the bot first.
return ""
}