Files

121 lines
2.7 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
// Test the DebuggerClient.request API.
var gClient;
function TestActor(conn) {
this.conn = conn;
}
TestActor.prototype = {
actorPrefix: "test",
hello: function () {
return {hello: "world"};
},
error: function () {
return {error: "code", message: "human message"};
}
};
TestActor.prototype.requestTypes = {
"hello": TestActor.prototype.hello,
"error": TestActor.prototype.error
};
function run_test()
{
DebuggerServer.addGlobalActor(TestActor);
DebuggerServer.init();
DebuggerServer.addBrowserActors();
add_test(init);
add_test(test_client_request_callback);
add_test(test_client_request_promise);
add_test(test_client_request_promise_error);
add_test(test_client_request_event_emitter);
add_test(close_client);
run_next_test();
}
function init()
{
gClient = new DebuggerClient(DebuggerServer.connectPipe());
gClient.connect(function onConnect() {
gClient.listTabs(function onListTabs(aResponse) {
gActorId = aResponse.test;
run_next_test();
});
});
}
function test_client_request_callback()
{
// Test that DebuggerClient.request accepts a `onResponse` callback as 2nd argument
gClient.request({
to: gActorId,
type: "hello"
}, response => {
do_check_eq(response.from, gActorId);
do_check_eq(response.hello, "world");
run_next_test();
});
}
function test_client_request_promise()
{
// Test that DebuggerClient.request returns a promise that resolves on response
let request = gClient.request({
to: gActorId,
type: "hello"
});
request.then(response => {
do_check_eq(response.from, gActorId);
do_check_eq(response.hello, "world");
run_next_test();
});
}
function test_client_request_promise_error()
{
// Test that DebuggerClient.request returns a promise that reject when server
// returns an explicit error message
let request = gClient.request({
to: gActorId,
type: "error"
});
request.then(() => {
do_throw("Promise shouldn't be resolved on error");
}, response => {
do_check_eq(response.from, gActorId);
do_check_eq(response.error, "code");
do_check_eq(response.message, "human message");
run_next_test();
});
}
function test_client_request_event_emitter()
{
// Test that DebuggerClient.request returns also an EventEmitter object
let request = gClient.request({
to: gActorId,
type: "hello"
});
request.on("json-reply", reply => {
do_check_eq(reply.from, gActorId);
do_check_eq(reply.hello, "world");
run_next_test();
});
}
function close_client() {
gClient.close(() => {
run_next_test()
});
}