dom/mobilemessage/tests/marionette/test_getmessage.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.

     1 /* Any copyright is dedicated to the Public Domain.
     2  * http://creativecommons.org/publicdomain/zero/1.0/ */
     4 MARIONETTE_TIMEOUT = 60000;
     6 SpecialPowers.setBoolPref("dom.sms.enabled", true);
     7 SpecialPowers.setBoolPref("dom.sms.requestStatusReport", true);
     8 SpecialPowers.addPermission("sms", true, document);
    10 const REMOTE = "5559997777"; // the remote number
    11 const EMULATOR = "15555215554"; // the emulator's number
    13 let manager = window.navigator.mozMobileMessage;
    14 let inText = "Incoming SMS message. Mozilla Firefox OS!";
    15 let outText = "Outgoing SMS message. Mozilla Firefox OS!";
    16 let gotSmsOnsent = false;
    17 let gotReqOnsuccess = false;
    18 let inSmsId = 0;
    19 let outSmsId = 0;
    20 let inThreadId = 0;
    21 let outThreadId = 0;
    22 let inSmsTimeStamp;
    23 let inSmsSentTimeStamp;
    24 let outSmsTimeStamp;
    25 let outSmsSentTimeStamp;
    27 function verifyInitialState() {
    28   log("Verifying initial state.");
    29   ok(manager instanceof MozMobileMessageManager,
    30      "manager is instance of " + manager.constructor);
    31   simulateIncomingSms();  
    32 }
    34 function simulateIncomingSms() {
    35   log("Simulating incoming SMS.");
    37   manager.onreceived = function onreceived(event) {
    38     log("Received 'onreceived' event.");
    39     let incomingSms = event.message;
    40     ok(incomingSms, "incoming sms");
    41     ok(incomingSms.id, "sms id");
    42     inSmsId = incomingSms.id;
    43     log("Received SMS (id: " + inSmsId + ").");
    44     ok(incomingSms.threadId, "thread id");
    45     inThreadId = incomingSms.threadId;
    46     is(incomingSms.body, inText, "msg body");
    47     is(incomingSms.delivery, "received", "delivery");
    48     is(incomingSms.deliveryStatus, "success", "deliveryStatus");
    49     is(incomingSms.read, false, "read");
    50     is(incomingSms.receiver, EMULATOR, "receiver");
    51     is(incomingSms.sender, REMOTE, "sender");
    52     is(incomingSms.messageClass, "normal", "messageClass");
    53     inSmsTimeStamp = incomingSms.timestamp;
    54     inSmsSentTimeStamp = incomingSms.sentTimestamp;
    55     sendSms();
    56   };
    57   // Simulate incoming sms sent from remoteNumber to our emulator
    58   runEmulatorCmd("sms send " + REMOTE + " " + inText, function(result) {
    59     is(result[0], "OK", "emulator output");
    60   });
    61 }
    63 function sendSms() {
    64   log("Sending an SMS.");
    65   manager.onsent = function(event) {
    66     log("Received 'onsent' event.");
    67     gotSmsOnsent = true;
    68     let sentSms = event.message;
    69     ok(sentSms, "outgoing sms");
    70     ok(sentSms.id, "sms id");
    71     outSmsId = sentSms.id;
    72     log("Sent SMS (id: " + outSmsId + ").");
    73     ok(sentSms.threadId, "thread id");
    74     outThreadId = sentSms.threadId;
    75     is(sentSms.body, outText, "msg body");
    76     is(sentSms.delivery, "sent", "delivery");
    77     is(sentSms.deliveryStatus, "pending", "deliveryStatus");
    78     is(sentSms.read, true, "read");
    79     is(sentSms.receiver, REMOTE, "receiver");
    80     is(sentSms.sender, EMULATOR, "sender");
    81     is(sentSms.messageClass, "normal", "messageClass");
    82     outSmsTimeStamp = sentSms.timestamp;
    83     outSmsSentTimeStamp = sentSms.sentTimestamp;
    84     is(sentSms.deliveryTimestamp, 0, "deliveryTimestamp is 0");
    86     if (gotSmsOnsent && gotReqOnsuccess) { getReceivedSms(); }
    87   };
    89   let requestRet = manager.send(REMOTE, outText);
    90   ok(requestRet, "smsrequest obj returned");
    92   requestRet.onsuccess = function(event) {
    93     log("Received 'onsuccess' smsrequest event.");
    94     gotReqOnsuccess = true;
    95     if(event.target.result){
    96       if (gotSmsOnsent && gotReqOnsuccess) { getReceivedSms(); }
    97     } else {
    98       log("smsrequest returned false for manager.send");
    99       ok(false,"SMS send failed");
   100       cleanUp();
   101     }
   102   };
   104   requestRet.onerror = function(event) {
   105     log("Received 'onerror' smsrequest event.");
   106     ok(event.target.error, "domerror obj");
   107     ok(false, "manager.send request returned unexpected error: "
   108         + event.target.error.name );
   109     cleanUp();
   110   };
   111 }
   113 function getReceivedSms() {
   114   log("Getting the received SMS message (id: " + inSmsId + ").");
   116   let requestRet = manager.getMessage(inSmsId);
   117   ok(requestRet, "smsrequest obj returned");
   119   requestRet.onsuccess = function(event) {
   120     log("Received 'onsuccess' smsrequest event.");
   121     ok(event.target.result, "smsrequest event.target.result");
   122     let foundSms = event.target.result;
   123     is(foundSms.id, inSmsId, "SMS id matches");
   124     log("Got SMS (id: " + foundSms.id + ").");
   125     is(foundSms.threadId, inThreadId, "thread id matches");
   126     is(foundSms.body, inText, "SMS msg text matches");
   127     is(foundSms.delivery, "received", "delivery");
   128     is(foundSms.deliveryStatus, "success", "deliveryStatus");
   129     is(foundSms.read, false, "read");
   130     is(foundSms.receiver, EMULATOR, "receiver");
   131     is(foundSms.sender, REMOTE, "sender");
   132     is(foundSms.messageClass, "normal", "messageClass");
   133     is(foundSms.timestamp, inSmsTimeStamp, "timestamp matches");
   134     is(foundSms.sentTimestamp, inSmsSentTimeStamp, "sentTimestamp matches");
   135     getSentSms();
   136   };
   138   requestRet.onerror = function(event) {
   139     log("Received 'onerror' smsrequest event.");
   140     ok(event.target.error, "domerror obj");
   141     is(event.target.error.name, "NotFoundError", "error returned");
   142     log("Could not get SMS (id: " + inSmsId + ") but should have.");
   143     ok(false,"Could not get received SMS");
   144     cleanUp();
   145   };
   146 }
   148 function getSentSms() {
   149   log("Getting the sent SMS message (id: " + outSmsId + ").");
   150   let requestRet = manager.getMessage(outSmsId);
   151   ok(requestRet, "smsrequest obj returned");
   153   requestRet.onsuccess = function(event) {
   154     log("Received 'onsuccess' smsrequest event.");
   155     ok(event.target.result, "smsrequest event.target.result");
   156     let foundSms = event.target.result;
   157     is(foundSms.id, outSmsId, "SMS id matches");
   158     log("Got SMS (id: " + foundSms.id + ").");
   159     is(foundSms.threadId, outThreadId, "thread id matches");
   160     is(foundSms.body, outText, "SMS msg text matches");
   161     is(foundSms.delivery, "sent", "delivery");
   162     is(foundSms.deliveryStatus, "pending", "deliveryStatus");
   163     is(foundSms.read, true, "read");
   164     is(foundSms.receiver, REMOTE, "receiver");
   165     is(foundSms.sender, EMULATOR, "sender");
   166     is(foundSms.messageClass, "normal", "messageClass");
   167     is(foundSms.timestamp, outSmsTimeStamp, "timestamp matches");
   168     is(foundSms.sentTimestamp, outSmsSentTimeStamp, "sentTimestamp matches");
   169     deleteMsgs();
   170   };
   172   requestRet.onerror = function(event) {
   173     log("Received 'onerror' smsrequest event.");
   174     ok(event.target.error, "domerror obj");
   175     is(event.target.error.name, "NotFoundError", "error returned");
   176     log("Could not get SMS (id: " + outSmsId + ") but should have.");
   177     ok(false,"Could not get sent SMS");
   178     cleanUp();
   179   };
   180 }
   182 function deleteMsgs() {
   183   log("Deleting SMS (id: " + inSmsId + ").");
   184   let requestRet = manager.delete(inSmsId);
   185   ok(requestRet,"smsrequest obj returned");
   187   requestRet.onsuccess = function(event) {
   188     log("Received 'onsuccess' smsrequest event.");
   189     if(event.target.result){
   190       log("Deleting SMS (id: " + outSmsId + ").");
   191       let nextReqRet = manager.delete(outSmsId);
   192       ok(nextReqRet,"smsrequest obj returned");
   194       nextReqRet.onsuccess = function(event) {
   195         log("Received 'onsuccess' smsrequest event.");
   196         if(event.target.result) {
   197           cleanUp();
   198         } else {
   199           log("smsrequest returned false for manager.delete");
   200           ok(false,"SMS delete failed");
   201         }
   202       };
   203     } else {
   204       log("smsrequest returned false for manager.delete");
   205       ok(false,"SMS delete failed");
   206     }
   207   };
   209   requestRet.onerror = function(event) {
   210     log("Received 'onerror' smsrequest event.");
   211     ok(event.target.error, "domerror obj");
   212     ok(false, "manager.delete request returned unexpected error: "
   213         + event.target.error.name );
   214     cleanUp();
   215   };
   216 }
   218 function cleanUp() {
   219   manager.onreceived = null;
   220   SpecialPowers.removePermission("sms", document);
   221   SpecialPowers.clearUserPref("dom.sms.enabled");
   222   SpecialPowers.clearUserPref("dom.sms.requestStatusReport");
   224   finish();
   225 }
   227 // Start the test
   228 verifyInitialState();

mercurial