package liveview import ( "context" "testing" "time" "yovision.local/sense/app/sense/media" ) func TestRejectCredentialBaseURL(t *testing.T) { if _, err := NewService("http://user:pass@127.0.0.1:8889", time.Minute); err == nil { t.Fatal("credential base URL accepted") } } func TestSessionIsOwnerBoundAndExpires(t *testing.T) { service, err := NewService("http://127.0.0.1:8889", time.Minute) if err != nil { t.Fatal(err) } now := time.Date(2026, 8, 12, 0, 0, 0, 0, time.UTC) service.now = func() time.Time { return now } route := media.Route{ID: "device:main", DeviceID: "device", ProfileToken: "main", Path: "sense_device_main", Desired: "running", Actual: "ready"} service.route = func(context.Context, string) (media.Route, error) { return route, nil } session, err := service.Create(context.Background(), "owner-a", route.ID) if err != nil { t.Fatal(err) } if _, err := service.Get(context.Background(), "owner-b", session.ID); err == nil { t.Fatal("other owner accessed session") } now = now.Add(2 * time.Minute) if _, err := service.Get(context.Background(), "owner-a", session.ID); err == nil { t.Fatal("expired session remained active") } } func TestTTLIsBounded(t *testing.T) { service, err := NewService("http://127.0.0.1:8889", time.Hour) if err != nil { t.Fatal(err) } if service.ttl != 2*time.Minute { t.Fatalf("ttl=%v", service.ttl) } }