UNPKG

2.72 kBJavaScriptView Raw
1var dedent = require('dedent')
2var path = require('path')
3var tape = require('tape')
4var http = require('http')
5var tmp = require('tmp')
6var fs = require('fs')
7
8var bankai = require('../http')
9
10var tmpScriptname
11
12function setup (assert) {
13 var script = dedent`
14 var css = require('sheetify')
15 var html = require('bel')
16 css\`
17 .foo { color: blue }
18 \`
19 html\`<foo class="foo">hello</foo>\`
20 `
21
22 var file = dedent`
23 hello planet
24 `
25
26 var tmpDir = tmp.dirSync({ dir: path.join(__dirname, '../tmp'), unsafeCleanup: true })
27 assert.on('end', tmpDir.removeCallback)
28 var contentDirname = path.join(tmpDir.name, 'content')
29 var assetDirname = path.join(tmpDir.name, 'assets')
30 var assetSubdirname = path.join(assetDirname, 'images')
31
32 tmpScriptname = path.join(tmpDir.name, 'index.js')
33 var tmpFilename = path.join(contentDirname, 'file.txt')
34 var tmpAssetJsFilename = path.join(assetDirname, 'file.js')
35 var tmpAssetCssFilename = path.join(assetDirname, 'file.css')
36 var tmpJsonFilename = path.join(assetDirname, 'file.json')
37 var tmpJpgFilename = path.join(assetDirname, 'file.jpg')
38 var tmpJpgSubFilename = path.join(assetSubdirname, 'file.jpg')
39
40 fs.mkdirSync(contentDirname)
41 fs.mkdirSync(assetDirname)
42 fs.mkdirSync(assetSubdirname)
43 fs.writeFileSync(tmpScriptname, script)
44 fs.writeFileSync(tmpFilename, file)
45 fs.writeFileSync(tmpAssetJsFilename, file)
46 fs.writeFileSync(tmpAssetCssFilename, file)
47 fs.writeFileSync(tmpJsonFilename, file)
48 fs.writeFileSync(tmpJpgFilename, file)
49 fs.writeFileSync(tmpJpgSubFilename, file)
50}
51
52tape('should route urls appropriately', function (assert) {
53 setup(assert)
54 var handler = bankai(tmpScriptname, { watch: false, quiet: true })
55 var server = http.createServer(function (req, res) {
56 handler(req, res, function () {
57 res.statusCode = 404
58 res.end('not found')
59 })
60 })
61
62 server.listen(3030, function () {
63 console.log('listening on port 3030')
64 })
65
66 var urls = [
67 '/bundle.js',
68 '/bundle.js?cache=busted',
69 '/bundle.css',
70 '/bundle.css?cache=busted',
71 '/content/file.txt',
72 '/content/file.txt?cache=busted',
73 '/assets/file.json',
74 '/assets/file.css',
75 '/assets/file.css?cache=busted',
76 '/assets/file.js',
77 '/assets/file.js?cache=busted',
78 '/assets/file.json?cache=busted',
79 '/assets/file.jpg',
80 '/assets/file.jpg?cache=busted',
81 '/assets/images/file.jpg',
82 '/assets/images/file.jpg?cache=busted'
83 ]
84
85 var count = 0
86 urls.forEach(function (url) {
87 http.get('http://localhost:3030' + url, function (res) {
88 assert.equal(res.statusCode, 200, url)
89 if (++count === urls.length) {
90 server.close()
91 assert.end()
92 }
93 })
94 })
95})