diff --git a/converse.js b/converse.js index 8a5e75bff..c8118f342 100644 --- a/converse.js +++ b/converse.js @@ -4621,6 +4621,12 @@ 'initialize': function (settings, callback) { converse.initialize(settings, callback); }, + 'getBuddy': function (jid) { + var contact = converse.roster.get(Strophe.getBareJidFromJid(jid)); + if (contact) { + return contact.attributes; + } + }, 'getRID': function () { if (converse.expose_rid_and_sid && typeof converse.connection !== "undefined") { return converse.connection.rid || converse.connection._proto.rid; diff --git a/spec/converse.js b/spec/converse.js index cdbd1bbfe..4af750e1b 100644 --- a/spec/converse.js +++ b/spec/converse.js @@ -43,5 +43,15 @@ // Restore the connection converse.connection = old_connection; }, converse)); + + it("has an API method for retrieving a buddy's attributes", $.proxy(function () { + var jid = mock.cur_names[0].replace(/ /g,'.').toLowerCase() + '@localhost'; + expect(converse_api.getBuddy(jid)).toBeFalsy(); + test_utils.createContacts('current'); + var attrs = converse_api.getBuddy(jid); + expect(typeof attrs).toBe('object'); + expect(attrs.fullname).toBe(mock.cur_names[0]); + expect(attrs.jid).toBe(jid); + }, converse)); }, converse, mock, test_utils)); }));