1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/dom/mobilemessage/tests/marionette/test_mark_msg_read_error.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,116 @@ 1.4 +/* Any copyright is dedicated to the Public Domain. 1.5 + * http://creativecommons.org/publicdomain/zero/1.0/ */ 1.6 + 1.7 +MARIONETTE_TIMEOUT = 60000; 1.8 + 1.9 +SpecialPowers.addPermission("sms", true, document); 1.10 +SpecialPowers.setBoolPref("dom.sms.enabled", true); 1.11 + 1.12 +let manager = window.navigator.mozMobileMessage; 1.13 +let smsId; 1.14 + 1.15 +function verifyInitialState() { 1.16 + log("Verifying initial state."); 1.17 + ok(manager instanceof MozMobileMessageManager, 1.18 + "manager is instance of " + manager.constructor); 1.19 + simulateIncomingSms(); 1.20 +} 1.21 + 1.22 +function simulateIncomingSms() { 1.23 + let text = "Incoming SMS courtesy of Firefox OS"; 1.24 + let remoteNumber = "5557779999"; 1.25 + 1.26 + log("Simulating incoming SMS."); 1.27 + 1.28 + // Simulate incoming SMS sent from remoteNumber to our emulator 1.29 + rcvdEmulatorCallback = false; 1.30 + runEmulatorCmd("sms send " + remoteNumber + " " + text, function(result) { 1.31 + is(result[0], "OK", "emulator callback"); 1.32 + rcvdEmulatorCallback = true; 1.33 + }); 1.34 +} 1.35 + 1.36 +// Callback for incoming SMS 1.37 +manager.onreceived = function onreceived(event) { 1.38 + log("Received 'onreceived' sms event."); 1.39 + let incomingSms = event.message; 1.40 + log("Received SMS (id: " + incomingSms.id + ")."); 1.41 + is(incomingSms.read, false, "incoming message read"); 1.42 + smsId = incomingSms.id; 1.43 + 1.44 + // Wait for emulator to catch up before continuing 1.45 + waitFor(test1, function() { 1.46 + return(rcvdEmulatorCallback); 1.47 + }); 1.48 +}; 1.49 + 1.50 +function markMsgError(invalidId, readBool, nextFunction) { 1.51 + let requestRet = manager.markMessageRead(invalidId, readBool); 1.52 + ok(requestRet, "smsrequest obj returned"); 1.53 + 1.54 + requestRet.onsuccess = function(event) { 1.55 + log("Received 'onsuccess' smsrequest event, but expected error."); 1.56 + ok(false, "Smsrequest should have returned error but did not"); 1.57 + nextFunction(); 1.58 + }; 1.59 + 1.60 + requestRet.onerror = function(event) { 1.61 + log("Received 'onerror' smsrequest event."); 1.62 + ok(event.target.error, "domerror obj"); 1.63 + is(event.target.error.name, "NotFoundError", "error returned"); 1.64 + nextFunction(); 1.65 + }; 1.66 +} 1.67 + 1.68 +function test1() { 1.69 + // Mark message read for a message that doesn't exist, expect error 1.70 + let msgIdNoExist = smsId + 1; 1.71 + log("Attempting to mark non-existent sms (id: " + msgIdNoExist 1.72 + + ") read, expect error."); 1.73 + markMsgError(msgIdNoExist, true, test2); 1.74 +} 1.75 + 1.76 +function test2() { 1.77 + // Mark message read using invalid SMS id, expect error 1.78 + invalidId = -1; 1.79 + log("Attempting to mark sms unread using an invalid id (id: " + invalidId 1.80 + + "), expect error."); 1.81 + markMsgError(invalidId, false, deleteMsg); 1.82 +} 1.83 + 1.84 +function deleteMsg() { 1.85 + log("Deleting SMS (id: " + smsId + ")."); 1.86 + let request = manager.delete(smsId); 1.87 + ok(request instanceof DOMRequest, 1.88 + "request is instanceof " + request.constructor); 1.89 + 1.90 + request.onsuccess = function(event) { 1.91 + log("Received 'onsuccess' smsrequest event."); 1.92 + if (event.target.result) { 1.93 + // Message deleted 1.94 + cleanUp(); 1.95 + } else { 1.96 + log("SMS delete failed."); 1.97 + ok(false,"manager.delete request returned false"); 1.98 + cleanUp(); 1.99 + } 1.100 + }; 1.101 + 1.102 + request.onerror = function(event) { 1.103 + log("Received 'onerror' smsrequest event."); 1.104 + ok(event.target.error, "domerror obj"); 1.105 + ok(false, "manager.delete request returned unexpected error: " 1.106 + + event.target.error.name ); 1.107 + cleanUp(); 1.108 + }; 1.109 +} 1.110 + 1.111 +function cleanUp() { 1.112 + manager.onreceived = null; 1.113 + SpecialPowers.removePermission("sms", document); 1.114 + SpecialPowers.clearUserPref("dom.sms.enabled"); 1.115 + finish(); 1.116 +} 1.117 + 1.118 +// Start the test 1.119 +verifyInitialState();