1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
|
<!DOCTYPE html>
<meta charset="utf-8">
<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
var simple_tests = [
{
name: "form submission from form should navigate to url with x-www-form-urlencoded",
input: "<input name=foo value=bara>",
enctype: "application/x-www-form-urlencoded",
submitelement: "",
submitaction: function(doc) { doc.getElementById("testform").submit(); }
},
{
name: "form submission from form should navigate to url with multipart/form-data",
input: "<textarea name=foo>bar</textarea>",
enctype: "multipart/form-data",
submitelement: "",
submitaction: function(doc) { doc.getElementById("testform").submit(); }
},
{
name: "form submission from form should navigate to url with text/plain",
input: "<textarea name=qux>baz</textarea>",
enctype: "text/plain",
submitelement: "",
submitaction: function(doc) { doc.getElementById("testform").submit(); }
},
{
name: "form submission from button should navigate to url with x-www-form-urlencoded",
input: "<input name=foo value=bara>",
enctype: "application/x-www-form-urlencoded",
submitelement: "<button id=buttonsubmit type=\"submit\">Submit</button>",
submitaction: function(doc) { doc.getElementById("buttonsubmit").click(); }
},
{
name: "form submission from button should navigate to url with multipart/form-data",
input: "<textarea name=foo>bar</textarea>",
enctype: "multipart/form-data",
submitelement: "<button id=buttonsubmit type=\"submit\">Submit</button>",
submitaction: function(doc) { doc.getElementById("buttonsubmit").click(); }
},
{
name: "form submission from button should navigate to url with text/plain",
input: "<textarea name=qux>baz</textarea>",
enctype: "text/plain",
submitelement: "<button id=buttonsubmit type=\"submit\">Submit</button>",
submitaction: function(doc) { doc.getElementById("buttonsubmit").click(); }
},
{
name: "form submission from input should navigate to url with x-www-form-urlencoded",
input: "<input name=foo value=bara>",
enctype: "application/x-www-form-urlencoded",
submitelement: "<input id=inputsubmit type=\"submit\">Submit</input>",
submitaction: function(doc) { doc.getElementById("inputsubmit").click(); }
},
{
name: "form submission from input should navigate to url with multipart/form-data",
input: "<textarea name=foo>bar</textarea>",
enctype: "multipart/form-data",
submitelement: "<input id=inputsubmit type=\"submit\">Submit</input>",
submitaction: function(doc) { doc.getElementById("inputsubmit").click(); }
},
{
name: "form submission from input should navigate to url with text/plain",
input: "<input name=qux value=baz>",
enctype: "text/plain",
submitelement: "<input id=inputsubmit type=\"submit\">Submit</input>",
submitaction: function(doc) { doc.getElementById("inputsubmit").click(); }
},
{
name: "form submission from submit input should contain submit button value",
input: "<button type=submit name=notclicked value=nope>not clicked</button>",
enctype: "application/x-www-form-urlencoded",
submitelement: "<button id=inputsubmit type=\"submit\" name=foo value=bara>Submit</button>",
submitaction: function(doc) { doc.getElementById("inputsubmit").click(); }
},
{
name: "form submission from submit button should contain submit button value",
input: "<input type=submit name=notclicked value=nope/>",
enctype: "application/x-www-form-urlencoded",
submitelement: "<input id=inputsubmit type=\"submit\" name=foo value=bara >",
submitaction: function(doc) { doc.getElementById("inputsubmit").click(); }
},
{
name: "form submission from image input should contain entries for its clicked coordinate",
input: "<input type=submit name=notclicked value=nope/>",
enctype: "application/x-www-form-urlencoded",
submitelement: "<input id=inputsubmit type=image name=foo>",
submitaction: function(doc) { doc.getElementById("inputsubmit").click(); },
expected_body: "foo.x=0&foo.y=0"
},
{
name: "form submission from image input should only contain entries for the submitter's clicked coordinate when multiple image inputs are present",
input: "<input type=image name=bar>",
enctype: "application/x-www-form-urlencoded",
submitelement: "<input id=inputsubmit type=image name=foo>",
submitaction: function(doc) { doc.getElementById("inputsubmit").click(); },
expected_body: "foo.x=0&foo.y=0"
},
];
simple_tests.forEach(function(test_obj) {
test_obj.test = async_test(test_obj.name);
});
function run_simple_test() {
if (simple_tests.length == 0) {
return;
}
var test_obj = simple_tests.pop();
var enctype = test_obj.enctype || "application/x-www-form-urlencoded";
var query = test_obj.expected_body ? "expected_body=" + encodeURIComponent(test_obj.expected_body) : "query=1";
var t = test_obj.test;
var testframe = document.getElementById("testframe");
var testdocument = testframe.contentWindow.document;
testdocument.body.innerHTML =
"<form id=testform method=post action=\"/html/semantics/forms/form-submission-0/resources/form-submission.py?" + query + "\" enctype=\"" + enctype + "\">" +
test_obj.input +
test_obj.submitelement +
"</form>";
testframe.onload = function() {
t.step(function (){
var response = testframe.contentDocument.documentElement.textContent;
assert_equals(response, "OK");
});
t.done();
run_simple_test();
};
test_obj.submitaction(testdocument);
}
</script>
<iframe id=testframe src="/common/blank.html" onload="run_simple_test();"></iframe>
|