74 lines
2.1 KiB
Go
74 lines
2.1 KiB
Go
//go:build windows || darwin
|
|
|
|
package tools
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestEnsureCloudEnabledForTool(t *testing.T) {
|
|
const op = "web search is unavailable"
|
|
const disabledPrefix = "ollama cloud is disabled: web search is unavailable"
|
|
|
|
t.Run("enabled allows tool execution", func(t *testing.T) {
|
|
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
if r.URL.Path != "/api/status" {
|
|
http.NotFound(w, r)
|
|
return
|
|
}
|
|
w.Header().Set("Content-Type", "application/json")
|
|
_, _ = w.Write([]byte(`{"cloud":{"disabled":false,"source":"none"}}`))
|
|
}))
|
|
t.Cleanup(ts.Close)
|
|
t.Setenv("OLLAMA_HOST", ts.URL)
|
|
|
|
if err := ensureCloudEnabledForTool(context.Background(), op); err != nil {
|
|
t.Fatalf("expected nil error, got %v", err)
|
|
}
|
|
})
|
|
|
|
t.Run("disabled blocks tool execution", func(t *testing.T) {
|
|
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
if r.URL.Path != "/api/status" {
|
|
http.NotFound(w, r)
|
|
return
|
|
}
|
|
w.Header().Set("Content-Type", "application/json")
|
|
_, _ = w.Write([]byte(`{"cloud":{"disabled":true,"source":"config"}}`))
|
|
}))
|
|
t.Cleanup(ts.Close)
|
|
t.Setenv("OLLAMA_HOST", ts.URL)
|
|
|
|
err := ensureCloudEnabledForTool(context.Background(), op)
|
|
if err == nil {
|
|
t.Fatal("expected error, got nil")
|
|
}
|
|
if got := err.Error(); got != disabledPrefix {
|
|
t.Fatalf("unexpected error: %q", got)
|
|
}
|
|
})
|
|
|
|
t.Run("status unavailable fails closed", func(t *testing.T) {
|
|
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
http.NotFound(w, r)
|
|
}))
|
|
t.Cleanup(ts.Close)
|
|
t.Setenv("OLLAMA_HOST", ts.URL)
|
|
|
|
err := ensureCloudEnabledForTool(context.Background(), op)
|
|
if err == nil {
|
|
t.Fatal("expected error, got nil")
|
|
}
|
|
if got := err.Error(); !strings.Contains(got, disabledPrefix) {
|
|
t.Fatalf("expected disabled prefix, got %q", got)
|
|
}
|
|
if got := err.Error(); !strings.Contains(got, "unable to verify server cloud policy") {
|
|
t.Fatalf("expected verification failure detail, got %q", got)
|
|
}
|
|
})
|
|
}
|