重构提取逻辑,新增 area 表
This commit is contained in:
@@ -1,96 +0,0 @@
|
||||
package globals
|
||||
|
||||
import (
|
||||
"encoding/base64"
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestGostClientCreateServiceUsesBasicAuthAndPathPrefix(t *testing.T) {
|
||||
var (
|
||||
gotPath string
|
||||
gotAuth string
|
||||
gotBody GostServiceConfig
|
||||
)
|
||||
|
||||
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
gotPath = r.URL.Path
|
||||
gotAuth = r.Header.Get("Authorization")
|
||||
if err := json.NewDecoder(r.Body).Decode(&gotBody); err != nil {
|
||||
t.Fatalf("Decode failed: %v", err)
|
||||
}
|
||||
w.WriteHeader(http.StatusOK)
|
||||
}))
|
||||
defer server.Close()
|
||||
|
||||
client := NewGost(server.URL, 0, "/api", "user", "pass")
|
||||
err := client.CreateService(&GostServiceConfig{
|
||||
Name: "svc-1",
|
||||
Addr: ":10000",
|
||||
Handler: GostHandlerConfig{
|
||||
Type: "auto",
|
||||
Chain: "chain-a",
|
||||
Auther: "auther-a",
|
||||
},
|
||||
Listener: GostListenerConfig{Type: "tcp"},
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("CreateService returned error: %v", err)
|
||||
}
|
||||
|
||||
if gotPath != "/api/config/services" {
|
||||
t.Fatalf("unexpected path: %s", gotPath)
|
||||
}
|
||||
if gotAuth != "Basic "+base64.StdEncoding.EncodeToString([]byte("user:pass")) {
|
||||
t.Fatalf("unexpected auth header: %s", gotAuth)
|
||||
}
|
||||
if gotBody.Name != "svc-1" || gotBody.Handler.Type != "auto" || gotBody.Handler.Chain != "chain-a" {
|
||||
t.Fatalf("unexpected request body: %+v", gotBody)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGostClientDeleteServiceTreats404AsIdempotent(t *testing.T) {
|
||||
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
http.NotFound(w, r)
|
||||
}))
|
||||
defer server.Close()
|
||||
|
||||
client := NewGost(server.URL, 0, "", "user", "pass")
|
||||
if err := client.DeleteService("svc-1"); !IsGostNotFound(err) {
|
||||
t.Fatalf("expected gost not found error, got: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGostClientGetChainReadsTopLevelName(t *testing.T) {
|
||||
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
if r.URL.Path != "/config/chains/chain-a" {
|
||||
t.Fatalf("unexpected path: %s", r.URL.Path)
|
||||
}
|
||||
_, _ = w.Write([]byte(`{"name":"chain-a"}`))
|
||||
}))
|
||||
defer server.Close()
|
||||
|
||||
client := NewGost(server.URL, 0, "", "user", "pass")
|
||||
chain, err := client.GetChain("chain-a")
|
||||
if err != nil {
|
||||
t.Fatalf("GetChain returned error: %v", err)
|
||||
}
|
||||
if chain.Name != "chain-a" {
|
||||
t.Fatalf("unexpected chain: %+v", chain)
|
||||
}
|
||||
}
|
||||
|
||||
func TestNormalizeGostPathPrefix(t *testing.T) {
|
||||
if got := normalizeGostPathPrefix("api/"); got != "/api" {
|
||||
t.Fatalf("unexpected prefix: %s", got)
|
||||
}
|
||||
if got := normalizeGostPathPrefix(""); got != "" {
|
||||
t.Fatalf("unexpected empty prefix: %s", got)
|
||||
}
|
||||
if !strings.HasPrefix(normalizeGostPathPrefix("/v1"), "/") {
|
||||
t.Fatal("expected normalized prefix to start with slash")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user