📄 formsubmittest.java
字号:
defineWebPage( "Default", "<form method=GET action = \"/ask\">" + "<Input type=text name=age value=12>" + "<Input type=image value=name src=\"\">" + "</form>" ); WebResponse page = _wc.getResponse( getHostPath() + "/Default.html" ); WebForm form = page.getForms()[0]; WebRequest request = form.getRequest(); assertEquals( getHostPath() + "/ask?age=12", request.getURL().toExternalForm() ); } public void testImageButtonPositionalSubmit() throws Exception { defineWebPage( "Default", "<form method=GET action = \"/ask\">" + "<Input type=text name=age value=12>" + "<Input type=image name=update value=name src=\"\">" + "</form>" ); WebResponse page = _wc.getResponse( getHostPath() + "/Default.html" ); WebForm form = page.getForms()[0]; WebRequest request = form.getRequest( form.getSubmitButton( "update" ), 10, 15 ); assertEquals( getHostPath() + "/ask?age=12&update=name&update.x=10&update.y=15", request.getURL().toExternalForm() ); request.setImageButtonClickPosition( 5, 20 ); assertEquals( getHostPath() + "/ask?age=12&update=name&update.x=5&update.y=20", request.getURL().toExternalForm() ); } public void testImageButtonNoValuePositionalSubmit() throws Exception { defineWebPage( "Default", "<form method='GET' action='test.jsp'>" + "<input type='image' src='image.gif' name='aButton'>" + "</form>" ); WebResponse page = _wc.getResponse( getHostPath() + "/Default.html" ); WebForm form = page.getForms()[0]; WebRequest request = form.getRequest( form.getSubmitButton( "aButton" ), 20, 5 ); assertEquals( getHostPath() + "/test.jsp?aButton.x=20&aButton.y=5", request.getURL().toExternalForm() ); } public void testImageButtonNoValueUncheckedPositionalSubmit() throws Exception { defineWebPage( "Default", "<form method='GET' action='test.jsp'>" + "<input type='image' src='image.gif' name='aButton'>" + "</form>" ); WebResponse page = _wc.getResponse( getHostPath() + "/Default.html" ); WebForm form = page.getForms()[0]; WebRequest request = form.newUnvalidatedRequest( form.getSubmitButton( "aButton" ), 20, 5 ); assertEqualQueries( getHostPath() + "/test.jsp?aButton.x=20&aButton.y=5", request.getURL().toExternalForm() ); } public void testSubmitButtonAttributes() throws Exception { defineWebPage( "Default", "<form method=GET action = \"/ask\">" + "<Input type=text name=age value=12>" + "<Input type=submit name=update value=age>" + "</form>" ); WebResponse page = _wc.getResponse( getHostPath() + "/Default.html" ); WebForm form = page.getForms()[0]; SubmitButton[] buttons = form.getSubmitButtons(); assertEquals( "num detected submit buttons", 1, buttons.length ); assertEquals( "submit button name", "update", buttons[0].getName() ); assertEquals( "submit button value", "age", buttons[0].getValue() ); } public void testSubmitButtonSelectionByName() throws Exception { defineWebPage( "Default", "<form method=GET action = \"/ask\">" + "<Input type=text name=age value=12>" + "<Input type=submit name=update value=age>" + "<Input type=submit name=recompute value=age>" + "</form>" ); WebResponse page = _wc.getResponse( getHostPath() + "/Default.html" ); WebForm form = page.getForms()[0]; SubmitButton button = form.getSubmitButton( "zork" ); assertNull( "Found a non-existent button", button ); button = form.getSubmitButton( "update" ); assertNotNull( "Didn't find the desired button", button ); assertEquals( "submit button name", "update", button.getName() ); assertEquals( "submit button value", "age", button.getValue() ); } public void testSubmitButtonSelectionByNameAndValue() throws Exception { defineWebPage( "Default", "<form method=GET action = \"/ask\">" + "<Input type=text name=age value=12>" + "<Input type=submit name=update value=age>" + "<Input type=submit name=update value=name>" + "</form>" ); WebResponse page = _wc.getResponse( getHostPath() + "/Default.html" ); WebForm form = page.getForms()[0]; SubmitButton button = form.getSubmitButton( "update" ); assertNotNull( "Didn't find the desired button", button ); assertEquals( "submit button name", "update", button.getName() ); assertEquals( "submit button value", "age", button.getValue() ); button = form.getSubmitButton( "update", "name" ); assertNotNull( "Didn't find the desired button", button ); assertEquals( "submit button name", "update", button.getName() ); assertEquals( "submit button value", "name", button.getValue() ); } public void testNamedButtonSubmitString() throws Exception { defineWebPage( "Default", "<form method=GET action = \"/ask\">" + "<Input type=text name=age value=12>" + "<Input type=submit name=update value=age>" + "<Button type=submit name=update value=name>" + "</form>" ); WebResponse page = _wc.getResponse( getHostPath() + "/Default.html" ); WebForm form = page.getForms()[0]; WebRequest request = form.getRequest( form.getSubmitButton( "update", "name" ) ); assertEquals( getHostPath() + "/ask?age=12&update=name", request.getURL().toExternalForm() ); request = form.getRequest( "update", "name" ); assertEquals( getHostPath() + "/ask?age=12&update=name", request.getURL().toExternalForm() ); request = form.getRequest( "update" ); assertEquals( getHostPath() + "/ask?age=12&update=age", request.getURL().toExternalForm() ); try { request.setImageButtonClickPosition( 1, 2 ); fail( "Should not allow set position with non-image button" ); } catch (IllegalRequestParameterException e) { } } public void testUnnamedButtonSubmit() throws Exception { defineWebPage( "Default", "<form method=GET action = \"/ask\">" + "<Input type=text name=age value=12>" + "<Input type=submit name=update value=age>" + "<Input type=submit name=update value=name>" + "</form>" ); WebResponse page = _wc.getResponse( getHostPath() + "/Default.html" ); WebForm form = page.getForms()[0]; try { form.getRequest(); fail( "Should not allow submit with unnamed button" ); } catch (IllegalRequestParameterException e) { } } public void testForeignSubmitButtonDetection() throws Exception { defineWebPage( "Default", "<form method=GET action = \"/ask\">" + "<Input type=text name=age value=12>" + "<Input type=submit name=update value=age>" + "<Input type=submit name=update value=name>" + "</form>" ); defineWebPage( "Dupl", "<form method=GET action = \"/ask\">" + "<Input type=text name=age value=12>" + "<Input type=submit name=update value=age>" + "<Input type=submit name=update value=name>" + "</form>" ); defineWebPage( "Wrong", "<form method=GET action = \"/ask\">" + "<Input type=text name=age value=12>" + "<Input type=submit name=save value=age>" + "</form>" ); WebResponse other = _wc.getResponse( getHostPath() + "/Dupl.html" ); WebResponse page = _wc.getResponse( getHostPath() + "/Default.html" ); WebResponse wrong = _wc.getResponse( getHostPath() + "/Wrong.html" ); WebForm form = page.getForms()[0]; WebForm otherForm = other.getForms()[0]; WebForm wrongForm = wrong.getForms()[0]; form.getRequest( otherForm.getSubmitButtons()[0] ); try { form.getRequest( wrongForm.getSubmitButtons()[0] ); fail( "Failed to reject illegal button" ); } catch (IllegalRequestParameterException e) { } form.newUnvalidatedRequest( wrongForm.getSubmitButtons()[0] ); HttpUnitOptions.setParameterValuesValidated( false ); form.getRequest( wrongForm.getSubmitButtons()[0] ); } public void testNoActionSupplied() throws Exception { defineWebPage( "abc/form", "<form name=\"test\">" + " <input type=\"text\" name=\"aTextField\">" + " <input type=\"submit\" name=\"apply\" value=\"Apply\">" + "</form>" ); WebResponse wr = _wc.getResponse( getHostPath() + "/abc/form.html" ); WebForm form = wr.getForms()[0]; WebRequest req = form.getRequest( "apply" ); req.setParameter( "aTextField", "test" ); assertEquals( getHostPath() + "/abc/form.html?aTextField=test&apply=Apply", req.getURL().toExternalForm() ); } public void testNoActionSuppliedWhenBaseHasParams() throws Exception { defineResource( "abc/form?param1=value¶m2=value", "<form name=\"test\">" + " <input type=\"text\" name=\"aTextField\">" + " <input type=\"submit\" name=\"apply\" value=\"Apply\">" + "</form>" ); WebResponse wr = _wc.getResponse( getHostPath() + "/abc/form?param1=value¶m2=value" ); WebForm form = wr.getForms()[0]; WebRequest req = form.getRequest( "apply" ); req.setParameter( "aTextField", "test" ); assertEquals( getHostPath() + "/abc/form?param1=value¶m2=value&aTextField=test&apply=Apply", req.getURL().toExternalForm() ); } public void testNoActionSuppliedWhenBaseHasParamsSetByTheForm() throws Exception { defineResource( "abc/form?param1=value¶m2=value", "<form name=\"test\">" + " <input type=\"text\" name='param2'>" + " <input type=\"submit\" name=\"apply\" value=\"Apply\">" + "</form>" ); WebResponse wr = _wc.getResponse( getHostPath() + "/abc/form?param1=value¶m2=value" ); WebForm form = wr.getForms()[0]; WebRequest req = form.getRequest( "apply" ); req.setParameter( "param2", "test" ); assertEquals( getHostPath() + "/abc/form?param1=value¶m2=test&apply=Apply", req.getURL().toExternalForm() ); } public void testPostActionParametersAfterSetAction() throws Exception { defineWebPage( "abc/form", "<form name=\"test\" method='POST' action='stop?ready=yes'>" + " <input type=\"text\" name=\"aTextField\">" + " <input type=\"submit\" name=\"apply\" value=\"Apply\">" + "</form>" ); WebResponse wr = _wc.getResponse( getHostPath() + "/abc/form.html" ); WebForm form = wr.getForms()[0]; form.getScriptableObject().setAction( "go?size=3&time=now" ); WebRequest req = form.getRequest( "apply" ); req.setParameter( "aTextField", "test" ); assertEquals( getHostPath() + "/abc/go?size=3&time=now", req.getURL().toExternalForm() ); } public void testPostParameterEncoding() throws Exception { defineWebPage( "abc/form", "<form name=\"test\" method='POST' action='/doit'>" + " <input type='text' name='text_field-name*'>" + " <input type='submit' name='apply' value='Apply'>" + "</form>" ); setResourceCharSet( "abc/form.html", "iso-8859-3", true ); defineResource( "doit", new PseudoServlet() { public WebResource getPostResponse() throws IOException { return new WebResource( new String( getBody() ) ); } } ); WebResponse wr = _wc.getResponse( getHostPath() + "/abc/form.html" ); WebForm form = wr.getForms()[0]; form.setParameter( "text_field-name*", "a value" ); WebResponse response = form.submit(); assertEquals( "posted parameters", "text_field-name*=a+value&apply=Apply", response.getText() ); } public void testMailtoActionRejected() throws Exception { defineWebPage( "abc/form", "<form name='test' action='mailto:russgold@httpunit.org'>" + " <input type='text' name='text_field'>" + " <input type='submit' name='apply' value='Apply'>" + "</form>" ); WebResponse wr = _wc.getResponse( getHostPath() + "/abc/form.html" ); WebForm form = wr.getForms()[0]; form.setParameter( "text_field", "a value" ); try { form.submit(); fail( "Should have thrown an UnsupportedActionException" ); } catch (UnsupportedActionException success) { assertTrue( "Did not include mention of bad URL type", success.getMessage().indexOf( "mailto" ) >= 0 ); } }//---------------------------------------------- private members ------------------------------------------------ private WebConversation _wc;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -