123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- var http = require('http')
- var iconv = require('iconv-lite')
- module.exports = () => new Promise((resolve, reject) => {
- var autoreload = {index: 0, content: '你好'}
- server = http.createServer()
- server.on('request', (req, res) => {
- // content-type
- if (/wrong-content-type/.test(req.url)) {
- res.setHeader('Content-Type', 'text/plain')
- res.end('**bold**')
- }
- else if (/correct-content-type/.test(req.url)) {
- res.setHeader('Content-Type', 'text/markdown')
- res.end('**bold**')
- }
- else if (/correct-content-type-variation/.test(req.url)) {
- res.setHeader('Content-Type', 'text/x-markdown')
- res.end('**bold**')
- }
- // popup options
- else if (/compiler-options-marked/.test(req.url)) {
- res.setHeader('Content-Type', 'text/x-markdown')
- res.end('~~strikethrough~~')
- }
- else if (/compiler-options-remark/.test(req.url)) {
- res.setHeader('Content-Type', 'text/x-markdown')
- res.end('- [ ] task')
- }
- else if (/content-options-toc/.test(req.url)) {
- res.setHeader('Content-Type', 'text/markdown')
- res.end('# h1\n# h2\n# h3')
- }
- else if (/content-options-scroll/.test(req.url)) {
- res.setHeader('Content-Type', 'text/markdown')
- res.end([
- '# h1',
- Array(500).fill('lorem ipsum').join(' '),
- '## h2',
- Array(500).fill('lorem ipsum').join(' '),
- '### h3',
- Array(500).fill('lorem ipsum').join(' '),
- ].join('\n\n'))
- }
- else if (/popup-autoreload/.test(req.url)) {
- if (/preventCache/.test(req.url)) {
- autoreload.index++
- }
- if (autoreload.index === 3) {
- autoreload.content = '你好你好'
- }
- else if (autoreload.index === 5) {
- autoreload.content = '你好你好你好'
- }
- res.setHeader('Content-Type', 'text/markdown')
- res.end(iconv.encode(autoreload.content, 'big5'))
- }
- // csp
- else if (/csp-match-header/.test(req.url)) {
- res.setHeader('Content-Security-Policy',
- `default-src 'none'; style-src 'unsafe-inline'; sandbox`)
- res.setHeader('Content-Type', 'text/markdown')
- res.end('# h1')
- }
- else if (/csp-match-path/.test(req.url)) {
- res.setHeader('Content-Security-Policy',
- `default-src 'none'; style-src 'unsafe-inline'; sandbox`)
- res.end('# h1')
- }
- else if (/csp-no-header-no-path/.test(req.url)) {
- res.setHeader('Content-Security-Policy',
- `default-src 'none'; style-src 'unsafe-inline'; sandbox`)
- res.end('# h1')
- }
- // encoding
- else if (/encoding-no-content-type/.test(req.url)) {
- res.end(iconv.encode('你好', 'big5'))
- }
- else if (/encoding-no-charset/.test(req.url)) {
- res.setHeader('Content-Type', 'text/markdown')
- res.end(iconv.encode('你好', 'big5'))
- }
- else if (/encoding-wrong-charset/.test(req.url)) {
- res.setHeader('Content-Type', 'text/markdown; charset=UTF-8')
- res.end(iconv.encode('здрасти', 'win1251'))
- }
- })
- server.listen(3000, () => resolve(server))
- })
|