UNPKG

bunshine

Version:

A Bun HTTP & WebSocket server that is a little ray of sunshine.

47 lines (45 loc) 1.63 kB
import type { Server } from 'bun'; import { afterEach, beforeEach, describe, expect, it } from 'bun:test'; import HttpRouter from '../../HttpRouter/HttpRouter'; import { trailingSlashes } from './trailingSlashes'; describe('trailingSlashes middleware', () => { let app: HttpRouter; let server: Server; beforeEach(() => { app = new HttpRouter(); server = app.listen({ port: 0 }); }); afterEach(() => { server.stop(true); }); it('should add slashes', async () => { app.use(trailingSlashes('add')); const resp = await fetch(`${server.url}foo`); expect(resp.redirected).toBe(true); expect(resp.url).toBe(`${server.url}foo/`); }); it('should add slashes with query string', async () => { app.use(trailingSlashes('add')); const resp = await fetch(`${server.url}foo?a=b`); expect(resp.redirected).toBe(true); expect(resp.url).toBe(`${server.url}foo/?a=b`); }); it('should remove slashes', async () => { app.use(trailingSlashes('remove')); const resp = await fetch(`${server.url}foo/`); expect(resp.redirected).toBe(true); expect(resp.url).toBe(`${server.url}foo`); }); it('should remove slashes with query string', async () => { app.use(trailingSlashes('remove')); const resp = await fetch(`${server.url}foo/?a=b`); expect(resp.redirected).toBe(true); expect(resp.url).toBe(`${server.url}foo?a=b`); }); it('should not remove slashes at root', async () => { app.use(trailingSlashes('remove')); const resp = await fetch(server.url); expect(resp.redirected).toBe(false); expect(resp.url).toBe(`${server.url}`); }); });