Bug 1239373 - Tests for testing/marionette/message.js; r?automatedtester draft
authorAndreas Tolfsen <ato@mozilla.com>
Mon, 18 Jan 2016 18:39:21 +0000
changeset 324041 1ecaa92f49371d6032b656d22048d09e96aaef21
parent 324040 cfa4506fbb3d930f261aa77cca4b9d0ebad1ed9a
child 513314 177514a7e1fba2d45a55a161ad3f901dddb1ba5a
push id9830
push useratolfsen@mozilla.com
push dateThu, 21 Jan 2016 20:25:41 +0000
reviewersautomatedtester
bugs1239373
milestone46.0a1
Bug 1239373 - Tests for testing/marionette/message.js; r?automatedtester
testing/marionette/test_message.js
new file mode 100644
--- /dev/null
+++ b/testing/marionette/test_message.js
@@ -0,0 +1,208 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+const {utils: Cu} = Components;
+
+Cu.import("chrome://marionette/content/error.js");
+Cu.import("chrome://marionette/content/message.js");
+
+function run_test() {
+  run_next_test();
+}
+
+add_test(function test_MessageOrigin() {
+  equal(0, MessageOrigin.Client);
+  equal(1, MessageOrigin.Server);
+
+  run_next_test();
+});
+
+add_test(function test_Message_fromMsg() {
+  let cmd = new Command(4, "foo");
+  let resp = new Response(5, () => {});
+
+  ok(Message.fromMsg(cmd.toMsg()) instanceof Command);
+  ok(Message.fromMsg(resp.toMsg()) instanceof Response);
+  Assert.throws(() => Message.fromMsg([3, 4, 5, 6]),
+      /Unrecognised message type in packet/);
+
+  run_next_test();
+});
+
+add_test(function test_Command() {
+  let cmd = new Command(42, "foo", {bar: "baz"});
+  equal(42, cmd.id);
+  equal("foo", cmd.name);
+  deepEqual({bar: "baz"}, cmd.parameters);
+  equal(null, cmd.onerror);
+  equal(null, cmd.onresult);
+  equal(MessageOrigin.Client, cmd.origin);
+  equal(false, cmd.sent);
+
+  run_next_test();
+});
+
+add_test(function test_Command_onresponse() {
+  let onerrorOk = false;
+  let onresultOk = false;
+
+  let cmd = new Command();
+  cmd.onerror = () => onerrorOk = true;
+  cmd.onresult = () => onresultOk = true;
+
+  let errorResp = new Response();
+  errorResp.error = new WebDriverError("foo");
+
+  let bodyResp = new Response();
+  bodyResp.body = "bar";
+
+  cmd.onresponse(errorResp);
+  equal(true, onerrorOk);
+  equal(false, onresultOk);
+
+  cmd.onresponse(bodyResp);
+  equal(true, onresultOk);
+
+  run_next_test();
+});
+
+add_test(function test_Command_fromMsg() {
+  let cmd = new Command(42, "bar", {bar: "baz"});
+  let msg = cmd.toMsg();
+
+  equal(Command.TYPE, msg[0]);
+  equal(cmd.id, msg[1]);
+  equal(cmd.name, msg[2]);
+  equal(cmd.parameters, msg[3]);
+
+  run_next_test();
+});
+
+add_test(function test_Command_toString() {
+  let cmd = new Command(42, "foo", {bar: "baz"});
+  equal(`Command {id: ${cmd.id}, ` +
+      `name: ${JSON.stringify(cmd.name)}, ` +
+      `parameters: ${JSON.stringify(cmd.parameters)}}`,
+      cmd.toString());
+
+  run_next_test();
+});
+
+add_test(function test_Command_fromMsg() {
+  let c1 = new Command(42, "foo", {bar: "baz"});
+
+  let msg = c1.toMsg();
+  let c2 = Command.fromMsg(msg);
+
+  equal(c1.id, c2.id);
+  equal(c1.name, c2.name);
+  equal(c1.parameters, c2.parameters);
+
+  run_next_test();
+});
+
+add_test(function test_Command_TYPE() {
+  equal(0, Command.TYPE);
+  run_next_test();
+});
+
+add_test(function test_Response() {
+  let handler = () => run_next_test();
+
+  let resp = new Response(42, handler);
+  equal(42, resp.id);
+  equal(null, resp.error);
+  ok("origin" in resp);
+  equal(MessageOrigin.Server, resp.origin);
+  equal(false, resp.sent);
+  equal(handler, resp.respHandler_);
+
+  run_next_test();
+});
+
+add_test(function test_Response_sendConditionally() {
+  let fired = false;
+  let resp = new Response(42, () => fired = true);
+  resp.sendConditionally(r => false);
+  equal(false, resp.sent);
+  equal(false, fired);
+  resp.sendConditionally(r => true);
+  equal(true, resp.sent);
+  equal(true, fired);
+
+  run_next_test();
+});
+
+add_test(function test_Response_send() {
+  let fired = false;
+  let resp = new Response(42, () => fired = true);
+  resp.send();
+  equal(true, resp.sent);
+  equal(true, fired);
+
+  run_next_test();
+});
+
+add_test(function test_Response_sendError() {
+  let err = new WebDriverError();
+  let resp = new Response(42, r => {
+    deepEqual(error.toJson(err), r.error);
+    equal(null, r.body);
+    equal(false, r.sent);
+  });
+
+  resp.sendError(err);
+  equal(true, resp.sent);
+  Assert.throws(() => resp.send(), /already been sent/);
+
+  resp.sent = false;
+  Assert.throws(() => resp.sendError(new Error()));
+
+  run_next_test();
+});
+
+add_test(function test_Response_toMsg() {
+  let resp = new Response(42);
+  let msg = resp.toMsg();
+
+  equal(Response.TYPE, msg[0]);
+  equal(resp.id, msg[1]);
+  equal(resp.error, msg[2]);
+  equal(resp.body, msg[3]);
+
+  run_next_test();
+});
+
+add_test(function test_Response_toString() {
+  let resp = new Response(42);
+  resp.error = "foo";
+  resp.body = "bar";
+
+  equal(`Response {id: ${resp.id}, ` +
+      `error: ${JSON.stringify(resp.error)}, ` +
+      `body: ${JSON.stringify(resp.body)}}`,
+      resp.toString());
+
+  run_next_test();
+});
+
+add_test(function test_Response_fromMsg() {
+  let r1 = new Response(42);
+  r1.error = "foo";
+  r1.body = "bar";
+
+  let msg = r1.toMsg();
+  let r2 = Response.fromMsg(msg);
+
+  equal(r1.id, r2.id);
+  equal(r1.error, r2.error);
+  equal(r1.body, r2.body);
+
+  run_next_test();
+});
+
+add_test(function test_Response_TYPE() {
+  equal(1, Response.TYPE);
+  run_next_test();
+});