service.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import {fork} from 'child_process';
  2. import tape from 'tape';
  3. import _test from 'tape-promise';
  4. import http from 'http';
  5. const tapetest = _test(tape);
  6. const server = fork('build/service.js'),
  7. connstring = 'http://localhost:8728';
  8. tapetest('service', async function testService(assert) {
  9. try {
  10. await waitPro();
  11. const data = await requestPro(connstring + '/');
  12. console.log('data', data);
  13. }
  14. catch(e) {
  15. console.log('error somewhere', e);
  16. assert.fail('error somewhere');
  17. }
  18. assert.end();
  19. });
  20. tapetest.onFinish(async function cleanup() {
  21. server.kill();
  22. });
  23. function waitPro(n = 1000) {
  24. return new Promise(function pro(resolve, reject) {
  25. setTimeout(resolve, n);
  26. });
  27. }
  28. function requestPro(reqopts, data) {
  29. return new Promise(function prot(resolve, reject) {
  30. try {
  31. let req = http.request(reqopts, function received(resp) {
  32. let str = '';
  33. resp.on('data', function p(part) {
  34. str += part;
  35. });
  36. resp.on('end', function done() {
  37. if( resp.statusCode >= 400 && resp.statusCode <= 599 ) {
  38. reject(str);
  39. }
  40. else {
  41. resolve(str);
  42. }
  43. });
  44. });
  45. if( data ) {
  46. req.write(data);
  47. }
  48. req.end();
  49. }
  50. catch(e) {
  51. reject(e);
  52. }
  53. });
  54. }