more tests
This commit is contained in:
@@ -12,7 +12,7 @@ describe("ConnectionSender", () => {
|
||||
beforeEach(() => {
|
||||
vi.useFakeTimers()
|
||||
connection = new Connection("wss://test.relay/")
|
||||
connection.socket.send = vi.fn().mockResolvedValue(undefined)
|
||||
connection.socket.send = vi.fn()
|
||||
connection.socket.open = vi.fn().mockResolvedValue(undefined)
|
||||
connection.socket.status = SocketStatus.Open
|
||||
connection.send = vi.fn().mockResolvedValue(undefined)
|
||||
@@ -28,7 +28,7 @@ describe("ConnectionSender", () => {
|
||||
it("should not defer CLOSE messages", async () => {
|
||||
// First send a REQ message to set up the pending request
|
||||
const reqId = "subscription-id"
|
||||
sender.push([
|
||||
connection.sender.push([
|
||||
"REQ",
|
||||
reqId,
|
||||
{
|
||||
@@ -37,10 +37,12 @@ describe("ConnectionSender", () => {
|
||||
] as Message)
|
||||
const message: Message = ["CLOSE", reqId]
|
||||
// there is a setTimeout in the worker, so we need to advance timers
|
||||
vi.advanceTimersByTime(50)
|
||||
sender.push(message)
|
||||
await vi.advanceTimersByTimeAsync(50)
|
||||
|
||||
connection.sender.push(message)
|
||||
// there is a setTimeout in the worker, so we need to advance timers
|
||||
vi.advanceTimersByTime(50)
|
||||
await vi.advanceTimersByTimeAsync(150)
|
||||
|
||||
expect(connection.socket.send).toHaveBeenCalledWith(message)
|
||||
})
|
||||
|
||||
@@ -96,8 +98,8 @@ describe("ConnectionSender", () => {
|
||||
it("should defer REQ messages when too many pending requests", () => {
|
||||
connection.socket.status = SocketStatus.Open
|
||||
connection.auth.status = AuthStatus.Ok
|
||||
// Set up 8 pending requests
|
||||
for (let i = 0; i < 8; i++) {
|
||||
// Set up 50 pending requests
|
||||
for (let i = 0; i < 50; i++) {
|
||||
connection.state.pendingRequests.set(`req${i}`, {
|
||||
filters: [],
|
||||
sent: Date.now(),
|
||||
@@ -191,7 +193,7 @@ describe("ConnectionSender", () => {
|
||||
]
|
||||
|
||||
messages.forEach(msg => sender.push(msg))
|
||||
vi.advanceTimersByTime(50)
|
||||
await vi.advanceTimersByTimeAsync(50)
|
||||
|
||||
const sendCalls = connection.socket.send.mock.calls
|
||||
expect(sendCalls.map(call => call[0])).toEqual(messages)
|
||||
|
||||
@@ -25,7 +25,7 @@ describe("ConnectionState", () => {
|
||||
const filters = [{kinds: [1]}]
|
||||
|
||||
connection.sender.worker.push(["REQ", reqId, ...filters])
|
||||
vi.advanceTimersByTime(50)
|
||||
await vi.advanceTimersByTimeAsync(50)
|
||||
|
||||
expect(state.pendingRequests.has(reqId)).toBe(true)
|
||||
expect(state.pendingRequests.get(reqId)).toEqual({
|
||||
@@ -43,7 +43,7 @@ describe("ConnectionState", () => {
|
||||
})
|
||||
|
||||
connection.socket.worker.push(["CLOSED", reqId])
|
||||
vi.advanceTimersByTime(50)
|
||||
await vi.advanceTimersByTimeAsync(50)
|
||||
|
||||
expect(state.pendingRequests.has(reqId)).toBe(false)
|
||||
})
|
||||
@@ -56,7 +56,7 @@ describe("ConnectionState", () => {
|
||||
})
|
||||
|
||||
connection.socket.worker.push(["EOSE", reqId])
|
||||
vi.advanceTimersByTime(50)
|
||||
await vi.advanceTimersByTimeAsync(50)
|
||||
|
||||
expect(state.pendingRequests.get(reqId)?.eose).toBe(true)
|
||||
})
|
||||
@@ -67,7 +67,7 @@ describe("ConnectionState", () => {
|
||||
const event = {id: "event123", kind: 1}
|
||||
|
||||
connection.sender.worker.push(["EVENT", event])
|
||||
vi.advanceTimersByTime(50)
|
||||
await vi.advanceTimersByTimeAsync(50)
|
||||
|
||||
expect(state.pendingPublishes.has(event.id)).toBeTruthy()
|
||||
expect(state.pendingPublishes.get(event.id)).toEqual({
|
||||
@@ -84,7 +84,7 @@ describe("ConnectionState", () => {
|
||||
})
|
||||
|
||||
connection.socket.worker.push(["OK", eventId, true])
|
||||
vi.advanceTimersByTime(50)
|
||||
await vi.advanceTimersByTimeAsync(50)
|
||||
|
||||
expect(state.pendingPublishes.has(eventId)).toBe(false)
|
||||
})
|
||||
@@ -97,7 +97,7 @@ describe("ConnectionState", () => {
|
||||
})
|
||||
|
||||
connection.socket.worker.push(["OK", event.id, false, "auth-required:challenge123"])
|
||||
vi.advanceTimersByTime(50)
|
||||
await vi.advanceTimersByTimeAsync(50)
|
||||
|
||||
// Event should still be in pending publishes
|
||||
expect(state.pendingPublishes.has(event.id)).toBe(true)
|
||||
@@ -113,7 +113,7 @@ describe("ConnectionState", () => {
|
||||
})
|
||||
|
||||
connection.socket.worker.push(["OK", event.id, false, "auth-required:challenge123"])
|
||||
vi.advanceTimersByTime(50)
|
||||
await vi.advanceTimersByTimeAsync(50)
|
||||
|
||||
// Event should be removed from pending publishes
|
||||
expect(state.pendingPublishes.has(event.id)).toBe(false)
|
||||
@@ -128,7 +128,7 @@ describe("ConnectionState", () => {
|
||||
connection.on(ConnectionEvent.Notice, noticeSpy)
|
||||
|
||||
connection.socket.worker.push(["NOTICE", "test notice"])
|
||||
vi.advanceTimersByTime(50)
|
||||
await vi.advanceTimersByTimeAsync(50)
|
||||
|
||||
expect(noticeSpy).toHaveBeenCalledWith(connection, "test notice")
|
||||
})
|
||||
@@ -138,7 +138,7 @@ describe("ConnectionState", () => {
|
||||
connection.on(ConnectionEvent.Notice, noticeSpy)
|
||||
|
||||
connection.socket.worker.push(["CLOSED", "req123", "auth-required:challenge123"])
|
||||
vi.advanceTimersByTime(50)
|
||||
await vi.advanceTimersByTimeAsync(50)
|
||||
|
||||
expect(noticeSpy).toHaveBeenCalledWith(connection, "auth-required:challenge123")
|
||||
})
|
||||
|
||||
@@ -42,7 +42,6 @@ export class ConnectionSender {
|
||||
if (verb === "CLOSE" && !cxn.state.pendingRequests.has(message[1])) {
|
||||
return
|
||||
}
|
||||
|
||||
cxn.socket.send(message)
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user