server.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import child_process from 'child_process';
  2. import tape from 'blue-tape';
  3. import http from 'http';
  4. import socketclient from 'socket.io-client';
  5. const serverhost = 'localhost',
  6. serverport = 8084,
  7. server = child_process.fork('build/server.js');
  8. tape.test('test server', function testServer(t) {
  9. let client;
  10. waitPro()
  11. .then(function done(a) {
  12. return requestPro(`http://${serverhost}:${serverport}`)
  13. .then(function done(a) {
  14. t.equal(a, 'yes', 'received message from server');
  15. })
  16. })
  17. .catch(function catchall(e) {
  18. console.log('error somewhere', e);
  19. t.fail('error somewhere');
  20. })
  21. .then(function done(a) {
  22. t.end();
  23. server.kill();
  24. })
  25. });
  26. function waitPro(n = 1000) {
  27. return new Promise(function pro(resolve, reject) {
  28. setTimeout(resolve, n);
  29. });
  30. }
  31. function requestPro(reqopts, data) {
  32. return new Promise(function prot(resolve, reject) {
  33. try {
  34. let req = http.request(reqopts, function received(resp) {
  35. let str = '';
  36. resp.on('data', function p(part) {
  37. str += part;
  38. });
  39. resp.on('end', function done() {
  40. if( resp.statusCode >= 400 && resp.statusCode <= 599 ) {
  41. reject(str);
  42. }
  43. else {
  44. resolve(str);
  45. }
  46. });
  47. });
  48. req.on('error', function err(ee) {
  49. reject(ee);
  50. });
  51. if( data ) {
  52. req.write(data);
  53. }
  54. req.end();
  55. }
  56. catch(e) {
  57. reject(e);
  58. }
  59. });
  60. }
  61. function responsePro(socket, evt, wait = 3000) {
  62. return new Promise(function pro(resolve, reject) {
  63. let to = setTimeout(reject.bind(null, 'socket event TIMEOUT ' + evt), wait);
  64. socket.once(evt, function (a) {
  65. clearTimeout(to);
  66. resolve(a);
  67. });
  68. });
  69. }