UNPKG

st

Version:

A module for serving static files. Does etags, caching, etc.

67 lines (56 loc) 1.36 kB
const path = require('path') const fs = require('fs') const http = require('http') const request = require('request') const { test, teardown } = require('tap') const st = require('../st.js') let address let server const opts = Object.assign({ autoindex: true, path: path.dirname(__dirname), url: '/test' }, global.options || {}) const stExpect = fs.readFileSync(require.resolve('../st.js'), 'utf8') const mount = st(opts) function req (url, headers, cb) { if (typeof headers === 'function') { cb = headers headers = {} } let host = address.address if (address.family === 'IPv6') { host = `[${host}]` } request({ encoding: null, url: `http://${host}:${address.port}${url}`, headers, followRedirect: false }, cb) } test('setup', (t) => { server = http.createServer((req, res) => { try { if (!mount(req, res)) { res.statusCode = 404 return res.end(`Not a match: ${req.url}`) } } catch (e) { res.statusCode = 500 console.error(e) return res.end(`Internal error: ${e.message}`) } }).listen(0, '127.0.0.1', () => { t.pass('listening') address = server.address() t.end() }) }) teardown(() => { server.close() }) module.exports.mount = mount module.exports.req = req module.exports.stExpect = stExpect module.exports.opts = opts