初始化仓库
This commit is contained in:
@@ -0,0 +1,228 @@
|
||||
package fake
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/chenhg5/cc-connect/core"
|
||||
)
|
||||
|
||||
// TestMessage creates a basic test message with sensible defaults.
|
||||
func TestMessage() *core.Message {
|
||||
return &core.Message{
|
||||
SessionKey: "test:channel:user",
|
||||
Platform: "test",
|
||||
MessageID: "msg-test-001",
|
||||
UserID: "user-test",
|
||||
UserName: "Test User",
|
||||
ChatName: "Test Channel",
|
||||
Content: "Hello, world",
|
||||
ReplyCtx: nil,
|
||||
}
|
||||
}
|
||||
|
||||
// TestMessageWithContent creates a message with specific content.
|
||||
func TestMessageWithContent(content string) *core.Message {
|
||||
msg := TestMessage()
|
||||
msg.Content = content
|
||||
return msg
|
||||
}
|
||||
|
||||
// TestMessageWithSession creates a message with a specific session key.
|
||||
func TestMessageWithSession(sessionKey string) *core.Message {
|
||||
msg := TestMessage()
|
||||
msg.SessionKey = sessionKey
|
||||
return msg
|
||||
}
|
||||
|
||||
// TestMessageWithImages creates a message with images.
|
||||
func TestMessageWithImages(images []core.ImageAttachment) *core.Message {
|
||||
msg := TestMessage()
|
||||
msg.Images = images
|
||||
return msg
|
||||
}
|
||||
|
||||
// TestMessageWithFiles creates a message with files.
|
||||
func TestMessageWithFiles(files []core.FileAttachment) *core.Message {
|
||||
msg := TestMessage()
|
||||
msg.Files = files
|
||||
return msg
|
||||
}
|
||||
|
||||
// TestMessageWithAudio creates a message with audio.
|
||||
func TestMessageWithAudio(audio *core.AudioAttachment) *core.Message {
|
||||
msg := TestMessage()
|
||||
msg.Audio = audio
|
||||
return msg
|
||||
}
|
||||
|
||||
// TestMessageFromVoice creates a message that originated from voice.
|
||||
func TestMessageFromVoice(content string) *core.Message {
|
||||
msg := TestMessageWithContent(content)
|
||||
msg.FromVoice = true
|
||||
return msg
|
||||
}
|
||||
|
||||
// TestLongMessage creates a message with a very long content for truncation testing.
|
||||
func TestLongMessage(length int) *core.Message {
|
||||
return &core.Message{
|
||||
SessionKey: "test:channel:user",
|
||||
Platform: "test",
|
||||
MessageID: "msg-test-long",
|
||||
UserID: "user-test",
|
||||
Content: strings.Repeat("x", length),
|
||||
}
|
||||
}
|
||||
|
||||
// TestSpecialCharsMessage creates a message with special characters for security testing.
|
||||
func TestSpecialCharsMessage() *core.Message {
|
||||
return &core.Message{
|
||||
SessionKey: "test:channel:user",
|
||||
Platform: "test",
|
||||
MessageID: "msg-test-special",
|
||||
UserID: "user-test",
|
||||
Content: "Hello! 🎉 <script>alert('xss')</script> & \"quotes\"",
|
||||
}
|
||||
}
|
||||
|
||||
// TestImageAttachment creates a test image attachment.
|
||||
func TestImageAttachment(mimeType, filename string, data []byte) core.ImageAttachment {
|
||||
return core.ImageAttachment{
|
||||
MimeType: mimeType,
|
||||
Data: data,
|
||||
FileName: filename,
|
||||
}
|
||||
}
|
||||
|
||||
// TestFileAttachment creates a test file attachment.
|
||||
func TestFileAttachment(mimeType, filename string, data []byte) core.FileAttachment {
|
||||
return core.FileAttachment{
|
||||
MimeType: mimeType,
|
||||
Data: data,
|
||||
FileName: filename,
|
||||
}
|
||||
}
|
||||
|
||||
// TestAudioAttachment creates a test audio attachment.
|
||||
func TestAudioAttachment(mimeType, format string, data []byte, duration int) *core.AudioAttachment {
|
||||
return &core.AudioAttachment{
|
||||
MimeType: mimeType,
|
||||
Data: data,
|
||||
Format: format,
|
||||
Duration: duration,
|
||||
}
|
||||
}
|
||||
|
||||
// TestEvent creates a test event.
|
||||
func TestEvent(eventType core.EventType, content string) core.Event {
|
||||
return core.Event{
|
||||
Type: eventType,
|
||||
Content: content,
|
||||
Done: eventType == core.EventResult || eventType == core.EventError,
|
||||
}
|
||||
}
|
||||
|
||||
// TestTextEvent creates a text event.
|
||||
func TestTextEvent(content string) core.Event {
|
||||
return TestEvent(core.EventText, content)
|
||||
}
|
||||
|
||||
// TestResultEvent creates a result event.
|
||||
func TestResultEvent(content string) core.Event {
|
||||
return TestEvent(core.EventResult, content)
|
||||
}
|
||||
|
||||
// TestErrorEvent creates an error event.
|
||||
func TestErrorEvent(err error) core.Event {
|
||||
return core.Event{
|
||||
Type: core.EventError,
|
||||
Done: true,
|
||||
Error: err,
|
||||
}
|
||||
}
|
||||
|
||||
// TestPermissionRequestEvent creates a permission request event.
|
||||
func TestPermissionRequestEvent(requestID, toolName, toolInput string) core.Event {
|
||||
return core.Event{
|
||||
Type: core.EventPermissionRequest,
|
||||
ToolName: toolName,
|
||||
ToolInput: toolInput,
|
||||
RequestID: requestID,
|
||||
}
|
||||
}
|
||||
|
||||
// TestToolUseEvent creates a tool use event.
|
||||
func TestToolUseEvent(toolName, toolInput string) core.Event {
|
||||
return core.Event{
|
||||
Type: core.EventToolUse,
|
||||
ToolName: toolName,
|
||||
ToolInput: toolInput,
|
||||
}
|
||||
}
|
||||
|
||||
// TestThinkingEvent creates a thinking event.
|
||||
func TestThinkingEvent(content string) core.Event {
|
||||
return TestEvent(core.EventThinking, content)
|
||||
}
|
||||
|
||||
// TestHistoryEntry creates a test history entry.
|
||||
func TestHistoryEntry(role, content string) core.HistoryEntry {
|
||||
return core.HistoryEntry{
|
||||
Role: role,
|
||||
Content: content,
|
||||
Timestamp: time.Now(),
|
||||
}
|
||||
}
|
||||
|
||||
// TestAgentSessionInfo creates a test agent session info.
|
||||
func TestAgentSessionInfo(id, summary string, messageCount int) core.AgentSessionInfo {
|
||||
return core.AgentSessionInfo{
|
||||
ID: id,
|
||||
Summary: summary,
|
||||
MessageCount: messageCount,
|
||||
ModifiedAt: time.Now(),
|
||||
}
|
||||
}
|
||||
|
||||
// TestPermissionResult creates a test permission result.
|
||||
func TestPermissionResultAllow() core.PermissionResult {
|
||||
return core.PermissionResult{
|
||||
Behavior: "allow",
|
||||
}
|
||||
}
|
||||
|
||||
func TestPermissionResultDeny(message string) core.PermissionResult {
|
||||
return core.PermissionResult{
|
||||
Behavior: "deny",
|
||||
Message: message,
|
||||
}
|
||||
}
|
||||
|
||||
// TestProviderConfig creates a test provider config.
|
||||
func TestProviderConfig(name, apiKey, baseURL, model string) core.ProviderConfig {
|
||||
return core.ProviderConfig{
|
||||
Name: name,
|
||||
APIKey: apiKey,
|
||||
BaseURL: baseURL,
|
||||
Model: model,
|
||||
}
|
||||
}
|
||||
|
||||
// TestModelOption creates a test model option.
|
||||
func TestModelOption(name, desc, alias string) core.ModelOption {
|
||||
return core.ModelOption{
|
||||
Name: name,
|
||||
Desc: desc,
|
||||
Alias: alias,
|
||||
}
|
||||
}
|
||||
|
||||
// BatchTestMessages creates multiple test messages for batch testing.
|
||||
func BatchTestMessages(count int) []*core.Message {
|
||||
messages := make([]*core.Message, count)
|
||||
for i := 0; i < count; i++ {
|
||||
messages[i] = TestMessageWithContent(fmt.Sprintf("Test message %d", i))
|
||||
}
|
||||
return messages
|
||||
}
|
||||
Reference in New Issue
Block a user