service.js 1.6 KB

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