Version 1
[yaffs-website] / node_modules / phridge / test / helpers / testServer.js
diff --git a/node_modules/phridge/test/helpers/testServer.js b/node_modules/phridge/test/helpers/testServer.js
new file mode 100644 (file)
index 0000000..0444466
--- /dev/null
@@ -0,0 +1,56 @@
+"use strict";
+
+var http = require("http");
+var getport = require("getport");
+var fs = require("fs");
+var path = require("path");
+
+var testPage = fs.readFileSync(path.join(__dirname, "/testPage.html"), "utf8");
+var alamidLogo = fs.readFileSync(path.join(__dirname, "/alamid.png"), "utf8");
+var server;
+
+/**
+ * @this Runner
+ * @returns {Promise}
+ */
+function start() {
+    var self = this;
+
+    return new Promise(function (resolve, reject) {
+        getport(30000, function (err, port) {
+            if (err) {
+                return reject(err);
+            }
+            if (server) {
+                stop();
+            }
+            server = http
+                .createServer(serveTestFiles)
+                .listen(port, function onListen(err) {
+                    if (err) {
+                        return reject(err);
+                    }
+                    self.testServerUrl = "http://localhost:" + port;
+                    resolve(port);
+                });
+        });
+    });
+}
+
+function stop() {
+    server.close();
+    server.removeAllListeners();
+}
+
+function serveTestFiles(req, res) {
+    if (req.url.indexOf("alamid") > -1) {
+        res.setHeader("Content-Type", "image/png");
+        res.end(alamidLogo);
+        return;
+    }
+    res.setHeader("Content-Type", "text/html; charset=utf8");
+    res.end(testPage, "utf8");
+}
+
+exports.start = start;
+exports.stop = stop;