peerjs.ts 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import { expect } from 'chai';
  2. import http from 'http';
  3. import expectedJson from '../app.json';
  4. import { spawn } from 'child_process';
  5. import path from 'path';
  6. const PORT = '9000';
  7. async function makeRequest() {
  8. return new Promise<object>((resolve, reject) => {
  9. http.get(`http://localhost:${PORT}/`, resp => {
  10. let data = '';
  11. resp.on('data', chunk => {
  12. data += chunk;
  13. });
  14. resp.on('end', () => {
  15. resolve(JSON.parse(data));
  16. });
  17. }).on("error", err => {
  18. console.log("Error: " + err.message);
  19. reject(err);
  20. });
  21. });
  22. }
  23. describe('Check bin/peerjs', () => {
  24. it('should return content of app.json file', async () => {
  25. let resolver: () => void;
  26. let rejecter: (err: Error) => void;
  27. const promise = new Promise<void>((resolve, reject) => {
  28. resolver = resolve;
  29. rejecter = reject;
  30. });
  31. const ls = spawn('node', [path.join(__dirname, '../', 'bin/peerjs'), '--port', PORT]);
  32. ls.stdout.on('data', async (data: string) => {
  33. if (!data.includes('Started')) return;
  34. try {
  35. const resp = await makeRequest();
  36. expect(resp).to.deep.eq(expectedJson);
  37. resolver();
  38. } catch (error) {
  39. rejecter(error);
  40. } finally {
  41. ls.kill('SIGINT');
  42. }
  43. });
  44. return promise;
  45. });
  46. });