browser_post_auth.js (1762B)
1 "use strict"; 2 3 const { PromptTestUtils } = ChromeUtils.importESModule( 4 "resource://testing-common/PromptTestUtils.sys.mjs" 5 ); 6 7 const FOLDER = getRootDirectory(gTestPath).replace( 8 "chrome://mochitests/content/", 9 "http://mochi.test:8888/" 10 ); 11 12 add_task(async function () { 13 let tab = await BrowserTestUtils.openNewForegroundTab( 14 gBrowser, 15 "about:blank" 16 ); 17 let browserLoadedPromise = BrowserTestUtils.browserLoaded( 18 tab.linkedBrowser, 19 true, 20 `${FOLDER}post.html` 21 ); 22 BrowserTestUtils.startLoadingURIString( 23 tab.linkedBrowser, 24 `${FOLDER}post.html` 25 ); 26 await browserLoadedPromise; 27 28 let finalLoadPromise = BrowserTestUtils.browserLoaded( 29 tab.linkedBrowser, 30 true, 31 `${FOLDER}auth_post.sjs` 32 ); 33 34 await SpecialPowers.spawn(tab.linkedBrowser, [], async function () { 35 let file = new content.File( 36 [new content.Blob(["1234".repeat(1024 * 500)], { type: "text/plain" })], 37 "test-name" 38 ); 39 content.document.getElementById("input_file").mozSetFileArray([file]); 40 content.document.getElementById("form").submit(); 41 }); 42 43 let promptPromise = PromptTestUtils.handleNextPrompt( 44 tab.linkedBrowser, 45 { 46 modalType: Ci.nsIPrompt.MODAL_TYPE_TAB, 47 promptType: "promptUserAndPass", 48 }, 49 { buttonNumClick: 0, loginInput: "user", passwordInput: "pass" } 50 ); 51 52 await promptPromise; 53 54 await finalLoadPromise; 55 56 await SpecialPowers.spawn(tab.linkedBrowser, [], async function () { 57 Assert.ok(content.location.href.includes("auth_post.sjs")); 58 Assert.ok(content.document.body.innerHTML.includes("1234")); 59 }); 60 61 BrowserTestUtils.removeTab(tab); 62 63 // Clean up any active logins we added during the test. 64 Services.obs.notifyObservers(null, "net:clear-active-logins"); 65 });