mirror of
https://github.com/photoprism/photoprism.git
synced 2025-12-11 16:24:11 +01:00
99 lines
2.5 KiB
Go
99 lines
2.5 KiB
Go
package vision
|
|
|
|
import "testing"
|
|
|
|
func TestServiceEndpoint(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
svc Service
|
|
wantURI string
|
|
wantMethod string
|
|
}{
|
|
{
|
|
name: "Disabled",
|
|
svc: Service{Disabled: true, Uri: "https://vision.example.com"},
|
|
wantURI: "",
|
|
wantMethod: "",
|
|
},
|
|
{
|
|
name: "WithBasicAuth",
|
|
svc: Service{Uri: "https://vision.example.com/api", Username: "user", Password: "secret"},
|
|
wantURI: "https://user:secret@vision.example.com/api",
|
|
wantMethod: ServiceMethod,
|
|
},
|
|
{
|
|
name: "UsernameOnly",
|
|
svc: Service{Uri: "https://vision.example.com/", Username: "scoped"},
|
|
wantURI: "https://scoped@vision.example.com/",
|
|
wantMethod: ServiceMethod,
|
|
},
|
|
{
|
|
name: "PreserveExistingUser",
|
|
svc: Service{Uri: "https://keep:me@vision.example.com", Username: "ignored", Password: "ignored"},
|
|
wantURI: "https://keep:me@vision.example.com",
|
|
wantMethod: ServiceMethod,
|
|
},
|
|
{
|
|
name: "ExpandsBaseUrlEnv",
|
|
svc: Service{Uri: "${OLLAMA_BASE_URL}/api/generate"},
|
|
wantURI: "http://custom:11434/api/generate",
|
|
wantMethod: ServiceMethod,
|
|
},
|
|
{
|
|
name: "FallbacksWhenEnvMissing",
|
|
svc: Service{Uri: "${OLLAMA_BASE_URL}/api/generate"},
|
|
wantURI: "http://ollama:11434/api/generate",
|
|
wantMethod: ServiceMethod,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if tt.name == "ExpandsBaseUrlEnv" {
|
|
t.Setenv("OLLAMA_BASE_URL", "http://custom:11434")
|
|
}
|
|
|
|
uri, method := tt.svc.Endpoint()
|
|
if uri != tt.wantURI {
|
|
t.Fatalf("uri: got %q want %q", uri, tt.wantURI)
|
|
}
|
|
if method != tt.wantMethod {
|
|
t.Fatalf("method: got %q want %q", method, tt.wantMethod)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestServiceCredentialsAndHeaders(t *testing.T) {
|
|
t.Setenv("VISION_USER", "alice")
|
|
t.Setenv("VISION_PASS", "hunter2")
|
|
t.Setenv("VISION_MODEL", "GEMMA3:Latest")
|
|
t.Setenv("VISION_ORG", "org-123")
|
|
t.Setenv("VISION_PROJECT", "proj-abc")
|
|
|
|
svc := Service{
|
|
Username: "${VISION_USER}",
|
|
Password: "${VISION_PASS}",
|
|
Model: "${VISION_MODEL}",
|
|
Org: "${VISION_ORG}",
|
|
Project: "${VISION_PROJECT}",
|
|
}
|
|
|
|
user, pass := svc.BasicAuth()
|
|
if user != "alice" || pass != "hunter2" {
|
|
t.Fatalf("basic auth: got %q/%q", user, pass)
|
|
}
|
|
|
|
if got := svc.GetModel(); got != "gemma3:latest" {
|
|
t.Fatalf("model override: got %q", got)
|
|
}
|
|
|
|
if got := svc.EndpointOrg(); got != "org-123" {
|
|
t.Fatalf("org: got %q", got)
|
|
}
|
|
|
|
if got := svc.EndpointProject(); got != "proj-abc" {
|
|
t.Fatalf("project: got %q", got)
|
|
}
|
|
}
|