otr.js 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. (function (root, factory) {
  2. define(["mock", "converse-core", "test-utils"], factory);
  3. } (this, function (mock, converse, test_utils) {
  4. var $ = converse.env.jQuery;
  5. var Strophe = converse.env.Strophe;
  6. var b64_sha1 = converse.env.b64_sha1;
  7. return describe("The OTR module", function() {
  8. it("will add processing hints to sent out encrypted <message> stanzas", mock.initConverse(function (_converse) {
  9. test_utils.openControlBox();
  10. test_utils.openContactsPanel(_converse);
  11. test_utils.createContacts(_converse, 'current');
  12. var UNVERIFIED = 1, UNENCRYPTED = 0;
  13. var contact_name = mock.cur_names[0];
  14. var contact_jid = contact_name.replace(/ /g,'.').toLowerCase() + '@localhost';
  15. test_utils.openChatBoxFor(_converse, contact_jid);
  16. var chatview = _converse.chatboxviews.get(contact_jid);
  17. chatview.model.set('otr_status', UNVERIFIED);
  18. var stanza = chatview.createMessageStanza(new _converse.Message({ message: 'hello world'}));
  19. var $hints = $(stanza.nodeTree).find('[xmlns="'+Strophe.NS.HINTS+'"]');
  20. expect($hints.length).toBe(3);
  21. expect($hints.get(0).tagName).toBe('no-store');
  22. expect($hints.get(1).tagName).toBe('no-permanent-store');
  23. expect($hints.get(2).tagName).toBe('no-copy');
  24. chatview.model.set('otr_status', UNENCRYPTED); // Reset again to UNENCRYPTED
  25. }));
  26. describe("An OTR Chat Message", function () {
  27. it("will not be carbon copied when it's sent out", mock.initConverse(function (_converse) {
  28. test_utils.openControlBox();
  29. test_utils.openContactsPanel(_converse);
  30. test_utils.createContacts(_converse, 'current');
  31. var msgtext = "?OTR,1,3,?OTR:AAIDAAAAAAEAAAABAAAAwCQ8HKsag0y0DGKsneo0kzKu1ua5L93M4UKTkCf1I2kbm2RgS5kIxDTxrTj3wVRB+H5Si86E1fKtuBgsDf/bKkGTM0h/49vh5lOD9HkE8cnSrFEn5GN,";
  32. var sender_jid = mock.cur_names[3].replace(/ /g,'.').toLowerCase() + '@localhost';
  33. _converse.api.chats.open(sender_jid);
  34. var chatbox = _converse.chatboxes.get(sender_jid);
  35. spyOn(_converse.connection, 'send');
  36. chatbox.set('otr_status', 1); // Set OTR status to UNVERIFIED, to mock an encrypted session
  37. chatbox.trigger('sendMessage', new _converse.Message({ message: msgtext }));
  38. var $sent = $(_converse.connection.send.calls.argsFor(0)[0].tree());
  39. expect($sent.find('body').siblings('private').length).toBe(1);
  40. expect($sent.find('private').length).toBe(1);
  41. expect($sent.find('private').attr('xmlns')).toBe('urn:xmpp:carbons:2');
  42. chatbox.set('otr_status', 0); // Reset again to UNENCRYPTED
  43. }));
  44. });
  45. });
  46. }));