diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
commit | 2aa4a82499d4becd2284cdb482213d541b8804dd (patch) | |
tree | b80bf8bf13c3766139fbacc530efd0dd9d54394c /browser/components/payments/test/unit | |
parent | Initial commit. (diff) | |
download | firefox-upstream.tar.xz firefox-upstream.zip |
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'browser/components/payments/test/unit')
-rw-r--r-- | browser/components/payments/test/unit/head.js | 2 | ||||
-rw-r--r-- | browser/components/payments/test/unit/test_response_creation.js | 149 | ||||
-rw-r--r-- | browser/components/payments/test/unit/xpcshell.ini | 6 |
3 files changed, 157 insertions, 0 deletions
diff --git a/browser/components/payments/test/unit/head.js b/browser/components/payments/test/unit/head.js new file mode 100644 index 0000000000..82e1e170c1 --- /dev/null +++ b/browser/components/payments/test/unit/head.js @@ -0,0 +1,2 @@ +var { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm"); +var { sinon } = ChromeUtils.import("resource://testing-common/Sinon.jsm"); diff --git a/browser/components/payments/test/unit/test_response_creation.js b/browser/components/payments/test/unit/test_response_creation.js new file mode 100644 index 0000000000..2b4b5dc98b --- /dev/null +++ b/browser/components/payments/test/unit/test_response_creation.js @@ -0,0 +1,149 @@ +"use strict"; + +/** + * Basic checks to ensure that helpers constructing responses map their + * destructured arguments properly to the `init` methods. Full testing of the init + * methods is left to the DOM code. + */ + +const DIALOG_WRAPPER_URI = "chrome://payments/content/paymentDialogWrapper.js"; +let dialogGlobal = {}; +Services.scriptloader.loadSubScript(DIALOG_WRAPPER_URI, dialogGlobal); + +add_task(async function test_createBasicCardResponseData_basic() { + let expected = { + cardholderName: "John Smith", + cardNumber: "1234567890", + expiryMonth: "01", + expiryYear: "2017", + cardSecurityCode: "0123", + }; + let actual = dialogGlobal.paymentDialogWrapper.createBasicCardResponseData( + expected + ); + Assert.equal( + actual.cardholderName, + expected.cardholderName, + "Check cardholderName" + ); + Assert.equal(actual.cardNumber, expected.cardNumber, "Check cardNumber"); + Assert.equal(actual.expiryMonth, expected.expiryMonth, "Check expiryMonth"); + Assert.equal(actual.expiryYear, expected.expiryYear, "Check expiryYear"); + Assert.equal( + actual.cardSecurityCode, + expected.cardSecurityCode, + "Check cardSecurityCode" + ); +}); + +add_task(async function test_createBasicCardResponseData_minimal() { + let expected = { + cardNumber: "1234567890", + }; + let actual = dialogGlobal.paymentDialogWrapper.createBasicCardResponseData( + expected + ); + info(actual.cardNumber); + Assert.equal(actual.cardNumber, expected.cardNumber, "Check cardNumber"); +}); + +add_task(async function test_createBasicCardResponseData_withoutNumber() { + let data = { + cardholderName: "John Smith", + expiryMonth: "01", + expiryYear: "2017", + cardSecurityCode: "0123", + }; + Assert.throws( + () => dialogGlobal.paymentDialogWrapper.createBasicCardResponseData(data), + /NS_ERROR_FAILURE/, + "Check cardNumber is required" + ); +}); + +function checkAddress(actual, expected) { + for (let [propName, propVal] of Object.entries(expected)) { + if (propName == "addressLines") { + // Note the singular vs. plural here. + Assert.equal( + actual.addressLine.length, + propVal.length, + "Check number of address lines" + ); + for (let [i, line] of expected.addressLines.entries()) { + Assert.equal( + actual.addressLine.queryElementAt(i, Ci.nsISupportsString).data, + line, + `Check ${propName} line ${i}` + ); + } + continue; + } + Assert.equal(actual[propName], propVal, `Check ${propName}`); + } +} + +add_task(async function test_createPaymentAddress_minimal() { + let data = { + country: "CA", + }; + let actual = dialogGlobal.paymentDialogWrapper.createPaymentAddress(data); + checkAddress(actual, data); +}); + +add_task(async function test_createPaymentAddress_basic() { + let data = { + country: "CA", + addressLines: ["123 Sesame Street", "P.O. Box ABC"], + region: "ON", + city: "Delhi", + dependentLocality: "N/A", + postalCode: "94041", + sortingCode: "1234", + organization: "Mozilla Corporation", + recipient: "John Smith", + phone: "+15195555555", + }; + let actual = dialogGlobal.paymentDialogWrapper.createPaymentAddress(data); + checkAddress(actual, data); +}); + +add_task(async function test_createShowResponse_basic() { + let requestId = "876hmbvfd45hb"; + dialogGlobal.paymentDialogWrapper.request = { + requestId, + }; + + let cardData = { + cardholderName: "John Smith", + cardNumber: "1234567890", + expiryMonth: "01", + expiryYear: "2099", + cardSecurityCode: "0123", + }; + let methodData = dialogGlobal.paymentDialogWrapper.createBasicCardResponseData( + cardData + ); + + let responseData = { + acceptStatus: Ci.nsIPaymentActionResponse.PAYMENT_ACCEPTED, + methodName: "basic-card", + methodData, + payerName: "My Name", + payerEmail: "my.email@example.com", + payerPhone: "+15195555555", + }; + let actual = dialogGlobal.paymentDialogWrapper.createShowResponse( + responseData + ); + for (let [propName, propVal] of Object.entries(actual)) { + if (typeof propVal != "string") { + continue; + } + if (propName == "requestId") { + Assert.equal(propVal, requestId, `Check ${propName}`); + continue; + } + Assert.equal(propVal, responseData[propName], `Check ${propName}`); + } +}); diff --git a/browser/components/payments/test/unit/xpcshell.ini b/browser/components/payments/test/unit/xpcshell.ini new file mode 100644 index 0000000000..b4f0db683a --- /dev/null +++ b/browser/components/payments/test/unit/xpcshell.ini @@ -0,0 +1,6 @@ +[DEFAULT] +firefox-appdir = browser +head = head.js +skip-if = true # Bug 1515048 - Disable for now. + +[test_response_creation.js] |