summaryrefslogtreecommitdiffstats
path: root/netwerk/test/browser/browser_post_file.js
diff options
context:
space:
mode:
Diffstat (limited to 'netwerk/test/browser/browser_post_file.js')
-rw-r--r--netwerk/test/browser/browser_post_file.js71
1 files changed, 71 insertions, 0 deletions
diff --git a/netwerk/test/browser/browser_post_file.js b/netwerk/test/browser/browser_post_file.js
new file mode 100644
index 0000000000..7ccbd6435d
--- /dev/null
+++ b/netwerk/test/browser/browser_post_file.js
@@ -0,0 +1,71 @@
+/*
+ * Tests for bug 1241100: Post to local file should not overwrite the file.
+ */
+"use strict";
+
+async function createTestFile(filename, content) {
+ let path = PathUtils.join(PathUtils.tempDir, filename);
+ await IOUtils.writeUTF8(path, content);
+ return path;
+}
+
+add_task(async function () {
+ var postFilename = "post_file.html";
+ var actionFilename = "action_file.html";
+
+ var postFileContent = `
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>post file</title>
+</head>
+<body onload="document.getElementById('form').submit();">
+<form id="form" action="${actionFilename}" method="post" enctype="text/plain" target="frame">
+<input type="hidden" name="foo" value="bar">
+<input type="submit">
+</form>
+<iframe id="frame" name="frame"></iframe>
+</body>
+</html>
+`;
+
+ var actionFileContent = `
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>action file</title>
+</head>
+<body>
+<div id="action_file_ok">ok</div>
+</body>
+</html>
+`;
+
+ var postPath = await createTestFile(postFilename, postFileContent);
+ var actionPath = await createTestFile(actionFilename, actionFileContent);
+
+ var postURI = PathUtils.toFileURI(postPath);
+ var actionURI = PathUtils.toFileURI(actionPath);
+
+ let tab = await BrowserTestUtils.openNewForegroundTab(
+ gBrowser,
+ "about:blank"
+ );
+ let browserLoadedPromise = BrowserTestUtils.browserLoaded(
+ tab.linkedBrowser,
+ true,
+ actionURI
+ );
+ BrowserTestUtils.loadURIString(tab.linkedBrowser, postURI);
+ await browserLoadedPromise;
+
+ var actionFileContentAfter = await IOUtils.readUTF8(actionPath);
+ is(actionFileContentAfter, actionFileContent, "action file is not modified");
+
+ await IOUtils.remove(postPath);
+ await IOUtils.remove(actionPath);
+
+ gBrowser.removeCurrentTab();
+});