1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/dom/mobilemessage/tests/marionette/test_getmessage.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,228 @@ 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.setBoolPref("dom.sms.enabled", true); 1.10 +SpecialPowers.setBoolPref("dom.sms.requestStatusReport", true); 1.11 +SpecialPowers.addPermission("sms", true, document); 1.12 + 1.13 +const REMOTE = "5559997777"; // the remote number 1.14 +const EMULATOR = "15555215554"; // the emulator's number 1.15 + 1.16 +let manager = window.navigator.mozMobileMessage; 1.17 +let inText = "Incoming SMS message. Mozilla Firefox OS!"; 1.18 +let outText = "Outgoing SMS message. Mozilla Firefox OS!"; 1.19 +let gotSmsOnsent = false; 1.20 +let gotReqOnsuccess = false; 1.21 +let inSmsId = 0; 1.22 +let outSmsId = 0; 1.23 +let inThreadId = 0; 1.24 +let outThreadId = 0; 1.25 +let inSmsTimeStamp; 1.26 +let inSmsSentTimeStamp; 1.27 +let outSmsTimeStamp; 1.28 +let outSmsSentTimeStamp; 1.29 + 1.30 +function verifyInitialState() { 1.31 + log("Verifying initial state."); 1.32 + ok(manager instanceof MozMobileMessageManager, 1.33 + "manager is instance of " + manager.constructor); 1.34 + simulateIncomingSms(); 1.35 +} 1.36 + 1.37 +function simulateIncomingSms() { 1.38 + log("Simulating incoming SMS."); 1.39 + 1.40 + manager.onreceived = function onreceived(event) { 1.41 + log("Received 'onreceived' event."); 1.42 + let incomingSms = event.message; 1.43 + ok(incomingSms, "incoming sms"); 1.44 + ok(incomingSms.id, "sms id"); 1.45 + inSmsId = incomingSms.id; 1.46 + log("Received SMS (id: " + inSmsId + ")."); 1.47 + ok(incomingSms.threadId, "thread id"); 1.48 + inThreadId = incomingSms.threadId; 1.49 + is(incomingSms.body, inText, "msg body"); 1.50 + is(incomingSms.delivery, "received", "delivery"); 1.51 + is(incomingSms.deliveryStatus, "success", "deliveryStatus"); 1.52 + is(incomingSms.read, false, "read"); 1.53 + is(incomingSms.receiver, EMULATOR, "receiver"); 1.54 + is(incomingSms.sender, REMOTE, "sender"); 1.55 + is(incomingSms.messageClass, "normal", "messageClass"); 1.56 + inSmsTimeStamp = incomingSms.timestamp; 1.57 + inSmsSentTimeStamp = incomingSms.sentTimestamp; 1.58 + sendSms(); 1.59 + }; 1.60 + // Simulate incoming sms sent from remoteNumber to our emulator 1.61 + runEmulatorCmd("sms send " + REMOTE + " " + inText, function(result) { 1.62 + is(result[0], "OK", "emulator output"); 1.63 + }); 1.64 +} 1.65 + 1.66 +function sendSms() { 1.67 + log("Sending an SMS."); 1.68 + manager.onsent = function(event) { 1.69 + log("Received 'onsent' event."); 1.70 + gotSmsOnsent = true; 1.71 + let sentSms = event.message; 1.72 + ok(sentSms, "outgoing sms"); 1.73 + ok(sentSms.id, "sms id"); 1.74 + outSmsId = sentSms.id; 1.75 + log("Sent SMS (id: " + outSmsId + ")."); 1.76 + ok(sentSms.threadId, "thread id"); 1.77 + outThreadId = sentSms.threadId; 1.78 + is(sentSms.body, outText, "msg body"); 1.79 + is(sentSms.delivery, "sent", "delivery"); 1.80 + is(sentSms.deliveryStatus, "pending", "deliveryStatus"); 1.81 + is(sentSms.read, true, "read"); 1.82 + is(sentSms.receiver, REMOTE, "receiver"); 1.83 + is(sentSms.sender, EMULATOR, "sender"); 1.84 + is(sentSms.messageClass, "normal", "messageClass"); 1.85 + outSmsTimeStamp = sentSms.timestamp; 1.86 + outSmsSentTimeStamp = sentSms.sentTimestamp; 1.87 + is(sentSms.deliveryTimestamp, 0, "deliveryTimestamp is 0"); 1.88 + 1.89 + if (gotSmsOnsent && gotReqOnsuccess) { getReceivedSms(); } 1.90 + }; 1.91 + 1.92 + let requestRet = manager.send(REMOTE, outText); 1.93 + ok(requestRet, "smsrequest obj returned"); 1.94 + 1.95 + requestRet.onsuccess = function(event) { 1.96 + log("Received 'onsuccess' smsrequest event."); 1.97 + gotReqOnsuccess = true; 1.98 + if(event.target.result){ 1.99 + if (gotSmsOnsent && gotReqOnsuccess) { getReceivedSms(); } 1.100 + } else { 1.101 + log("smsrequest returned false for manager.send"); 1.102 + ok(false,"SMS send failed"); 1.103 + cleanUp(); 1.104 + } 1.105 + }; 1.106 + 1.107 + requestRet.onerror = function(event) { 1.108 + log("Received 'onerror' smsrequest event."); 1.109 + ok(event.target.error, "domerror obj"); 1.110 + ok(false, "manager.send request returned unexpected error: " 1.111 + + event.target.error.name ); 1.112 + cleanUp(); 1.113 + }; 1.114 +} 1.115 + 1.116 +function getReceivedSms() { 1.117 + log("Getting the received SMS message (id: " + inSmsId + ")."); 1.118 + 1.119 + let requestRet = manager.getMessage(inSmsId); 1.120 + ok(requestRet, "smsrequest obj returned"); 1.121 + 1.122 + requestRet.onsuccess = function(event) { 1.123 + log("Received 'onsuccess' smsrequest event."); 1.124 + ok(event.target.result, "smsrequest event.target.result"); 1.125 + let foundSms = event.target.result; 1.126 + is(foundSms.id, inSmsId, "SMS id matches"); 1.127 + log("Got SMS (id: " + foundSms.id + ")."); 1.128 + is(foundSms.threadId, inThreadId, "thread id matches"); 1.129 + is(foundSms.body, inText, "SMS msg text matches"); 1.130 + is(foundSms.delivery, "received", "delivery"); 1.131 + is(foundSms.deliveryStatus, "success", "deliveryStatus"); 1.132 + is(foundSms.read, false, "read"); 1.133 + is(foundSms.receiver, EMULATOR, "receiver"); 1.134 + is(foundSms.sender, REMOTE, "sender"); 1.135 + is(foundSms.messageClass, "normal", "messageClass"); 1.136 + is(foundSms.timestamp, inSmsTimeStamp, "timestamp matches"); 1.137 + is(foundSms.sentTimestamp, inSmsSentTimeStamp, "sentTimestamp matches"); 1.138 + getSentSms(); 1.139 + }; 1.140 + 1.141 + requestRet.onerror = function(event) { 1.142 + log("Received 'onerror' smsrequest event."); 1.143 + ok(event.target.error, "domerror obj"); 1.144 + is(event.target.error.name, "NotFoundError", "error returned"); 1.145 + log("Could not get SMS (id: " + inSmsId + ") but should have."); 1.146 + ok(false,"Could not get received SMS"); 1.147 + cleanUp(); 1.148 + }; 1.149 +} 1.150 + 1.151 +function getSentSms() { 1.152 + log("Getting the sent SMS message (id: " + outSmsId + ")."); 1.153 + let requestRet = manager.getMessage(outSmsId); 1.154 + ok(requestRet, "smsrequest obj returned"); 1.155 + 1.156 + requestRet.onsuccess = function(event) { 1.157 + log("Received 'onsuccess' smsrequest event."); 1.158 + ok(event.target.result, "smsrequest event.target.result"); 1.159 + let foundSms = event.target.result; 1.160 + is(foundSms.id, outSmsId, "SMS id matches"); 1.161 + log("Got SMS (id: " + foundSms.id + ")."); 1.162 + is(foundSms.threadId, outThreadId, "thread id matches"); 1.163 + is(foundSms.body, outText, "SMS msg text matches"); 1.164 + is(foundSms.delivery, "sent", "delivery"); 1.165 + is(foundSms.deliveryStatus, "pending", "deliveryStatus"); 1.166 + is(foundSms.read, true, "read"); 1.167 + is(foundSms.receiver, REMOTE, "receiver"); 1.168 + is(foundSms.sender, EMULATOR, "sender"); 1.169 + is(foundSms.messageClass, "normal", "messageClass"); 1.170 + is(foundSms.timestamp, outSmsTimeStamp, "timestamp matches"); 1.171 + is(foundSms.sentTimestamp, outSmsSentTimeStamp, "sentTimestamp matches"); 1.172 + deleteMsgs(); 1.173 + }; 1.174 + 1.175 + requestRet.onerror = function(event) { 1.176 + log("Received 'onerror' smsrequest event."); 1.177 + ok(event.target.error, "domerror obj"); 1.178 + is(event.target.error.name, "NotFoundError", "error returned"); 1.179 + log("Could not get SMS (id: " + outSmsId + ") but should have."); 1.180 + ok(false,"Could not get sent SMS"); 1.181 + cleanUp(); 1.182 + }; 1.183 +} 1.184 + 1.185 +function deleteMsgs() { 1.186 + log("Deleting SMS (id: " + inSmsId + ")."); 1.187 + let requestRet = manager.delete(inSmsId); 1.188 + ok(requestRet,"smsrequest obj returned"); 1.189 + 1.190 + requestRet.onsuccess = function(event) { 1.191 + log("Received 'onsuccess' smsrequest event."); 1.192 + if(event.target.result){ 1.193 + log("Deleting SMS (id: " + outSmsId + ")."); 1.194 + let nextReqRet = manager.delete(outSmsId); 1.195 + ok(nextReqRet,"smsrequest obj returned"); 1.196 + 1.197 + nextReqRet.onsuccess = function(event) { 1.198 + log("Received 'onsuccess' smsrequest event."); 1.199 + if(event.target.result) { 1.200 + cleanUp(); 1.201 + } else { 1.202 + log("smsrequest returned false for manager.delete"); 1.203 + ok(false,"SMS delete failed"); 1.204 + } 1.205 + }; 1.206 + } else { 1.207 + log("smsrequest returned false for manager.delete"); 1.208 + ok(false,"SMS delete failed"); 1.209 + } 1.210 + }; 1.211 + 1.212 + requestRet.onerror = function(event) { 1.213 + log("Received 'onerror' smsrequest event."); 1.214 + ok(event.target.error, "domerror obj"); 1.215 + ok(false, "manager.delete request returned unexpected error: " 1.216 + + event.target.error.name ); 1.217 + cleanUp(); 1.218 + }; 1.219 +} 1.220 + 1.221 +function cleanUp() { 1.222 + manager.onreceived = null; 1.223 + SpecialPowers.removePermission("sms", document); 1.224 + SpecialPowers.clearUserPref("dom.sms.enabled"); 1.225 + SpecialPowers.clearUserPref("dom.sms.requestStatusReport"); 1.226 + 1.227 + finish(); 1.228 +} 1.229 + 1.230 +// Start the test 1.231 +verifyInitialState();