diff --git a/backend/internal/client/client_test.go b/backend/internal/client/client_test.go index 29c4655..772c2d5 100644 --- a/backend/internal/client/client_test.go +++ b/backend/internal/client/client_test.go @@ -3,7 +3,9 @@ package client import ( "bytes" "context" + "encoding/base64" "net/url" + "os" "testing" "time" @@ -94,11 +96,6 @@ func TestSummarizeChat(t *testing.T) { } func TestSendMessageWithImage(t *testing.T) { - // Skip: qwen3-8b-vision on LlamaSwap returns 502 for vision requests. - // Run manually when a stable vision backend is available: - // go test -run TestSendMessageWithImage ./internal/client/ - t.Skip("requires stable vision backend - LlamaSwap qwen3-8b-vision returns 502 for image inputs") - // Initialize Client baseURL, err := url.Parse("https://llm-api.va.reichard.io/v1") if err != nil { @@ -110,21 +107,34 @@ func TestSendMessageWithImage(t *testing.T) { ctx, cancel := context.WithTimeout(context.Background(), 120*time.Second) defer cancel() - // Build Data URL from embedded test image (10x10 red PNG) - const dataURL = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAADklEQVR42mNk+P/k/wEAn6gE9QxN+7QAAAAASUVORK5CYII=" + // Load Test Image and Convert to Base64 Data URL + imgData, err := os.ReadFile("test_image.jpg") + if err != nil { + t.Fatalf("Failed to read test image: %v", err) + } + dataURL := "data:image/jpeg;base64," + base64.StdEncoding.EncodeToString(imgData) // Generate Text Stream + var outputBuf bytes.Buffer _, err = client.SendMessage(ctx, []*store.Message{{ Role: "user", - Content: "What is in this image?", + Content: "Describe this image in detail.", Images: []string{dataURL}, }}, model, func(mc *MessageChunk) error { if mc.Message != nil { - t.Logf("Received: %s", *mc.Message) + outputBuf.WriteString(*mc.Message) } return nil }) if err != nil { t.Fatalf("Failed to generate text stream: %v", err) } + + // Verify Response + output := outputBuf.String() + if output == "" { + t.Error("No content was written to the buffer") + } else { + t.Logf("Model response (%d chars): %s", len(output), output) + } } diff --git a/backend/internal/client/test_image.jpg b/backend/internal/client/test_image.jpg new file mode 100644 index 0000000..9fc93c5 Binary files /dev/null and b/backend/internal/client/test_image.jpg differ