Explorar el Código

Fixes the duplication bug in adding contact and adds test for the same

Anshul Singhal hace 8 años
padre
commit
3dd6ff1751
Se han modificado 3 ficheros con 31 adiciones y 2 borrados
  1. 1 0
      docs/CHANGES.md
  2. 28 0
      spec/controlbox.js
  3. 2 2
      src/converse-core.js

+ 1 - 0
docs/CHANGES.md

@@ -69,6 +69,7 @@
   New configuration setting:
   [muc_show_join_leave](https://conversejs.org/docs/html/configuration.html#muc-show-join-leave)
 - #366 Show the chat room occupant's JID in the tooltip (if you're allowed to see it). [jcbrand]
+- #585 Fixes the duplication bug due to case sensivity in adding contacts [saganshul]
 - #610, #785 Add presence priority handling [w3host, jcbrand]
 - #620 `auto_away` shouldn't change the user's status if it's set to `dnd`. [jcbrand]
 - #694 The `notification_option` wasn't being used consistently. [jcbrand]

+ 28 - 0
spec/controlbox.js

@@ -1087,6 +1087,34 @@
             // XXX: Awaiting more tests, close it again for now...
             panel.$el.find('a.toggle-xmpp-contact-form').click();
         }));
+
+        it("can be used to add contact and it checks for case-sensivity", mock.initConverse(function (_converse) {
+            spyOn(_converse, 'emit');
+            spyOn(_converse.rosterview, 'update').andCallThrough();
+            runs(function () {
+                test_utils.openControlBox();
+                // Adding two contacts one with Capital initials and one with small initials of same JID (Case sensitive check)
+                _converse.roster.create({
+                    jid: mock.pend_names[0].replace(/ /g,'.').toLowerCase() + '@localhost',
+                    subscription: 'none',
+                    ask: 'subscribe',
+                    fullname: mock.pend_names[0]
+                });
+                _converse.roster.create({
+                    jid: mock.pend_names[0].replace(/ /g,'.') + '@localhost',
+                    subscription: 'none',
+                    ask: 'subscribe',
+                    fullname: mock.pend_names[0]
+                });
+            });
+            waits(300);
+            runs(function () {
+                // Checking that only one entry is created because both JID is same (Case sensitive check)
+                expect(_converse.rosterview.$el.find('dd:visible').length).toBe(1);
+                expect(_converse.rosterview.update).toHaveBeenCalled();
+            });
+        }));
+
     });
 
     describe("The Controlbox Tabs", function () {

+ 2 - 2
src/converse-core.js

@@ -778,7 +778,7 @@
 
             initialize: function (attributes) {
                 var jid = attributes.jid;
-                var bare_jid = Strophe.getBareJidFromJid(jid);
+                var bare_jid = Strophe.getBareJidFromJid(jid).toLowerCase();
                 var resource = Strophe.getResourceFromJid(jid);
                 attributes.jid = bare_jid;
                 this.set(_.assignIn({
@@ -887,7 +887,7 @@
                 resources[resource] = {
                     'priority': priority,
                     'status': chat_status,
-                    'timestamp': timestamp 
+                    'timestamp': timestamp
                 };
                 var changed = {'resources': resources};
                 var hpr = this.getHighestPriorityResource();