1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
|
TestCase("JIDs", {
testNormalJid: function () {
var jid = "darcy@pemberley.lit/library";
assertEquals("Node should be 'darcy'",
"darcy", Strophe.getNodeFromJid(jid));
assertEquals("Domain should be 'pemberley.lit'",
"pemberley.lit", Strophe.getDomainFromJid(jid));
assertEquals("Resource should be 'library'",
"library", Strophe.getResourceFromJid(jid));
assertEquals("Bare JID should be 'darcy@pemberley.lit'",
"darcy@pemberley.lit", Strophe.getBareJidFromJid(jid));
},
testWeirdNode: function () {
var jid = "darcy@netherfield.lit@pemberley.lit/library";
assertEquals("Node should be 'darcy'",
"darcy", Strophe.getNodeFromJid(jid));
assertEquals("Domain should be 'netherfield.lit@pemberley.lit'",
"netherfield.lit@pemberley.lit",
Strophe.getDomainFromJid(jid));
assertEquals("Resource should be 'library'",
"library", Strophe.getResourceFromJid(jid));
assertEquals("Bare JID should be 'darcy@netherfield.lit@pemberley.lit",
"darcy@netherfield.lit@pemberley.lit",
Strophe.getBareJidFromJid(jid));
}
});
function foo() {
var $ = function () {};
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 = "<presence/>";
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 = "<b>";
var expected = "<presence to='<b>' xmlns='jabber:client'/>";
var pres = $pres({to: text});
equals(pres.toString(), expected, "< should be escaped");
text = "foo&bar";
expected = "<presence to='foo&bar' xmlns='jabber:client'/>";
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("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");
});
}
|