diff options
author | Shin'ya Ueoka <ueokande@i-beam.org> | 2018-05-14 20:57:39 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-14 20:57:39 +0900 |
commit | e9a6fb85583a891cba2683f2abb05f34e13bff43 (patch) | |
tree | f9879006fc6475a1cf9fd98bffd1b9541f5aa4c9 /e2e/web-server | |
parent | c6c885345e212bedc2723e9105488d3e5fe9f8be (diff) | |
parent | a8d3de42434153d90eebdcceb536ce0537c9167f (diff) |
Merge pull request #392 from ueokande/e2e-testing
Add e2e test cases
Diffstat (limited to 'e2e/web-server')
-rw-r--r-- | e2e/web-server/index.js | 92 | ||||
-rw-r--r-- | e2e/web-server/url.js | 5 |
2 files changed, 88 insertions, 9 deletions
diff --git a/e2e/web-server/index.js b/e2e/web-server/index.js index 81e11c1..bf60078 100644 --- a/e2e/web-server/index.js +++ b/e2e/web-server/index.js @@ -1,14 +1,88 @@ +'use strict'; + +var serverUrl = require('./url'); var http = require('http'); +var url = require('url'); -const content = -'<!DOCTYPE html>' + -'<html lang="en">' + - '<body style="width:10000px; height:10000px">' + - '</body>' + -'</html">' ; +const handleScroll = (req, res) => { + res.writeHead(200, {'Content-Type': 'text/html'}); + res.end('<!DOCTYPEhtml><html lang="en"><body style="width:10000px; height:10000px"></body></html">'); +}; +const handleAPagenation = (req, res) => { + let u = url.parse(req.url); + let params = new url.URLSearchParams(u.search); + let page = params.get('page') === null ? null : Number(params.get('page')); + if (page === null || isNaN(page)) { + return handle404(req, res); + } + + let body = ''; + let nextLink = u.pathname + '?page=' + (page + 1); + let prevLink = u.pathname + '?page=' + (page - 1); + + if (page > 1) { + body += '<a href="' + prevLink + '">prev</a> | '; + } + body += '<a href="' + nextLink + '">next</a>'; + + res.writeHead(200, {'Content-Type': 'text/html'}); + res.end('<!DOCTYPEhtml><html lang="en"><body">' + body + '</body></html">'); +}; + +const handleLinkPagenation = (req, res) => { + let u = url.parse(req.url); + let params = new url.URLSearchParams(u.search); + let page = params.get('page') === null ? null : Number(params.get('page')); + if (page === null || isNaN(page)) { + return handle404(req, res); + } + + let head = ''; + let nextLink = u.pathname + '?page=' + (page + 1); + let prevLink = u.pathname + '?page=' + (page - 1); + + if (page > 1) { + head += '<link rel="prev" href="' + prevLink + '"></link>'; + } + head += '<link rel="next" href="' + nextLink + '"></link>'; -http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/html'}); - res.end(content); -}).listen(11111, '127.0.0.1'); + res.end('<!DOCTYPEhtml><html lang="en"><head>' + head + '</head><body"></body></html">'); +}; + +const handleFollow = (req, res) => { + let body = ''; + body += '<a href="#a">a</a>'; + body += '<a href="#external" target="_blank">external</a>'; + body += '<img width="320" height="240" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" usemap="#map"><map name="map"><area href="#area" shape="rect" coords="15,19,126,104"></map>' + + res.writeHead(200, {'Content-Type': 'text/html'}); + res.end('<!DOCTYPEhtml><html lang="en"><body">' + body + '</body></html">'); +} + +const handle404 = (req, res) => { + res.writeHead(404, {'Content-Type': 'text/plain'}); + res.end('not found') +}; + +http.createServer(function (req, res) { + if (req.method !== 'GET') { + handle404(req, res); + } + + let u = url.parse(req.url); + if (u.pathname === '/scroll') { + handleScroll(req, res); + } else if (u.pathname === '/a-pagenation') { + handleAPagenation(req, res); + } else if (u.pathname === '/link-pagenation') { + handleLinkPagenation(req, res); + } else if (u.pathname === '/follow') { + handleFollow(req, res); + } else { + handle404(req, res); + } + + console.log(`"${req.method} ${req.url}"`, res.statusCode) +}).listen(serverUrl.PORT, serverUrl.HOST); diff --git a/e2e/web-server/url.js b/e2e/web-server/url.js new file mode 100644 index 0000000..37f3d84 --- /dev/null +++ b/e2e/web-server/url.js @@ -0,0 +1,5 @@ +module.exports = { + PORT: 11111, + HOST: '127.0.0.1', + CLIENT_URL: 'http://127.0.0.1:11111', +} |