server.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import child_process from 'child_process';
  2. import tape from 'tape';
  3. import _test from 'tape-promise';
  4. import http from 'http';
  5. import socketclient from 'socket.io-client';
  6. const tapetest = _test(tape);
  7. const serverhost = 'localhost',
  8. serverport = 2424,
  9. server = child_process.fork('build/server.js');
  10. tapetest('test server', async function testServer(assert) {
  11. let client;
  12. try {
  13. await waitPro();
  14. const data = await requestPro(`http://${serverhost}:${serverport}`);
  15. assert.equal(data, 'working', 'received message from server');
  16. }
  17. catch(e) {
  18. console.log('error somewhere', e);
  19. assert.fail('error somewhere');
  20. }
  21. assert.end();
  22. });
  23. tapetest.onFinish(async function cleanup() {
  24. server.kill();
  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. }