peerjs.spec.ts 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import { describe, expect, it } from "@jest/globals";
  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. expect.assertions(1);
  26. let resolver: () => void;
  27. let rejecter: (err: unknown) => void;
  28. const promise = new Promise<void>((resolve, reject) => {
  29. resolver = resolve;
  30. rejecter = reject;
  31. });
  32. const ls = spawn('node', [path.join(__dirname, '../', 'dist/bin/peerjs.js'), '--port', PORT]);
  33. ls.stdout.on('data', async (data: string) => {
  34. if (!data.includes('Started')) return;
  35. try {
  36. const resp = await makeRequest();
  37. expect(resp).toEqual(expectedJson);
  38. resolver();
  39. } catch (error) {
  40. rejecter(error);
  41. } finally {
  42. ls.kill('SIGKILL');
  43. }
  44. });
  45. return promise;
  46. });
  47. });