Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[leftover branch] Xmpp #194

Open
wants to merge 12 commits into
base: master
Choose a base branch
from
220 changes: 220 additions & 0 deletions tests/xmpp.tests.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,220 @@
XmppHook.setDebug(true);

Tests.prototype.XmppTests = function() {
module("Xmpp (navigator.xmppClient)");
test("should exist", function() {
expect(5);
ok(navigator.xmppClient != null, "navigator.xmppClient should not be null");
ok(navigator.xmppClient.roster != null, "navigator.xmppClient.roster should exist");
ok(navigator.xmppClient.messageMap != null, "navigator.xmppClient.messageMap should exist");
ok(navigator.xmppClient.unreadCount == 0, "navigator.xmppClient.unreadCount should equal zero");
ok(navigator.xmppClient.subs != null, "navigator.xmppClient.subs should exist");
});
test("should have a connect method", function()
{
expect(1);
ok(navigator.xmppClient.connect != null, "navigator.xmppClient.connect should not be null");
});
test("should have a way to send a message", function()
{
expect(2);
ok(navigator.xmppClient.sendMessageToJID != null, "navigator.xmppClient.sendMessageToJid should not null");
ok(navigator.xmppClient.sendHtmlMessageToJID != null, "navigator.xmppClient.sendHtmlMessageToJid should not be null");
});
test("should have a way to publish and subscribe", function()
{
expect(3);
ok(navigator.xmppClient.publish != null, "navigator.xmppClient.publish exists");
ok(navigator.xmppClient.subscribe != null, "navigator.xmppClient subscribe exists");
ok(navigator.xmppClient.subs != null, "The subscription list exists");
});
test("should have a way to discover services", function()
{
expect(1);
ok(navigator.xmppClient.discoverServices != null, "navigator.xmppClient.discoverServices exists");
});
test("should have a way to send and receive files", function()
{
expect(2);
ok(navigator.xmppClient.enableFileTransfer != null, "navigator.xmppClient.enableFileTransfer should exist");
ok(navigator.xmppClient.sendFile != null, "navigator.xmppClient.sendFile should exist");
});
module("Xmpp Message Model");
var msg = new XMPPMessage('foo', 'test', '[email protected]', '[email protected]', false);
test("should be able to define an XMPP message with the following", function() {
expect(6);
ok(msg.id != null, "XMPP Message ID is not null");
ok(msg.body != null, "XMPP Message is not null");
ok(msg.senderJid != null, "XMPP Sender jID is not null");
ok(msg.receiverJid != null, "XMPP Receiver jID is not null");
ok(msg.isread != null, "XMPP Message should have an isRead property");
ok(msg.timestamp != null, "XMPP Message should have a timestamp");
});
module("XMPP RosterItem");
var res = new RosterItem('test', 'foo', 'bar');
test("should exist", function(){
expect(3);
ok(test.name != null, "Resource name is not null");
ok(test.user != null, "Person is not null");
ok(test.status != null, "status is not null");
});
module("XMPP Chat");
test("should connect", function(){
expect(1);
stop();
var handler = function(event)
{
ok(navigator.xmppClient.hostname.length > 0, "XMPP hostname should be present and be non-zero");
start();
};
navigator.xmppClient.addListener('ConnectSuccess',null ,handler );
navigator.xmppClient.connect('xmpp.phonegap.com', 'bob', 'phonegap', 'resource', 5222);
});
test("Should send and receive messages", function() {
expect(2);
stop();
var msg_handler = function(event)
{
var from = event.args[0];
var body = event.args[1].body;
ok(from == 'alice', "Alice sent a message");
ok(body == "test", "Alice echoed the text sent by bob");
navigator.xmppClient.removeListener('MessageReceived');
start();
}
navigator.xmppClient.addListener('MessageReceived', null, msg_handler);
navigator.xmppClient.sendMessageToJID('[email protected]', 'test');
});
test("Should send and receive XHTML messages", function() {
//We expect the previous tests, and these tests.
expect(2);
stop();
var html_handler = function(event)
{
var from = event.args[0];
var body = event.args[1].body;
ok(from == 'alice', "Alice sent a message");
ok(body != null, "We have a large payload!");
navigator.xmppClient.removeListener('HtmlMessageReceived');
start();
}
navigator.xmppClient.addListener('HtmlMessageReceived', null, html_handler);
navigator.xmppClient.sendHtmlMessageToJID('[email protected]','test',"<body xmlns='http://www.w3.org/1999/xhtml'>Foo<br /></body>");
});
test("should be able to discover services", function()
{
expect(1);
stop();
var servicesHandler = function(event)
{
ok(navigator.xmppClient.services.length > 0, "There are services that have been discovered");
start();
}
navigator.xmppClient.addListener('DiscoveryWin', null, servicesHandler);
navigator.xmppClient.discoverServices('xmpp.phonegap.com');
});
test("should be able to get the roster", function(){
expect(1);
stop();
var rosterHandler = function(event)
{
ok(navigator.xmppClient.roster.length > 0, "The roster should not be empty");
start();
}
navigator.xmppClient.addListener('UpdateRoster', null, rosterHandler);
navigator.xmppClient.getRoster();
});
test("Should be able to send and receive a form", function() {
expect(1);
stop();
var formHandler = function(event)
{
var xml = event.args[0];
ok(xml.length > 0, "XML has been passed back");
start();
}
navigator.xmppClient.addListener('XmppHasForm', null, formHandler);
//This IS pretty awful!!!!
var formXml = "<x xmlns='jabber:x:data' type='form'>";
formXml += "<title>Bot Configuration</title>";
formXml += "<instructions>Fill out this form to configure your new bot!</instructions>";
formXml += "<field type='hidden' var='FORM_TYPE'>";
formXml += "<value>jabber:bot</value>";
formXml += "</field>";
formXml += "<field type='fixed'><value>Section 1: Bot Info</value></field>";
formXml += "<field type='text-single' label='The name of your bot' var='botname'/>";
formXml += "<field type='text-multi' label='Helpful description of your bot' var='description'/>";
formXml += "<field type='boolean' label='Public bot?' var='public'><required/></field>";
formXml += "<field type='text-private' label='Password for special access' var='password'/>";
formXml += "<field type='fixed'><value>Section 2: Features</value></field>";
formXml += "<field type='list-multi' label='What features will the bot support?' var='features'>";
formXml += "<option label='Contests'><value>contests</value></option>";
formXml += "<option label='News'><value>news</value></option>";
formXml += "<option label='Polls'><value>polls</value></option>";
formXml += "<option label='Reminders'><value>reminders</value></option>";
formXml += "<option label='Search'><value>search</value></option>";
formXml += "<value>news</value>";
formXml += "<value>search</value>";
formXml += "</field>";
formXml += "<field type='fixed'><value>Section 3: Subscriber List</value></field>";
formXml += "<field type='list-single' label='Maximum number of subscribers' var='maxsubs'>";
formXml += "<value>20</value>";
formXml += "<option label='10'><value>10</value></option>";
formXml += "<option label='20'><value>20</value></option>";
formXml += "<option label='30'><value>30</value></option>";
formXml += "<option label='50'><value>50</value></option>";
formXml += "<option label='100'><value>100</value></option>";
formXml += "<option label='None'><value>none</value></option>";
formXml += "</field>"
formXml += "<field type='fixed'><value>Section 4: Invitations</value></field>";
formXml += "<field type='jid-multi' label='People to invite' var='invitelist'>";
formXml += "<desc>Tell all your friends about your new bot!</desc>";
formXml += "</field>";
formXml += "</x>"
navigator.xmppClient.sendForm('[email protected]/PhoneGap', formXml);
});
/*
test("Should be able to receive a file", function() {
expect(1);
stop();
function fileDownHandler(event)
{
var filename = event.args[1];
ok(filename.length > 0, "The filename was passed back");
start();
}
navigator.xmppClient.enableFileTransfer('/sdcard/', false);
navigator.xmppClient.addListener('XmppFileReceived', null, fileDownHandler);
navigator.xmppClient.sendMessageToJID('[email protected]', 'panda');
});
test("should be able to send a file", function() {
expect(1);
stop();
var fileHandler = function(event)
{
ok(true, "The SendComplete handler was called");
start();
}
navigator.xmppClient.addListener('SendComplete', null, fileHandler);
navigator.xmppClient.sendFile('/sdcard/panda.jpg', '[email protected]/phonegap', 'have a panda');
});
test("should be able to Publish Events to Devices and Subscribe to events from devices", function() {
expect(2);
stop();
var subHandler = function(event)
{
ok(true, "Received Subscription Event!");
start();
}
var subSetHandler = function(event)
{
var id = event.args[1];
ok(id <= navigator.xmppClient.subs.length, "Listener is in the Subscriptions.");
// This is a hack!
navigator.xmppClient.publish('pubsub.xmpp.phonegap.com', 'Book', 'pubsub:test:book', "<book xmlns='pubsub:test:book'><title>1984</title></book>", 'TestNode', false);
}
navigator.xmppClient.addListener('XmppSubWin', null, subSetHandler);
navigator.xmppClient.subscribe('pubsub.xmpp.phonegap.com', 'TestNode', subHandler);
});
*/
}