mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-08-19 01:17:16 +02:00
71 lines
1.8 KiB
Go
71 lines
1.8 KiB
Go
package openai
|
|
|
|
import (
|
|
"context"
|
|
"io"
|
|
"net/http"
|
|
"strings"
|
|
"testing"
|
|
|
|
"cyberstrike-ai/internal/config"
|
|
)
|
|
|
|
type roundTripFunc func(*http.Request) (*http.Response, error)
|
|
|
|
func (f roundTripFunc) RoundTrip(req *http.Request) (*http.Response, error) {
|
|
return f(req)
|
|
}
|
|
|
|
func TestChatCompletionUsesNativeClaudeMessagesAPI(t *testing.T) {
|
|
t.Parallel()
|
|
httpClient := &http.Client{Transport: roundTripFunc(func(req *http.Request) (*http.Response, error) {
|
|
if req.URL.Path != "/v1/messages" {
|
|
t.Fatalf("request path = %q, want /v1/messages", req.URL.Path)
|
|
}
|
|
if req.Header.Get("x-api-key") != "test-key" {
|
|
t.Fatalf("x-api-key header = %q", req.Header.Get("x-api-key"))
|
|
}
|
|
return &http.Response{
|
|
StatusCode: http.StatusOK,
|
|
Header: http.Header{"Content-Type": []string{"application/json"}},
|
|
Body: io.NopCloser(strings.NewReader(`{
|
|
"id":"msg_1",
|
|
"type":"message",
|
|
"role":"assistant",
|
|
"model":"claude-test",
|
|
"content":[{"type":"text","text":"native ok"}],
|
|
"stop_reason":"end_turn",
|
|
"usage":{"input_tokens":1,"output_tokens":2}
|
|
}`)),
|
|
Request: req,
|
|
}, nil
|
|
})}
|
|
client := NewClient(&config.OpenAIConfig{
|
|
Provider: "claude",
|
|
BaseURL: "https://example.test",
|
|
APIKey: "test-key",
|
|
Model: "claude-test",
|
|
}, httpClient, nil)
|
|
|
|
var out struct {
|
|
Choices []struct {
|
|
Message struct {
|
|
Content string `json:"content"`
|
|
} `json:"message"`
|
|
} `json:"choices"`
|
|
}
|
|
err := client.ChatCompletion(context.Background(), map[string]any{
|
|
"model": "claude-test",
|
|
"messages": []map[string]string{
|
|
{"role": "user", "content": "hello"},
|
|
},
|
|
"max_completion_tokens": 16,
|
|
}, &out)
|
|
if err != nil {
|
|
t.Fatalf("ChatCompletion: %v", err)
|
|
}
|
|
if len(out.Choices) != 1 || out.Choices[0].Message.Content != "native ok" {
|
|
t.Fatalf("response = %#v", out)
|
|
}
|
|
}
|