Files
Local-Cursor/internal/backend/tab_forward_test.go

66 lines
1.8 KiB
Go
Raw Normal View History

package backend
import (
"bytes"
"cursor/internal/backend/server"
serverconfig "cursor/internal/backend/server/config"
"net/http"
"net/http/httptest"
"path/filepath"
"testing"
)
func TestTabCallerTokenAndBasePathFollowCurrentConfiguration(t *testing.T) {
expected := "client-first"
calls := 0
tab := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
calls++
if r.Header.Get("Authorization") != "Bearer "+expected {
t.Error("configured caller token not forwarded")
}
if r.URL.Path != "/base/aiserver.v1.AiService/CppConfig" {
t.Error("base path lost", r.URL.Path)
}
w.WriteHeader(204)
}))
defer tab.Close()
store := serverconfig.NewStore(filepath.Join(t.TempDir(), "config.yaml"), "")
cfg := serverconfig.DefaultConfig()
cfg.TabServerBaseURL = tab.URL + "/base"
cfg.TabServerToken = expected
if _, err := store.Save(nil, cfg); err != nil {
t.Fatal(err)
}
host, err := NewHost(store, nil)
if err != nil {
t.Fatal(err)
}
local := httptest.NewServer(host.mux)
defer local.Close()
call := func() {
r, _ := http.NewRequest(http.MethodPost, local.URL+"/aiserver.v1.AiService/CppConfig", bytes.NewReader(nil))
r.Header.Set("Content-Type", "application/proto")
r.Header.Set(server.HeaderServerUpstreamURL, "https://api2.cursor.sh/aiserver.v1.AiService/CppConfig")
r.Header.Set("Authorization", "Bearer unrelated-cursor-token")
response, err := local.Client().Do(r)
if err != nil {
t.Fatal(err)
}
response.Body.Close()
if response.StatusCode != 204 {
t.Fatal(response.StatusCode)
}
}
call()
cfg = host.ConfigManager().Current()
expected = "client-second"
cfg.TabServerToken = expected
if _, err = host.SaveConfig(nil, cfg); err != nil {
t.Fatal(err)
}
call()
if calls != 2 {
t.Fatal("Tab requests did not reach configured server")
}
}