package app import ( "context" "testing" "time" "galaxy/lobby/internal/config" "galaxy/redisconn" "github.com/alicebob/miniredis/v2" "github.com/stretchr/testify/require" ) func newTestRedisCfg(addr string) config.RedisConfig { return config.RedisConfig{ Conn: redisconn.Config{ MasterAddr: addr, Password: "test", OperationTimeout: time.Second, }, } } func TestPingRedisSucceedsAgainstMiniredis(t *testing.T) { t.Parallel() server := miniredis.RunT(t) redisCfg := newTestRedisCfg(server.Addr()) client := newRedisClient(redisCfg) t.Cleanup(func() { _ = client.Close() }) require.NoError(t, pingRedis(context.Background(), redisCfg, client)) } func TestPingRedisReturnsErrorWhenClosed(t *testing.T) { t.Parallel() server := miniredis.RunT(t) redisCfg := newTestRedisCfg(server.Addr()) client := newRedisClient(redisCfg) require.NoError(t, client.Close()) err := pingRedis(context.Background(), redisCfg, client) require.Error(t, err) } func TestPingRedisNilClient(t *testing.T) { t.Parallel() err := pingRedis(context.Background(), newTestRedisCfg("127.0.0.1:0"), nil) require.Error(t, err) require.Contains(t, err.Error(), "nil client") } func TestInstrumentRedisClientNilClient(t *testing.T) { t.Parallel() err := instrumentRedisClient(nil, nil) require.Error(t, err) require.Contains(t, err.Error(), "nil client") } func TestInstrumentRedisClientNilTelemetryIsNoop(t *testing.T) { t.Parallel() server := miniredis.RunT(t) client := newRedisClient(newTestRedisCfg(server.Addr())) t.Cleanup(func() { _ = client.Close() }) require.NoError(t, instrumentRedisClient(client, nil)) }