websocket_test.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. /*
  2. * vim: ts=4:sw=4:expandtab
  3. */
  4. describe('TextSecureWebSocket', function() {
  5. var RealWebSocket = window.WebSocket;
  6. before(function() { window.WebSocket = MockSocket; });
  7. after (function() { window.WebSocket = RealWebSocket; });
  8. it('connects and disconnects', function(done) {
  9. var mockServer = new MockServer('ws://localhost:8080');
  10. mockServer.on('connection', function(server) {
  11. socket.close();
  12. server.close();
  13. done();
  14. });
  15. var socket = new TextSecureWebSocket('ws://localhost:8080');
  16. });
  17. it('sends and receives', function(done) {
  18. var mockServer = new MockServer('ws://localhost:8080');
  19. mockServer.on('connection', function(server) {
  20. server.on('message', function(data) {
  21. server.send('ack');
  22. server.close();
  23. });
  24. });
  25. var socket = new TextSecureWebSocket('ws://localhost:8080');
  26. socket.onmessage = function(response) {
  27. assert.strictEqual(response.data, 'ack');
  28. socket.close();
  29. done();
  30. };
  31. socket.send('syn');
  32. });
  33. it('exposes the socket status', function(done) {
  34. var mockServer = new MockServer('ws://localhost:8082');
  35. mockServer.on('connection', function(server) {
  36. assert.strictEqual(socket.getStatus(), WebSocket.OPEN);
  37. server.close();
  38. socket.close();
  39. });
  40. var socket = new TextSecureWebSocket('ws://localhost:8082');
  41. socket.onclose = function() {
  42. assert.strictEqual(socket.getStatus(), WebSocket.CLOSING);
  43. done();
  44. };
  45. });
  46. it('reconnects', function(done) {
  47. this.timeout(60000);
  48. var mockServer = new MockServer('ws://localhost:8082');
  49. var socket = new TextSecureWebSocket('ws://localhost:8082');
  50. socket.onclose = function() {
  51. var mockServer = new MockServer('ws://localhost:8082');
  52. mockServer.on('connection', function(server) {
  53. socket.close();
  54. server.close();
  55. done();
  56. });
  57. };
  58. mockServer.close();
  59. });
  60. });