test_Errors.js (2984B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this file, 3 * You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 5 const { error } = ChromeUtils.importESModule( 6 "chrome://remote/content/shared/messagehandler/Errors.sys.mjs" 7 ); 8 9 // Note: this test file is similar to remote/shared/webdriver/test/xpcshell/test_Errors.js 10 // because shared/webdriver/Errors.sys.mjs and shared/messagehandler/Errors.sys.mjs share 11 // similar helpers. 12 13 add_task(function test_toJSON() { 14 let e0 = new error.MessageHandlerError(); 15 let e0s = e0.toJSON(); 16 equal(e0s.error, "message handler error"); 17 equal(e0s.message, ""); 18 19 let e1 = new error.MessageHandlerError("a"); 20 let e1s = e1.toJSON(); 21 equal(e1s.message, e1.message); 22 23 let e2 = new error.UnsupportedCommandError("foo"); 24 let e2s = e2.toJSON(); 25 equal(e2.status, e2s.error); 26 equal(e2.message, e2s.message); 27 }); 28 29 add_task(function test_fromJSON() { 30 Assert.throws( 31 () => error.MessageHandlerError.fromJSON({ error: "foo" }), 32 /Not of MessageHandlerError descent/ 33 ); 34 Assert.throws( 35 () => error.MessageHandlerError.fromJSON({ error: "Error" }), 36 /Not of MessageHandlerError descent/ 37 ); 38 Assert.throws( 39 () => error.MessageHandlerError.fromJSON({}), 40 /Undeserialisable error type/ 41 ); 42 Assert.throws( 43 () => error.MessageHandlerError.fromJSON(undefined), 44 /TypeError/ 45 ); 46 47 let e1 = new error.MessageHandlerError("1"); 48 let e1r = error.MessageHandlerError.fromJSON({ 49 error: "message handler error", 50 message: "1", 51 }); 52 ok(e1r instanceof error.MessageHandlerError); 53 equal(e1r.name, e1.name); 54 equal(e1r.status, e1.status); 55 equal(e1r.message, e1.message); 56 57 let e2 = new error.UnsupportedCommandError("foo"); 58 let e2r = error.MessageHandlerError.fromJSON({ 59 error: "unsupported message handler command", 60 message: "foo", 61 }); 62 ok(e2r instanceof error.MessageHandlerError); 63 ok(e2r instanceof error.UnsupportedCommandError); 64 equal(e2r.name, e2.name); 65 equal(e2r.status, e2.status); 66 equal(e2r.message, e2.message); 67 68 // parity with toJSON 69 let e3 = new error.UnsupportedCommandError("foo"); 70 let e3toJSON = e3.toJSON(); 71 let e3fromJSON = error.MessageHandlerError.fromJSON(e3toJSON); 72 equal(e3toJSON.error, e3fromJSON.status); 73 equal(e3toJSON.message, e3fromJSON.message); 74 equal(e3toJSON.stacktrace, e3fromJSON.stack); 75 }); 76 77 add_task(function test_MessageHandlerError() { 78 let err = new error.MessageHandlerError("foo"); 79 equal("MessageHandlerError", err.name); 80 equal("foo", err.message); 81 equal("message handler error", err.status); 82 ok(err instanceof error.MessageHandlerError); 83 }); 84 85 add_task(function test_UnsupportedCommandError() { 86 let e = new error.UnsupportedCommandError("foo"); 87 equal("UnsupportedCommandError", e.name); 88 equal("foo", e.message); 89 equal("unsupported message handler command", e.status); 90 ok(e instanceof error.MessageHandlerError); 91 });