diff options
Diffstat (limited to '')
-rw-r--r-- | browser/extensions/formautofill/test/browser/creditCard/browser_insecure_form.js | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/browser/extensions/formautofill/test/browser/creditCard/browser_insecure_form.js b/browser/extensions/formautofill/test/browser/creditCard/browser_insecure_form.js new file mode 100644 index 0000000000..5de499b942 --- /dev/null +++ b/browser/extensions/formautofill/test/browser/creditCard/browser_insecure_form.js @@ -0,0 +1,145 @@ +"use strict"; + +// Remove the scheme from the URLs so we can switch between http: and https: later. +const TEST_URL_PATH_CC = + "://example.org" + + HTTP_TEST_PATH + + "creditCard/autocomplete_creditcard_basic.html"; +const TEST_URL_PATH = + "://example.org" + HTTP_TEST_PATH + "autocomplete_basic.html"; + +add_task(async function setup_storage() { + await setStorage( + TEST_ADDRESS_1, + TEST_ADDRESS_2, + TEST_ADDRESS_3, + TEST_CREDIT_CARD_1, + TEST_CREDIT_CARD_2, + TEST_CREDIT_CARD_3 + ); +}); + +add_task(async function test_insecure_form() { + async function runTest({ + urlPath, + protocol, + focusInput, + expectedType, + expectedResultLength, + }) { + await BrowserTestUtils.withNewTab( + { gBrowser, url: protocol + urlPath }, + async function (browser) { + await openPopupOn(browser, focusInput); + + const items = getDisplayedPopupItems(browser); + is( + items.length, + expectedResultLength, + `Should show correct amount of results in "${protocol}"` + ); + const firstItem = items[0]; + is( + firstItem.getAttribute("originaltype"), + expectedType, + `Item should attach with correct binding in "${protocol}"` + ); + + await closePopup(browser); + } + ); + } + + const testSets = [ + { + urlPath: TEST_URL_PATH, + protocol: "https", + focusInput: "#organization", + expectedType: "autofill-profile", + expectedResultLength: 2, + }, + { + urlPath: TEST_URL_PATH, + protocol: "http", + focusInput: "#organization", + expectedType: "autofill-profile", + expectedResultLength: 2, + }, + { + urlPath: TEST_URL_PATH_CC, + protocol: "https", + focusInput: "#cc-name", + expectedType: "autofill-profile", + expectedResultLength: 3, + }, + { + urlPath: TEST_URL_PATH_CC, + protocol: "http", + focusInput: "#cc-name", + expectedType: "autofill-insecureWarning", // insecure warning field + expectedResultLength: 1, + }, + ]; + + for (const test of testSets) { + await runTest(test); + } +}); + +add_task(async function test_click_on_insecure_warning() { + await BrowserTestUtils.withNewTab( + { gBrowser, url: "http" + TEST_URL_PATH_CC }, + async function (browser) { + await openPopupOn(browser, "#cc-name"); + const insecureItem = getDisplayedPopupItems(browser)[0]; + let popupClosePromise = BrowserTestUtils.waitForPopupEvent( + browser.autoCompletePopup, + "hidden" + ); + await EventUtils.synthesizeMouseAtCenter(insecureItem, {}); + // Check input's value after popup closed to ensure the completion of autofilling. + await popupClosePromise; + + const inputValue = await SpecialPowers.spawn( + browser, + [], + async function () { + return content.document.querySelector("#cc-name").value; + } + ); + is(inputValue, ""); + + await closePopup(browser); + } + ); +}); + +add_task(async function test_press_enter_on_insecure_warning() { + await BrowserTestUtils.withNewTab( + { gBrowser, url: "http" + TEST_URL_PATH_CC }, + async function (browser) { + await openPopupOn(browser, "#cc-name"); + + await BrowserTestUtils.synthesizeKey("VK_DOWN", {}, browser); + + let popupClosePromise = BrowserTestUtils.waitForPopupEvent( + browser.autoCompletePopup, + "hidden" + ); + await BrowserTestUtils.synthesizeKey("VK_RETURN", {}, browser); + // Check input's value after popup closed to ensure the completion of autofilling. + await popupClosePromise; + + const inputValue = await SpecialPowers.spawn( + browser, + [], + async function () { + return content.document.querySelector("#cc-name").value; + } + ); + is(inputValue, ""); + + await closePopup(browser); + } + ); +}); |