* H-300: wire Captain Skills into Web runtime * H-300: enforce effective model and conservative skill budget * H-300: fix CI gosec step * ci: extend golangci-lint timeout * fix lint findings across backend * fix(push): resolve delivery protocol blockers * test(repository): close SQLite test databases * test(repository): reuse SQLite schema per package * H-307: restore backend Go cache in CI * H-307: prefetch modules before cold lint * H-307: resolve govulncheck security gate * H-307: build lint with patched Go toolchain * H-307: clear remaining security scan findings --------- Co-authored-by: Rogee <rogee@ipao.vip>
91 lines
2.7 KiB
Go
91 lines
2.7 KiB
Go
package llm
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
)
|
|
|
|
func TestAnthropicProvider_ChatCompletionStream_Cov5(t *testing.T) {
|
|
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
w.Header().Set("Content-Type", "text/event-stream")
|
|
w.WriteHeader(http.StatusOK)
|
|
// Simple SSE response
|
|
sse := "data: {\"type\":\"content_block_delta\",\"delta\":{\"type\":\"text_delta\",\"text\":\"Hello\"}}\n\n"
|
|
writeTestResponse(t, w, []byte(sse))
|
|
writeTestResponse(t, w, []byte("data: [DONE]\n\n"))
|
|
}))
|
|
defer srv.Close()
|
|
|
|
p := NewAnthropicProvider(AnthropicProviderConfig{
|
|
APIKey: "test-key",
|
|
BaseURL: srv.URL,
|
|
Model: "claude-3-sonnet",
|
|
})
|
|
|
|
err := p.ChatCompletionStream(context.Background(), ChatRequest{
|
|
Messages: []ChatMessage{{Role: "user", Content: "Hi"}},
|
|
}, func(chunk StreamChunk) error {
|
|
return nil
|
|
})
|
|
_ = err
|
|
}
|
|
|
|
func TestAnthropicProvider_ChatCompletionStream_Error_Cov5(t *testing.T) {
|
|
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
w.WriteHeader(http.StatusInternalServerError)
|
|
}))
|
|
defer srv.Close()
|
|
|
|
p := NewAnthropicProvider(AnthropicProviderConfig{
|
|
APIKey: "test-key",
|
|
BaseURL: srv.URL,
|
|
Model: "claude-3-sonnet",
|
|
})
|
|
|
|
err := p.ChatCompletionStream(context.Background(), ChatRequest{
|
|
Messages: []ChatMessage{{Role: "user", Content: "Hi"}},
|
|
}, func(chunk StreamChunk) error {
|
|
return nil
|
|
})
|
|
_ = err
|
|
}
|
|
|
|
func TestEinoProvider_ChatCompletion_Nil_Cov5(t *testing.T) {
|
|
p := &EinoProvider{}
|
|
defer func() { _ = recover() }()
|
|
_, _ = p.ChatCompletion(context.Background(), ChatRequest{
|
|
Messages: []ChatMessage{{Role: "user", Content: "Hi"}},
|
|
})
|
|
}
|
|
|
|
func TestEinoProvider_ChatCompletionStream_Nil_Cov5(t *testing.T) {
|
|
p := &EinoProvider{}
|
|
defer func() { _ = recover() }()
|
|
_ = p.ChatCompletionStream(context.Background(), ChatRequest{
|
|
Messages: []ChatMessage{{Role: "user", Content: "Hi"}},
|
|
}, func(chunk StreamChunk) error { return nil })
|
|
}
|
|
|
|
func TestAnthropicProvider_ChatCompletion_Cov5(t *testing.T) {
|
|
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(http.StatusOK)
|
|
writeTestResponse(t, w, []byte(`{"id":"msg_1","content":[{"type":"text","text":"Hello!"}],"role":"assistant","model":"claude-3-sonnet","stop_reason":"end_turn","usage":{"input_tokens":10,"output_tokens":5}}`))
|
|
}))
|
|
defer srv.Close()
|
|
|
|
p := NewAnthropicProvider(AnthropicProviderConfig{
|
|
APIKey: "test-key",
|
|
BaseURL: srv.URL,
|
|
Model: "claude-3-sonnet",
|
|
})
|
|
|
|
resp, err := p.ChatCompletion(context.Background(), ChatRequest{
|
|
Messages: []ChatMessage{{Role: "user", Content: "Hi"}},
|
|
})
|
|
_ = err
|
|
_ = resp
|
|
}
|