dom/mobilemessage/tests/test_smsservice_createsmsmessage.js

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

michael@0 1 /* Any copyright is dedicated to the Public Domain.
michael@0 2 http://creativecommons.org/publicdomain/zero/1.0/ */
michael@0 3
michael@0 4 const ICC_ID = "123456789";
michael@0 5
michael@0 6 function do_check_throws(f, result, stack) {
michael@0 7 if (!stack) {
michael@0 8 stack = Components.stack.caller;
michael@0 9 }
michael@0 10
michael@0 11 try {
michael@0 12 f();
michael@0 13 } catch (exc) {
michael@0 14 if (exc.result == result)
michael@0 15 return;
michael@0 16 do_throw("expected result " + result + ", caught " + exc, stack);
michael@0 17 }
michael@0 18 do_throw("expected result " + result + ", none thrown", stack);
michael@0 19 }
michael@0 20
michael@0 21 let gMobileMessageService = Cc["@mozilla.org/mobilemessage/mobilemessageservice;1"]
michael@0 22 .getService(Ci.nsIMobileMessageService);
michael@0 23 function newMessage() {
michael@0 24 return gMobileMessageService.createSmsMessage.apply(gMobileMessageService, arguments);
michael@0 25 }
michael@0 26
michael@0 27 function run_test() {
michael@0 28 run_next_test();
michael@0 29 }
michael@0 30
michael@0 31 /**
michael@0 32 * Ensure an SmsMessage object created has sensible initial values.
michael@0 33 */
michael@0 34 add_test(function test_interface() {
michael@0 35 let sms = newMessage(null, null, ICC_ID, "sent", "success", null, null, null,
michael@0 36 "normal", Date.now(), Date.now(), Date.now(), true);
michael@0 37 do_check_true(sms instanceof Ci.nsIDOMMozSmsMessage);
michael@0 38 do_check_eq(sms.id, 0);
michael@0 39 do_check_eq(sms.threadId, 0);
michael@0 40 do_check_eq(sms.iccId, ICC_ID);
michael@0 41 do_check_eq(sms.delivery, "sent");
michael@0 42 do_check_eq(sms.deliveryStatus, "success");
michael@0 43 do_check_eq(sms.receiver, null);
michael@0 44 do_check_eq(sms.sender, null);
michael@0 45 do_check_eq(sms.body, null);
michael@0 46 do_check_eq(sms.messageClass, "normal");
michael@0 47 do_check_true(sms.read);
michael@0 48 run_next_test();
michael@0 49 });
michael@0 50
michael@0 51 /**
michael@0 52 * Test if ICC ID is null when it's not available.
michael@0 53 */
michael@0 54 add_test(function test_icc_id_not_available() {
michael@0 55 let sms = newMessage(null, null, null, "sent", "success", null, null, null,
michael@0 56 "normal", Date.now(), Date.now(), Date.now(), true);
michael@0 57 do_check_true(sms instanceof Ci.nsIDOMMozSmsMessage);
michael@0 58 do_check_eq(sms.id, 0);
michael@0 59 do_check_eq(sms.threadId, 0);
michael@0 60 do_check_eq(sms.iccId, null);
michael@0 61 do_check_eq(sms.delivery, "sent");
michael@0 62 do_check_eq(sms.deliveryStatus, "success");
michael@0 63 do_check_eq(sms.receiver, null);
michael@0 64 do_check_eq(sms.sender, null);
michael@0 65 do_check_eq(sms.body, null);
michael@0 66 do_check_eq(sms.messageClass, "normal");
michael@0 67 do_check_true(sms.read);
michael@0 68 run_next_test();
michael@0 69 });
michael@0 70
michael@0 71 /**
michael@0 72 * Verify that attributes are read-only.
michael@0 73 */
michael@0 74 add_test(function test_readonly_attributes() {
michael@0 75 let sms = newMessage(null, null, ICC_ID, "sent", "success", null, null, null,
michael@0 76 "normal", Date.now(), Date.now(), Date.now(), true);
michael@0 77
michael@0 78 sms.id = 1;
michael@0 79 do_check_eq(sms.id, 0);
michael@0 80
michael@0 81 sms.threadId = 1;
michael@0 82 do_check_eq(sms.threadId, 0);
michael@0 83
michael@0 84 sms.iccId = "987654321";
michael@0 85 do_check_eq(sms.iccId, ICC_ID);
michael@0 86
michael@0 87 sms.delivery = "received";
michael@0 88 do_check_eq(sms.delivery, "sent");
michael@0 89
michael@0 90 sms.deliveryStatus = "pending";
michael@0 91 do_check_eq(sms.deliveryStatus, "success");
michael@0 92
michael@0 93 sms.receiver = "a receiver";
michael@0 94 do_check_eq(sms.receiver, null);
michael@0 95
michael@0 96 sms.sender = "a sender";
michael@0 97 do_check_eq(sms.sender, null);
michael@0 98
michael@0 99 sms.body = "a body";
michael@0 100 do_check_eq(sms.body, null);
michael@0 101
michael@0 102 sms.messageClass = "class-0";
michael@0 103 do_check_eq(sms.messageClass, "normal");
michael@0 104
michael@0 105 let oldTimestamp = sms.timestamp;
michael@0 106 sms.timestamp = Date.now();
michael@0 107 do_check_eq(sms.timestamp, oldTimestamp);
michael@0 108
michael@0 109 let oldSentTimestamp = sms.sentTimestamp;
michael@0 110 sms.sentTimestamp = Date.now();
michael@0 111 do_check_eq(sms.sentTimestamp, oldSentTimestamp);
michael@0 112
michael@0 113 let oldDeliveryTimestamp = sms.deliveryTimestamp;
michael@0 114 sms.deliveryTimestamp = Date.now();
michael@0 115 do_check_eq(sms.deliveryTimestamp, oldDeliveryTimestamp);
michael@0 116
michael@0 117 sms.read = false;
michael@0 118 do_check_true(sms.read);
michael@0 119
michael@0 120 run_next_test();
michael@0 121 });
michael@0 122
michael@0 123 /**
michael@0 124 * Test supplying the timestamp as a number of milliseconds.
michael@0 125 */
michael@0 126 add_test(function test_timestamp_number() {
michael@0 127 let ts = Date.now();
michael@0 128 let sms = newMessage(42, 1, ICC_ID, "sent", "success", "the sender", "the receiver",
michael@0 129 "the body", "normal", ts, ts, ts, true);
michael@0 130 do_check_eq(sms.id, 42);
michael@0 131 do_check_eq(sms.threadId, 1);
michael@0 132 do_check_eq(sms.iccId, ICC_ID);
michael@0 133 do_check_eq(sms.delivery, "sent");
michael@0 134 do_check_eq(sms.deliveryStatus, "success");
michael@0 135 do_check_eq(sms.sender, "the sender");
michael@0 136 do_check_eq(sms.receiver, "the receiver");
michael@0 137 do_check_eq(sms.body, "the body");
michael@0 138 do_check_eq(sms.messageClass, "normal");
michael@0 139 do_check_eq(sms.timestamp, ts);
michael@0 140 do_check_eq(sms.sentTimestamp, ts);
michael@0 141 do_check_eq(sms.deliveryTimestamp, ts);
michael@0 142 do_check_true(sms.read);
michael@0 143 run_next_test();
michael@0 144 });
michael@0 145
michael@0 146 /**
michael@0 147 * Test supplying the timestamp as a Date object, which will be automatically
michael@0 148 * casted to unsigned long long.
michael@0 149 */
michael@0 150 add_test(function test_timestamp_date() {
michael@0 151 let date = new Date();
michael@0 152 let sms = newMessage(42, 1, ICC_ID, "sent", "success", "the sender", "the receiver",
michael@0 153 "the body", "normal", date, date, date, true);
michael@0 154 do_check_eq(sms.id, 42);
michael@0 155 do_check_eq(sms.threadId, 1);
michael@0 156 do_check_eq(sms.iccId, ICC_ID);
michael@0 157 do_check_eq(sms.delivery, "sent");
michael@0 158 do_check_eq(sms.deliveryStatus, "success");
michael@0 159 do_check_eq(sms.sender, "the sender");
michael@0 160 do_check_eq(sms.receiver, "the receiver");
michael@0 161 do_check_eq(sms.body, "the body");
michael@0 162 do_check_eq(sms.messageClass, "normal");
michael@0 163 do_check_eq(sms.timestamp, date.getTime());
michael@0 164 do_check_eq(sms.sentTimestamp, date.getTime());
michael@0 165 do_check_eq(sms.deliveryTimestamp, date.getTime());
michael@0 166 do_check_true(sms.read);
michael@0 167 run_next_test();
michael@0 168 });
michael@0 169
michael@0 170 /**
michael@0 171 * Test that an invalid delivery string is not accepted.
michael@0 172 */
michael@0 173 add_test(function test_invalid_delivery_string() {
michael@0 174 do_check_throws(function() {
michael@0 175 newMessage(42, 1, ICC_ID, "this is invalid", "pending", "the sender",
michael@0 176 "the receiver", "the body", "normal", Date.now(), 0, 0, true);
michael@0 177 }, Cr.NS_ERROR_INVALID_ARG);
michael@0 178 run_next_test();
michael@0 179 });
michael@0 180
michael@0 181 /**
michael@0 182 * Test that a number is not accepted for the 'delivery' argument.
michael@0 183 */
michael@0 184 add_test(function test_invalid_delivery_string() {
michael@0 185 do_check_throws(function() {
michael@0 186 newMessage(42, 1, ICC_ID, 1, "pending", "the sender", "the receiver", "the body",
michael@0 187 "normal", Date.now(), 0, 0, true);
michael@0 188 }, Cr.NS_ERROR_INVALID_ARG);
michael@0 189 run_next_test();
michael@0 190 });
michael@0 191
michael@0 192 /**
michael@0 193 * Test that an invalid delivery status string is not accepted.
michael@0 194 */
michael@0 195 add_test(function test_invalid_delivery_status_string() {
michael@0 196 do_check_throws(function() {
michael@0 197 newMessage(42, 1, ICC_ID, "sent", "this is invalid", "the sender", "the receiver",
michael@0 198 "the body", "normal", Date.now(), Date.now(), 0, true);
michael@0 199 }, Cr.NS_ERROR_INVALID_ARG);
michael@0 200 run_next_test();
michael@0 201 });
michael@0 202
michael@0 203 /**
michael@0 204 * Test that a number is not accepted for the 'deliveryStatus' argument.
michael@0 205 */
michael@0 206 add_test(function test_invalid_delivery_status_string() {
michael@0 207 do_check_throws(function() {
michael@0 208 newMessage(42, 1, ICC_ID, "sent", 1, "the sender", "the receiver", "the body",
michael@0 209 "normal", Date.now(), Date.now(), 0, true);
michael@0 210 }, Cr.NS_ERROR_INVALID_ARG);
michael@0 211 run_next_test();
michael@0 212 });
michael@0 213
michael@0 214 /**
michael@0 215 * Test that an invalid message class string is not accepted.
michael@0 216 */
michael@0 217 add_test(function test_invalid_message_class_string() {
michael@0 218 do_check_throws(function() {
michael@0 219 newMessage(42, 1, ICC_ID, "sent", "success", "the sender", "the receiver",
michael@0 220 "the body", "this is invalid", Date.now(), Date.now(), Date.now(), true);
michael@0 221 }, Cr.NS_ERROR_INVALID_ARG);
michael@0 222 run_next_test();
michael@0 223 });
michael@0 224
michael@0 225 /**
michael@0 226 * Test that a number is not accepted for the 'messageClass' argument.
michael@0 227 */
michael@0 228 add_test(function test_invalid_message_class_string() {
michael@0 229 do_check_throws(function() {
michael@0 230 newMessage(42, 1, ICC_ID, "sent", "success", "the sender", "the receiver",
michael@0 231 "the body", 1, Date.now(), Date.now(), Date.now(), true);
michael@0 232 }, Cr.NS_ERROR_INVALID_ARG);
michael@0 233 run_next_test();
michael@0 234 });

mercurial