99fa530967
- Removed obsolete Redis protocol test cases and helper functions that were no longer relevant due to recent architecture changes. - Streamlined remaining test files to align with updated Redis handling and connection management logic.
159 lines
4.2 KiB
Go
159 lines
4.2 KiB
Go
package home
|
|
|
|
import (
|
|
"context"
|
|
"crypto/tls"
|
|
"encoding/json"
|
|
"net/http"
|
|
"testing"
|
|
|
|
"github.com/router-for-me/CLIProxyAPI/v7/internal/config"
|
|
)
|
|
|
|
func TestAuthDispatchRequestIncludesCount(t *testing.T) {
|
|
req := newAuthDispatchRequest("gpt-5.4", "session-1", http.Header{"Authorization": {"Bearer test"}}, 2)
|
|
|
|
raw, err := json.Marshal(&req)
|
|
if err != nil {
|
|
t.Fatalf("marshal auth dispatch request: %v", err)
|
|
}
|
|
|
|
var payload map[string]any
|
|
if err := json.Unmarshal(raw, &payload); err != nil {
|
|
t.Fatalf("unmarshal auth dispatch request: %v", err)
|
|
}
|
|
if got := int(payload["count"].(float64)); got != 2 {
|
|
t.Fatalf("count = %d, want 2", got)
|
|
}
|
|
}
|
|
|
|
func TestAuthDispatchRequestDefaultsCountToOne(t *testing.T) {
|
|
req := newAuthDispatchRequest("gpt-5.4", "", nil, 0)
|
|
|
|
if req.Count != 1 {
|
|
t.Fatalf("count = %d, want 1", req.Count)
|
|
}
|
|
}
|
|
|
|
func TestRedisOptionsHomeTLSDisabled(t *testing.T) {
|
|
client := New(config.HomeConfig{
|
|
Enabled: true,
|
|
Host: "127.0.0.1",
|
|
Port: 6379,
|
|
})
|
|
|
|
client.mu.Lock()
|
|
options, err := client.redisOptionsLocked("127.0.0.1:6379")
|
|
client.mu.Unlock()
|
|
if err != nil {
|
|
t.Fatalf("redisOptionsLocked() error = %v", err)
|
|
}
|
|
|
|
if options.TLSConfig != nil {
|
|
t.Fatalf("TLSConfig = %#v, want nil", options.TLSConfig)
|
|
}
|
|
if options.Password != "" {
|
|
t.Fatalf("Password = %q, want empty", options.Password)
|
|
}
|
|
}
|
|
|
|
func TestRedisOptionsHomeTLSEnabledUsesSeedHostAsServerName(t *testing.T) {
|
|
client := New(config.HomeConfig{
|
|
Enabled: true,
|
|
Host: "home.example.com",
|
|
Port: 444,
|
|
TLS: config.HomeTLSConfig{
|
|
Enable: true,
|
|
},
|
|
})
|
|
client.homeCfg.Host = "127.0.0.1"
|
|
|
|
client.mu.Lock()
|
|
options, err := client.redisOptionsLocked("127.0.0.1:444")
|
|
client.mu.Unlock()
|
|
if err != nil {
|
|
t.Fatalf("redisOptionsLocked() error = %v", err)
|
|
}
|
|
|
|
if options.TLSConfig == nil {
|
|
t.Fatal("TLSConfig is nil")
|
|
}
|
|
if options.TLSConfig.ServerName != "home.example.com" {
|
|
t.Fatalf("ServerName = %q, want home.example.com", options.TLSConfig.ServerName)
|
|
}
|
|
if options.TLSConfig.MinVersion != tls.VersionTLS12 {
|
|
t.Fatalf("MinVersion = %d, want TLS 1.2", options.TLSConfig.MinVersion)
|
|
}
|
|
}
|
|
|
|
func TestRedisOptionsHomeTLSEnabledUsesExplicitServerName(t *testing.T) {
|
|
client := New(config.HomeConfig{
|
|
Enabled: true,
|
|
Host: "127.0.0.1",
|
|
Port: 444,
|
|
TLS: config.HomeTLSConfig{
|
|
Enable: true,
|
|
ServerName: "home.example.com",
|
|
InsecureSkipVerify: true,
|
|
},
|
|
})
|
|
|
|
client.mu.Lock()
|
|
options, err := client.redisOptionsLocked("127.0.0.1:444")
|
|
client.mu.Unlock()
|
|
if err != nil {
|
|
t.Fatalf("redisOptionsLocked() error = %v", err)
|
|
}
|
|
|
|
if options.TLSConfig == nil {
|
|
t.Fatal("TLSConfig is nil")
|
|
}
|
|
if options.TLSConfig.ServerName != "home.example.com" {
|
|
t.Fatalf("ServerName = %q, want home.example.com", options.TLSConfig.ServerName)
|
|
}
|
|
if !options.TLSConfig.InsecureSkipVerify {
|
|
t.Fatal("InsecureSkipVerify = false, want true")
|
|
}
|
|
}
|
|
|
|
func TestRefreshClusterNodesDisabledSkipsRedisCommand(t *testing.T) {
|
|
client := New(config.HomeConfig{
|
|
Enabled: true,
|
|
Host: "127.0.0.1",
|
|
Port: 1,
|
|
DisableClusterDiscovery: true,
|
|
})
|
|
|
|
switched, err := client.refreshClusterNodes(context.Background())
|
|
if err != nil {
|
|
t.Fatalf("refreshClusterNodes() error = %v", err)
|
|
}
|
|
if switched {
|
|
t.Fatal("refreshClusterNodes() switched = true, want false")
|
|
}
|
|
if client.cmd != nil || client.sub != nil {
|
|
t.Fatalf("redis clients were initialized when cluster discovery was disabled")
|
|
}
|
|
}
|
|
|
|
func TestFailoverAfterReconnectFailureDisabledDoesNotSwitchToClusterNode(t *testing.T) {
|
|
client := New(config.HomeConfig{
|
|
Enabled: true,
|
|
Host: "seed.example.com",
|
|
Port: 8327,
|
|
DisableClusterDiscovery: true,
|
|
})
|
|
client.mu.Lock()
|
|
client.clusterNodes = []clusterNode{{IP: "other.example.com", Port: 8327}}
|
|
client.reconnectFailures = homeReconnectFailoverThreshold - 1
|
|
client.mu.Unlock()
|
|
|
|
switched, addr := client.failoverAfterReconnectFailure()
|
|
if switched {
|
|
t.Fatalf("failoverAfterReconnectFailure() switched to %s, want no switch", addr)
|
|
}
|
|
if got, _ := client.addr(); got != "seed.example.com:8327" {
|
|
t.Fatalf("addr() = %q, want seed.example.com:8327", got)
|
|
}
|
|
}
|