summaryrefslogtreecommitdiffstats
path: root/devtools/server/tests/unit/test_registerClient.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/server/tests/unit/test_registerClient.js')
-rw-r--r--devtools/server/tests/unit/test_registerClient.js95
1 files changed, 95 insertions, 0 deletions
diff --git a/devtools/server/tests/unit/test_registerClient.js b/devtools/server/tests/unit/test_registerClient.js
new file mode 100644
index 000000000..c018e4454
--- /dev/null
+++ b/devtools/server/tests/unit/test_registerClient.js
@@ -0,0 +1,95 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+// Test the DebuggerClient.registerClient API
+
+var EventEmitter = require("devtools/shared/event-emitter");
+
+var gClient;
+var gActors;
+var gTestClient;
+
+function TestActor(conn) {
+ this.conn = conn;
+}
+TestActor.prototype = {
+ actorPrefix: "test",
+
+ start: function () {
+ this.conn.sendActorEvent(this.actorID, "foo", {
+ hello: "world"
+ });
+ return {};
+ }
+};
+TestActor.prototype.requestTypes = {
+ "start": TestActor.prototype.start
+};
+
+function TestClient(client, form) {
+ this.client = client;
+ this.actor = form.test;
+ this.events = ["foo"];
+ EventEmitter.decorate(this);
+ client.registerClient(this);
+
+ this.detached = false;
+}
+TestClient.prototype = {
+ start: function () {
+ this.client.request({
+ to: this.actor,
+ type: "start"
+ });
+ },
+
+ detach: function (onDone) {
+ this.detached = true;
+ onDone();
+ }
+};
+
+function run_test()
+{
+ DebuggerServer.addGlobalActor(TestActor);
+
+ DebuggerServer.init();
+ DebuggerServer.addBrowserActors();
+
+ add_test(init);
+ add_test(test_client_events);
+ add_test(close_client);
+ run_next_test();
+}
+
+function init()
+{
+ gClient = new DebuggerClient(DebuggerServer.connectPipe());
+ gClient.connect()
+ .then(() => gClient.listTabs())
+ .then(aResponse => {
+ gActors = aResponse;
+ gTestClient = new TestClient(gClient, aResponse);
+ run_next_test();
+ });
+}
+
+function test_client_events()
+{
+ // Test DebuggerClient.registerClient and DebuggerServerConnection.sendActorEvent
+ gTestClient.on("foo", function (type, data) {
+ do_check_eq(type, "foo");
+ do_check_eq(data.hello, "world");
+ run_next_test();
+ });
+ gTestClient.start();
+}
+
+function close_client() {
+ gClient.close().then(() => {
+ // Check that client.detach method is call on client destruction
+ do_check_true(gTestClient.detached);
+ run_next_test();
+ });
+}
+