first commit
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
import { afterEach, expect, test } from "bun:test";
|
||||
import { redisDriver } from "../src/redis.ts";
|
||||
|
||||
const bun = globalThis.Bun as typeof Bun & { connect: (options: unknown) => Promise<unknown> };
|
||||
const originalConnect = bun.connect;
|
||||
afterEach(() => {
|
||||
bun.connect = originalConnect;
|
||||
});
|
||||
|
||||
test("rediss URLs enable TLS and decode credentials", () => {
|
||||
const options: Array<Record<string, unknown>> = [];
|
||||
bun.connect = ((value: Record<string, unknown>) => {
|
||||
options.push(value);
|
||||
return new Promise(() => {});
|
||||
}) as typeof bun.connect;
|
||||
const driver = redisDriver("rediss://user:p%40ss@redis.example.com:6380/2");
|
||||
expect(options).toHaveLength(2);
|
||||
expect(options[0]).toMatchObject({ hostname: "redis.example.com", port: 6380, tls: true });
|
||||
driver.close();
|
||||
});
|
||||
|
||||
test("rejects invalid Redis URLs before connecting", () => {
|
||||
expect(() => redisDriver("http://localhost:6379")).toThrow("redis:// or rediss://");
|
||||
expect(() => redisDriver("redis://localhost/not-a-db")).toThrow("database");
|
||||
});
|
||||
|
||||
test("bounds writes queued while Redis is unavailable", () => {
|
||||
bun.connect = (() => new Promise(() => {})) as typeof bun.connect;
|
||||
const driver = redisDriver("redis://localhost:6379");
|
||||
for (let index = 0; index < 1000; index++) driver.publish("topic", index);
|
||||
expect(() => driver.publish("topic", "overflow")).toThrow("queue is full");
|
||||
driver.close();
|
||||
});
|
||||
Reference in New Issue
Block a user