test(quality): cover sqlite redis and overlay edge branches

This commit is contained in:
phamnazage-jpg
2026-05-30 18:28:03 +08:00
parent 51472e9951
commit f895eb9035
6 changed files with 357 additions and 0 deletions

View File

@@ -436,6 +436,91 @@ func TestRedisStickyStoreRequiresAddr(t *testing.T) {
}
}
func TestRedisStickyStoreOpenRejectsAuthError(t *testing.T) {
t.Parallel()
server := newScriptedRedisServer(t, func(conn net.Conn, reader *bufio.Reader) {
command, err := readRESPArray(reader)
if err != nil {
return
}
if len(command) > 0 && strings.ToUpper(command[0]) == "AUTH" {
_, _ = io.WriteString(conn, "-ERR invalid password\r\n")
}
})
defer server.Close()
store := &RedisStickyStore{cfg: RedisConfig{Addr: server.Addr(), Password: "secret"}}
_, _, err := store.open(context.Background())
if err == nil || !strings.Contains(err.Error(), "redis AUTH read") {
t.Fatalf("open() error = %v, want auth read failure", err)
}
}
func TestRedisStickyStoreOpenRejectsSelectUnexpectedResponse(t *testing.T) {
t.Parallel()
server := newScriptedRedisServer(t, func(conn net.Conn, reader *bufio.Reader) {
command, err := readRESPArray(reader)
if err != nil {
return
}
if len(command) > 0 && strings.ToUpper(command[0]) == "AUTH" {
_, _ = io.WriteString(conn, "+OK\r\n")
}
command, err = readRESPArray(reader)
if err != nil {
return
}
if len(command) > 0 && strings.ToUpper(command[0]) == "SELECT" {
_, _ = io.WriteString(conn, ":1\r\n")
}
})
defer server.Close()
store := &RedisStickyStore{cfg: RedisConfig{Addr: server.Addr(), Password: "secret", DB: 2}}
_, _, err := store.open(context.Background())
if err == nil || !strings.Contains(err.Error(), "redis SELECT unexpected response") {
t.Fatalf("open() error = %v, want select unexpected response", err)
}
}
func TestRedisStickyStoreGetJSONRejectsUnexpectedResponse(t *testing.T) {
t.Parallel()
server := newScriptedRedisServer(t, func(conn net.Conn, reader *bufio.Reader) {
if _, err := readRESPArray(reader); err != nil {
return
}
_, _ = io.WriteString(conn, "+OK\r\n")
})
defer server.Close()
store := &RedisStickyStore{cfg: RedisConfig{Addr: server.Addr()}}
_, _, err := store.getJSON(context.Background(), "sticky-key")
if err == nil || !strings.Contains(err.Error(), "unexpected response") {
t.Fatalf("getJSON() error = %v, want unexpected response", err)
}
}
func TestRedisStickyStoreSetJSONRejectsUnexpectedResponse(t *testing.T) {
t.Parallel()
server := newScriptedRedisServer(t, func(conn net.Conn, reader *bufio.Reader) {
if _, err := readRESPArray(reader); err != nil {
return
}
_, _ = io.WriteString(conn, ":1\r\n")
})
defer server.Close()
store := &RedisStickyStore{cfg: RedisConfig{Addr: server.Addr()}}
err := store.setJSON(context.Background(), "sticky-key", map[string]string{"route_id": "asxs"}, time.Second)
if err == nil || !strings.Contains(err.Error(), "unexpected response") {
t.Fatalf("setJSON() error = %v, want unexpected response", err)
}
}
func TestNormalizeRuntimeBackend(t *testing.T) {
t.Parallel()
@@ -470,3 +555,35 @@ func TestRedisStickyStoreFixturePathExists(t *testing.T) {
t.Fatal("temp dir base should not be empty")
}
}
type scriptedRedisServer struct {
listener net.Listener
handler func(net.Conn, *bufio.Reader)
}
func newScriptedRedisServer(t *testing.T, handler func(net.Conn, *bufio.Reader)) *scriptedRedisServer {
t.Helper()
ln, err := net.Listen("tcp", "127.0.0.1:0")
if err != nil {
t.Fatalf("net.Listen() error = %v", err)
}
server := &scriptedRedisServer{listener: ln, handler: handler}
go func() {
conn, err := ln.Accept()
if err != nil {
return
}
defer conn.Close()
handler(conn, bufio.NewReader(conn))
}()
return server
}
func (s *scriptedRedisServer) Addr() string {
return s.listener.Addr().String()
}
func (s *scriptedRedisServer) Close() {
_ = s.listener.Close()
}