mobile/android/base/tests/testMozPay.js

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/mobile/android/base/tests/testMozPay.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,102 @@
     1.4 +// -*- Mode: js2; tab-width: 2; indent-tabs-mode: nil; js2-basic-offset: 2; js2-skip-preprocessor-directives: t; -*-
     1.5 +/* This Source Code Form is subject to the terms of the Mozilla Public
     1.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this file,
     1.7 + * You can obtain one at http://mozilla.org/MPL/2.0/. */
     1.8 +
     1.9 +let Cc = Components.classes;
    1.10 +let Ci = Components.interfaces;
    1.11 +let Cu = Components.utils;
    1.12 +
    1.13 +Components.utils.import("resource://gre/modules/SharedPreferences.jsm");
    1.14 +Components.utils.import("resource://gre/modules/Promise.jsm");
    1.15 +
    1.16 +let ppmm = Cc["@mozilla.org/parentprocessmessagemanager;1"].getService(Ci.nsIMessageListenerManager);
    1.17 +let deferred = 0;
    1.18 +let shouldPass = true;
    1.19 +let reqId = 0;
    1.20 +function getRequestId(increment) {
    1.21 +  reqId += increment;
    1.22 +  return "Request" + reqId;
    1.23 +}
    1.24 +
    1.25 +let paymentSuccess = {
    1.26 +  receiveMessage: function(aMsg) {
    1.27 +    let msg = aMsg.json;
    1.28 +    if (shouldPass) {
    1.29 +      do_check_eq(msg.requestId, getRequestId(0));
    1.30 +    } else {
    1.31 +      do_throw("Test should not have passed");
    1.32 +    }
    1.33 +    deferred.resolve();
    1.34 +  }
    1.35 +}
    1.36 +
    1.37 +let paymentFailed = {
    1.38 +  receiveMessage: function(aMsg) {
    1.39 +    let msg = aMsg.json;
    1.40 +    if (shouldPass) {
    1.41 +      do_throw("Test should not have failed: " + msg.errorMsg);
    1.42 +    } else {
    1.43 +      do_check_eq(msg.requestId, getRequestId(0));
    1.44 +      do_check_eq(msg.errorMsg, "FAILED CORRECTLY");
    1.45 +    }
    1.46 +    deferred.resolve();
    1.47 +  }
    1.48 +}
    1.49 +
    1.50 +add_task(function test_get_set() {
    1.51 +  let ui = Cc["@mozilla.org/payment/ui-glue;1"].getService(Ci.nsIPaymentUIGlue);
    1.52 +  deferred = Promise.defer();
    1.53 +  let id = getRequestId(1);
    1.54 +  ui.confirmPaymentRequest(id,
    1.55 +                           [{ wrappedJSObject: { type: "Fake Provider" } }],
    1.56 +                           function(aRequestId, type) {
    1.57 +                             do_check_eq(type, "Fake Provider");
    1.58 +                             deferred.resolve();
    1.59 +                           },
    1.60 +                           function(id, msg) {
    1.61 +                             do_throw("confirmPaymentRequest should not have failed");
    1.62 +                             deferred.resolve();
    1.63 +                           });
    1.64 +  yield deferred.promise;
    1.65 +});
    1.66 +
    1.67 +add_task(function test_default() {
    1.68 +  ppmm.addMessageListener("Payment:Success", paymentSuccess);
    1.69 +  ppmm.addMessageListener("Payment:Failed", paymentFailed);
    1.70 +
    1.71 +  let ui = Cc["@mozilla.org/payment/ui-glue;1"].getService(Ci.nsIPaymentUIGlue);
    1.72 +  deferred = Promise.defer();
    1.73 +  let id = getRequestId(1);
    1.74 +  shouldPass = true;
    1.75 +  ui.showPaymentFlow(id,
    1.76 +                     {
    1.77 +                       uri: "chrome://roboextender/content/paymentsUI.html",
    1.78 +                       jwt: "#pass"
    1.79 +                     },
    1.80 +                     function(id, msg) {
    1.81 +                       do_throw("confirmPaymentRequest should not have failed");
    1.82 +                       deferred.resolve();
    1.83 +                     });
    1.84 +  yield deferred.promise;
    1.85 +
    1.86 +  deferred = Promise.defer();
    1.87 +  let id = getRequestId(1);
    1.88 +  shouldPass = false;
    1.89 +  ui.showPaymentFlow(id,
    1.90 +                     {
    1.91 +                       uri: "chrome://roboextender/content/paymentsUI.html",
    1.92 +                       jwt: "#fail"
    1.93 +                     },
    1.94 +                     function(id, msg) {
    1.95 +                       do_throw("confirmPaymentRequest should not have failed");
    1.96 +                       deferred.resolve();
    1.97 +                     });
    1.98 +
    1.99 +  yield deferred.promise;
   1.100 +
   1.101 +  ppmm.removeMessageListener("Payment:Success", paymentSuccess);
   1.102 +  ppmm.removeMessageListener("Payment:Failed", paymentFailed);
   1.103 +});
   1.104 +
   1.105 +run_next_test();

mercurial