d1abd2b15d
Co-authored-by: Cursor <cursoragent@cursor.com>
50 lines
1.3 KiB
Go
50 lines
1.3 KiB
Go
package remote
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestSessionKeyStable(t *testing.T) {
|
|
k1 := SessionKey("host", "10.0.0.1", "/proj", "Cursor")
|
|
k2 := SessionKey("host", "10.0.0.1", "/proj", "Cursor")
|
|
if k1 != k2 || len(k1) != 32 {
|
|
t.Fatalf("key=%q len=%d", k1, len(k1))
|
|
}
|
|
}
|
|
|
|
func TestClientPostStatus(t *testing.T) {
|
|
var got StatusReport
|
|
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
if r.Method != http.MethodPost {
|
|
http.Error(w, "method", http.StatusMethodNotAllowed)
|
|
return
|
|
}
|
|
if r.URL.Path != "/api/v1/status" {
|
|
http.Error(w, "path", http.StatusNotFound)
|
|
return
|
|
}
|
|
if r.Header.Get("Authorization") != "Bearer secret" {
|
|
http.Error(w, "auth", http.StatusUnauthorized)
|
|
return
|
|
}
|
|
if err := json.NewDecoder(r.Body).Decode(&got); err != nil {
|
|
http.Error(w, "decode", http.StatusBadRequest)
|
|
return
|
|
}
|
|
w.WriteHeader(http.StatusOK)
|
|
_, _ = w.Write([]byte(`{"ok":true}`))
|
|
}))
|
|
defer srv.Close()
|
|
|
|
c := NewClient(ClientConfig{URL: srv.URL, Token: "secret", Timeout: time.Second})
|
|
err := c.Report(context.Background(), StatusReport{Hostname: "h", Agent: "Cursor", CWD: "/p", Status: "waiting"})
|
|
if err != nil || got.Hostname != "h" {
|
|
t.Fatalf("err=%v got=%+v", err, got)
|
|
}
|
|
}
|