Skip to content

Commit

Permalink
test: add failin WebSocket patching tests
Browse files Browse the repository at this point in the history
  • Loading branch information
kettanaito committed Mar 24, 2024
1 parent 59a648b commit a4cd20c
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 25 deletions.
23 changes: 22 additions & 1 deletion test/browser/ws-api/ws.apply.browser.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,28 @@ declare global {
}
}

test('does not apply the interceptor until "worker.start()" is called', async ({
test('does not patch WebSocket class if no event handlers were defined', async ({
loadExample,
page,
}) => {
await loadExample(require.resolve('./ws.runtime.js'), {
skipActivation: true,
})

await page.evaluate(async () => {
const { setupWorker } = window.msw
const worker = setupWorker()
await worker.start()
})

await expect(
page.evaluate(() => {
return new WebSocket('wss://example.com').constructor.name
}),
).resolves.toBe('WebSocket')
})

test('does not patch WebSocket class until "worker.start()" is called', async ({
loadExample,
page,
}) => {
Expand Down
34 changes: 34 additions & 0 deletions test/node/ws-api/ws.apply.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/**
* @vitest-environment node-websocket
*/
import { ws } from 'msw'
import { setupServer } from 'msw/node'

const server = setupServer()

afterEach(() => {
server.close()
})

it('does not patch WebSocket class if no event handlers were defined', () => {
server.listen()

const raw = new WebSocket('wss://example.com')
expect(raw.constructor.name).toBe('WebSocket')
expect(raw).toBeInstanceOf(EventTarget)
})

it('does not patch WebSocket class until server.listen() is called', () => {
const api = ws.link('wss://example.com')
server.use(api.on('connection', () => {}))

const raw = new WebSocket('wss://example.com')
expect(raw.constructor.name).toBe('WebSocket')
expect(raw).toBeInstanceOf(EventTarget)

server.listen()

const mocked = new WebSocket('wss://example.com')
expect(mocked.constructor.name).not.toBe('WebSocket')
expect(mocked).toBeInstanceOf(EventTarget)
})
24 changes: 0 additions & 24 deletions test/node/ws-api/ws.listen.test.ts

This file was deleted.

0 comments on commit a4cd20c

Please sign in to comment.