$(document).ready(function () {
module("JIDs");
test("Normal JID", function () {
var jid = "darcy@pemberley.lit/library";
equals(Strophe.getNodeFromJid(jid), "darcy",
"Node should be 'darcy'");
equals(Strophe.getDomainFromJid(jid), "pemberley.lit",
"Domain should be 'pemberley.lit'");
equals(Strophe.getResourceFromJid(jid), "library",
"Node should be 'library'");
equals(Strophe.getBareJidFromJid(jid),
"darcy@pemberley.lit",
"Bare JID should be 'darcy@pemberley.lit'");
});
test("Weird node (unescaped)", function () {
var jid = "darcy@netherfield.lit@pemberley.lit/library";
equals(Strophe.getNodeFromJid(jid), "darcy",
"Node should be 'darcy'");
equals(Strophe.getDomainFromJid(jid),
"netherfield.lit@pemberley.lit",
"Domain should be 'netherfield.lit@pemberley.lit'");
equals(Strophe.getResourceFromJid(jid), "library",
"Resource should be 'library'");
equals(Strophe.getBareJidFromJid(jid),
"darcy@netherfield.lit@pemberley.lit",
"Bare JID should be 'darcy@netherfield.lit@pemberley.lit'");
});
test("Weird node (escaped)", function () {
var escapedNode = Strophe.escapeNode("darcy@netherfield.lit");
var jid = escapedNode + "@pemberley.lit/library";
equals(Strophe.getNodeFromJid(jid), "darcy\\40netherfield.lit",
"Node should be 'darcy\\40netherfield.lit'");
equals(Strophe.getDomainFromJid(jid),
"pemberley.lit",
"Domain should be 'pemberley.lit'");
equals(Strophe.getResourceFromJid(jid), "library",
"Resource should be 'library'");
equals(Strophe.getBareJidFromJid(jid),
"darcy\\40netherfield.lit@pemberley.lit",
"Bare JID should be 'darcy\\40netherfield.lit@pemberley.lit'");
});
test("Weird resource", function () {
var jid = "books@chat.pemberley.lit/darcy@pemberley.lit/library";
equals(Strophe.getNodeFromJid(jid), "books",
"Node should be 'books'");
equals(Strophe.getDomainFromJid(jid), "chat.pemberley.lit",
"Domain should be 'chat.pemberley.lit'");
equals(Strophe.getResourceFromJid(jid),
"darcy@pemberley.lit/library",
"Resource should be 'darcy@pemberley.lit/library'");
equals(Strophe.getBareJidFromJid(jid),
"books@chat.pemberley.lit",
"Bare JID should be 'books@chat.pemberley.lit'");
});
module("Builder");
test("Correct namespace (#32)", function () {
var stanzas = [new Strophe.Builder("message", {foo: "asdf"}).tree(),
$build("iq", {}).tree(),
$pres().tree()];
$.each(stanzas, function () {
equals($(this).attr('xmlns'), Strophe.NS.CLIENT,
"Namespace should be '" + Strophe.NS.CLIENT + "'");
});
});
test("send() accepts Builders (#27)", function () {
var stanza = $pres();
var conn = new Strophe.Connection("");
// fake connection callback to avoid errors
conn.connect_callback = function () {};
ok(conn._data.length === 0, "Output queue is clean");
try {
conn.send(stanza);
} catch (e) {}
ok(conn._data.length === 1, "Output queue contains an element");
});
test("send() does not accept strings", function () {
var stanza = "";
var conn = new Strophe.Connection("");
// fake connection callback to avoid errors
conn.connect_callback = function () {};
expect(1);
try {
conn.send(stanza);
} catch (e) {
equals(e.name, "StropheError", "send() should throw exception");
}
});
test("Builder with XML attribute escaping test", function () {
var text = "";
var expected = "";
var pres = $pres({to: text});
equals(pres.toString(), expected, "< should be escaped");
text = "foo&bar";
expected = "";
pres = $pres({to: text});
equals(pres.toString(), expected, "& should be escaped");
});
module("XML");
test("XML escaping test", function () {
var text = "s & p";
var textNode = Strophe.xmlTextNode(text);
equals(Strophe.getText(textNode), "s & p", "should be escaped");
var text0 = "s < & > p";
var textNode0 = Strophe.xmlTextNode(text0);
equals(Strophe.getText(textNode0), "s < & > p", "should be escaped");
});
test("XML element creation", function () {
var elem = Strophe.xmlElement("message");
equals(elem.tagName, "message", "Element name should be the same");
});
module("Handler");
test("Full JID matching", function () {
var elem = $msg({from: 'darcy@pemberley.lit/library'}).tree();
var hand = new Strophe.Handler(null, null, null, null, null,
'darcy@pemberley.lit/library');
equals(hand.isMatch(elem), true, "Full JID should match");
hand = new Strophe.Handler(null, null, null, null, null,
'darcy@pemberley.lit')
equals(hand.isMatch(elem), false, "Bare JID shouldn't match");
});
test("Bare JID matching", function () {
var elem = $msg({from: 'darcy@pemberley.lit/library'}).tree();
var hand = new Strophe.Handler(null, null, null, null, null,
'darcy@pemberley.lit/library',
{matchBare: true});
equals(hand.isMatch(elem), true, "Full JID should match");
hand = new Strophe.Handler(null, null, null, null, null,
'darcy@pemberley.lit',
{matchBare: true});
equals(hand.isMatch(elem), true, "Bare JID should match");
});
module("Misc");
test("Quoting strings", function () {
var input = '"beep \\40"';
var conn = new Strophe.Connection();
var output = conn._quote(input);
equals(output, "\"\\\"beep \\\\40\\\"\"",
"string should be quoted and escaped");
});
});