From 6e6cd4c01e089781f06ee25d50766e79007ac172 Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Wed, 3 Apr 2019 21:44:42 +0900 Subject: Add integration tests for scroll --- e2e-lanthan/server/MockServer.js | 58 ++++++++++++++++++++++++++++++++++++++++ e2e-lanthan/server/handlers.js | 17 ++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 e2e-lanthan/server/MockServer.js create mode 100644 e2e-lanthan/server/handlers.js (limited to 'e2e-lanthan/server') diff --git a/e2e-lanthan/server/MockServer.js b/e2e-lanthan/server/MockServer.js new file mode 100644 index 0000000..131c177 --- /dev/null +++ b/e2e-lanthan/server/MockServer.js @@ -0,0 +1,58 @@ +var http = require('http'); +var url = require('url'); +var handlers = require('./handlers'); + +class MockServer { + constructor() { + this.handlers = []; + this.server = undefined; + } + + start() { + if (this.server) { + throw new Error('Server is already started'); + } + + let listener = (req, res) => { + if (req.method !== 'GET') { + res.writeHead(404, {'Content-Type': 'text/plain'}); + res.end('not found') + return + } + + let u = url.parse(req.url); + let handler = this.handlers.find(h => u.pathname == h.pathname); + if (!handler) { + res.writeHead(404, {'Content-Type': 'text/plain'}); + res.end('not found') + return + } + + handler.handler(req, res); + } + + this.server = http.createServer(listener); + this.server.listen(); + } + + stop() { + if (!this.server) { + throw new Error('Server is not started'); + } + this.server.close(); + this.server = undefined; + } + + port() { + if (!this.server) { + throw new Error('Server is not started'); + } + return this.server.address().port + } + + on(pathname, handler) { + this.handlers.push({ pathname, handler }); + } +} + +module.exports = MockServer diff --git a/e2e-lanthan/server/handlers.js b/e2e-lanthan/server/handlers.js new file mode 100644 index 0000000..979b4be --- /dev/null +++ b/e2e-lanthan/server/handlers.js @@ -0,0 +1,17 @@ +const handleText = (body) => { + return (req, res) => { + res.writeHead(200, {'Content-Type': 'text/plane'}); + res.end(body); + } +} + +const handleHtml = (body) => { + return (req, res) => { + res.writeHead(200, {'Content-Type': 'text/html'}); + res.end(body); + } +} + +module.exports = { + handleText, handleHtml +} -- cgit v1.2.3