Bläddra i källkod

added 'service' folder

Brandon Wong 8 år sedan
förälder
incheckning
0a9e3d82b7
5 ändrade filer med 126 tillägg och 0 borttagningar
  1. 3 0
      service/.babelrc
  2. 6 0
      service/.gitignore
  3. 28 0
      service/package.json
  4. 22 0
      service/src/service.js
  5. 67 0
      service/test/service.js

+ 3 - 0
service/.babelrc

@@ -0,0 +1,3 @@
+{
+  "presets": ["es2015"]
+}

+ 6 - 0
service/.gitignore

@@ -0,0 +1,6 @@
+.idea
+node_modules
+build
+test-build
+npm-debug*
+*.swp

+ 28 - 0
service/package.json

@@ -0,0 +1,28 @@
+{
+  "name": "$foldername",
+  "main": "build/service.js",
+  "version": "1.0.0",
+  "scripts": {
+    "test": "node test-build/service.js",
+    "postinstall": "npm run compile",
+    "compile-test": "babel test --out-dir test-build",
+    "compile-src": "babel src --out-dir build",
+    "compile": "npm run compile-src; npm run compile-test",
+    "watch": "nodemon --watch src --watch test --exec \"npm run compile --silent\"",
+    "serverwatch": "nodemon --watch src --watch test --exec \"npm run compile --silent && node build/service.js\"",
+    "testwatch": "nodemon --watch src --watch test --exec \"npm run compile --silent && npm test\""
+  },
+  "dependencies": {
+    "babel-cli": "^6.6.5",
+    "babel-preset-es2015": "^6.6.0",
+    "express": "^4.13.4"
+  },
+  "devDependencies": {
+    "blue-tape": "^0.2.0",
+    "nodemon": "^1.9.1"
+  },
+  "directories": {
+    "test": "test"
+  },
+  "private": true
+}

+ 22 - 0
service/src/service.js

@@ -0,0 +1,22 @@
+
+import express from 'express';
+import http from 'http';
+
+
+const port = process.env.kport ? parseInt(process.env.kport) : 8080,
+    app = express(),
+    httpserver = http.createServer(app);
+
+httpserver.listen(port, function listening() {
+    console.log('service now listening on port', port);
+});
+
+app.get('/', function serve(req, res) {
+    res.send('kolab service');
+});
+
+
+
+
+
+

+ 67 - 0
service/test/service.js

@@ -0,0 +1,67 @@
+
+import {fork} from 'child_process';
+import tape from 'blue-tape';
+import http from 'http';
+
+
+tape.test('service', function testService(t) {
+    const server = fork('build/service.js'),
+        connstring = 'http://localhost:8080';
+    waitPro()
+    .then(function done(a) {
+        return requestPro(connstring + '/')
+            .then(function done(data) {
+                console.log('data', data);
+                return JSON.parse(data);
+            })
+    })
+
+    .catch(function (e) {
+        console.log('error somewhere', e);
+        t.fail('error somewhere');
+    })
+    .then(function done(a) {
+        server.kill();
+        DB.disconnect();
+        t.end();
+    });
+});
+
+
+function waitPro(n = 1000) {
+    return new Promise(function pro(resolve, reject) {
+        setTimeout(resolve, n);
+    });
+}
+function requestPro(reqopts, data) {
+    return new Promise(function prot(resolve, reject) {
+        try {
+            let req = http.request(reqopts, function received(resp) {
+                let str = '';
+                resp.on('data', function p(part) {
+                    str += part;
+                });
+                resp.on('end', function done() {
+                    if( resp.statusCode >= 400 && resp.statusCode <= 599 ) {
+                        reject(str);
+                    }
+                    else {
+                        resolve(str);
+                    }
+                });
+            });
+            if( data ) {
+                req.write(data);
+            }
+            req.end();
+        }
+        catch(e) {
+            reject(e);
+        }
+    });
+}
+
+
+
+
+