📄 formparameterstest.java
字号:
request.setParameter( "color", "black" ); request.setParameter( "color", new String[] { "blue", "red" } ); } public void testRadioButtonValidation() throws Exception { defineWebPage( "Default", "<form method=GET action = \"/ask\">" + "<Input type=radio name=color value=red>Crimson" + "<Input type=radio name=color value=blue>Aquamarine" + "<Input type=radio name=color value=green>Chartreuse" + "<Input type=submit></form>" ); WebResponse page = _wc.getResponse( getHostPath() + "/Default.html" ); WebRequest request = page.getForms()[0].getRequest(); assertEquals( "color options", new String[] { "red", "blue", "green" }, page.getForms()[0].getOptionValues( "color" ) ); assertEquals( "color names", new String[] { "Crimson", "Aquamarine", "Chartreuse" }, page.getForms()[0].getOptions( "color" ) ); request.setParameter( "color", "red" ); request.setParameter( "color", "blue" ); validateSetParameterRejected( request, "color", "black", "setting radio buttons to unknown value" ); validateSetParameterRejected( request, "color", new String[] { "blue", "red" }, "setting radio buttons to multiple values" ); } public void testCheckboxValidationBypassDeprecated() throws Exception { defineWebPage( "Default", "<form method=GET action = \"/ask\">" + "<Input type=checkbox name=use_color>" + "<Input type=checkbox name=color value=red>" + "<Input type=checkbox name=color value=blue>" + "<Input type=submit></form>" ); HttpUnitOptions.setParameterValuesValidated( false ); WebResponse page = _wc.getResponse( getHostPath() + "/Default.html" ); WebRequest request = page.getForms()[0].getRequest(); request.setParameter( "use_color", "red" ); request.setParameter( "color", "green" ); } public void testCheckboxValidationBypass() throws Exception { defineWebPage( "Default", "<form method=GET action = \"/ask\">" + "<Input type=checkbox name=use_color>" + "<Input type=checkbox name=color value=red>" + "<Input type=checkbox name=color value=blue>" + "<Input type=submit></form>" ); WebResponse page = _wc.getResponse( getHostPath() + "/Default.html" ); WebRequest request = page.getForms()[0].newUnvalidatedRequest(); request.setParameter( "use_color", "red" ); request.setParameter( "color", "green" ); } public void testCheckboxValidation() throws Exception { defineWebPage( "Default", "<form method=GET action = 'ask?color='>" + "<Input type=checkbox name=use_color>" + "<Input type=checkbox name=color value=red>Scarlet" + "<Input type=checkbox name=color value=blue>Turquoise" + "<Input type=submit></form>" ); WebResponse page = _wc.getResponse( getHostPath() + "/Default.html" ); assertEquals( "Color values", new String[] { "Scarlet", "Turquoise" }, page.getForms()[0].getOptions( "color" ) ); WebRequest request = page.getForms()[0].getRequest(); request.setParameter( "use_color", "on" ); request.removeParameter( "use_color" ); validateSetParameterRejected( request, "use_color", "red", "setting checkbox to a string value" ); request.setParameter( "color", "red" ); request.setParameter( "color", new String[] { "red", "blue" } ); validateSetParameterRejected( request, "color", "on", "setting checkbox to an incorrect value" ); validateSetParameterRejected( request, "color", new String[] { "green", "red" }, "setting checkbox to an incorrect value" ); } public void testCheckboxShortcuts() throws Exception { defineWebPage( "Default", "<form method=GET id='boxes'>" + "<Input type=checkbox name=use_color>" + "<Input type=checkbox name=running value=fast>" + "<Input type=checkbox name=color value=red>Scarlet" + "<Input type=checkbox name=color value=blue>Turquoise" + "<Input type=text name=fish>" + "<Input type=submit></form>" ); WebResponse page = _wc.getResponse( getHostPath() + "/Default.html" ); WebForm form = page.getFormWithID( "boxes" ); form.toggleCheckbox( "use_color" ); assertEquals( "'use_color' checkbox after toggle", "on", form.getParameterValue( "use_color" ) ); form.setCheckbox( "use_color", false ); assertEquals( "'use_color' checkbox after set-false", null, form.getParameterValue( "use_color" ) ); form.toggleCheckbox( "running" ); assertEquals( "'running' checkbox after toggle", "fast", form.getParameterValue( "running" ) ); try { form.setCheckbox( "color", true ); fail( "Did not forbid setting checkbox with multiple values" ); } catch (IllegalRequestParameterException e) { } try { form.toggleCheckbox( "fish" ); fail( "Did not forbid toggling non-checkbox parameter" ); } catch (IllegalRequestParameterException e) { } form.toggleCheckbox( "color", "red" ); assertMatchingSet( "color checkboxes", new String[] { "red" }, form.getParameterValues( "color" ) ); form.setCheckbox( "color", "blue", true ); assertMatchingSet( "color checkboxes", new String[] { "red", "blue" }, form.getParameterValues( "color" ) ); try { form.setCheckbox( "color", "green", true ); fail( "Did not forbid setting checkbox with unknown value" ); } catch (IllegalRequestParameterException e) { } } public void testReadOnlyControls() throws Exception { defineWebPage( "Default", "<form method=GET action = \"/ask\">" + "<Input readonly type=checkbox name=color value=red checked>" + "<Input type=checkbox name=color value=blue>" + "<Input type=radio name=species value=hippo readonly>" + "<Input type=radio name=species value=kangaroo checked>" + "<Input type=radio name=species value=lemur>" + "<textarea name='big' readonly rows=2 cols=40>stop me</textarea>" + "<Input type=text name=age value=12 readonly value='12'></form>" ); WebResponse page = _wc.getResponse( getHostPath() + "/Default.html" ); WebForm form = page.getForms()[0]; WebRequest request = page.getForms()[0].getRequest(); assertFalse( "'color' incorrectly reported as read-only", form.isReadOnlyParameter( "color" ) ); assertFalse( "'species' incorrectly reported as read-only", form.isReadOnlyParameter( "species" ) ); assertTrue( "'big' should be reported as read-only", form.isReadOnlyParameter( "big" ) ); assertTrue( "'age' should be reported as read-only", form.isReadOnlyParameter( "age" ) ); assertMatchingSet( "selected color", new String[] { "red" }, form.getParameterValues( "color" ) ); assertEquals( "selected animal", "kangaroo", form.getParameterValue( "species" ) ); assertEquals( "age", "12", form.getParameterValue( "age" ) ); assertMatchingSet( "color choices", new String[] { "red", "blue" }, form.getOptionValues( "color" ) ); assertMatchingSet( "species choices", new String[] { "kangaroo", "lemur" }, form.getOptionValues( "species" ) ); validateSetParameterRejected( request, "color", "blue", "unchecking 'red'" ); validateSetParameterRejected( request, "color", new String[] { "blue" }, "unchecking 'red'" ); validateSetParameterRejected( request, "species", "hippo", "selecting 'hippo'" ); validateSetParameterRejected( request, "age", "15", "changing a read-only text parameter value" ); validateSetParameterRejected( request, "big", "go-go", "changing a read-only textarea parameter value" ); request.setParameter( "color", "red" ); request.setParameter( "color", new String[] { "red", "blue" } ); request.setParameter( "species", "lemur" ); request.setParameter( "age", "12" ); request.setParameter( "big", "stop me" ); } public void testDisabledControls() throws Exception { defineWebPage( "Default", "<form method=GET action = '/ask'>" + "<Input disabled type=checkbox name=color value=red checked>" + "<Input type=checkbox name=color value=blue>" + "<Input type=radio name=species value=hippo disabled>" + "<Input type=radio name=species value=kangaroo checked>" + "<Input type=radio name=species value=lemur>" + "<textarea name='big' disabled rows=2 cols=40>stop me</textarea>" + "<Input type=text name=age value=12 disabled value='12'></form>" ); WebResponse page = _wc.getResponse( getHostPath() + "/Default.html" ); WebForm form = page.getForms()[0]; WebRequest request = page.getForms()[0].getRequest(); assertEquals( "Expected request URL", getHostPath() + "/ask?species=kangaroo", request.getURL().toExternalForm() ); assertFalse( "'color' incorrectly reported as disabled", form.isDisabledParameter( "color" ) ); assertFalse( "'species' incorrectly reported as disabled", form.isDisabledParameter( "species" ) ); assertTrue( "'big' should be reported as disabled", form.isDisabledParameter( "big" ) ); assertTrue( "'age' should be reported as disabled", form.isDisabledParameter( "age" ) ); assertMatchingSet( "selected color", new String[] { "red" }, form.getParameterValues( "color" ) ); assertEquals( "selected animal", "kangaroo", form.getParameterValue( "species" ) ); assertEquals( "age", "12", form.getParameterValue( "age" ) ); assertMatchingSet( "color choices", new String[] { "red", "blue" }, form.getOptionValues( "color" ) ); assertMatchingSet( "species choices", new String[] { "kangaroo", "lemur" }, form.getOptionValues( "species" ) ); validateSetParameterRejected( request, "color", "blue", "unchecking 'red'" ); validateSetParameterRejected( request, "color", new String[] { "blue" }, "unchecking 'red'" ); validateSetParameterRejected( request, "species", "hippo", "selecting 'hippo'" ); validateSetParameterRejected( request, "age", "15", "changing a read-only text parameter value" ); validateSetParameterRejected( request, "big", "go-go", "changing a read-only textarea parameter value" ); request.setParameter( "color", "red" ); request.setParameter( "color", new String[] { "red", "blue" } ); request.setParameter( "species", "lemur" ); request.setParameter( "age", "12" ); request.setParameter( "big", "stop me" ); } public void testFileParameterValue() throws Exception { defineWebPage( "Default", "<form method=POST action='/ask'>" + "<Input type=file name=File>" + "<Input type=submit value=Upload></form>" ); WebResponse page = _wc.getResponse( getHostPath() + "/Default.html" ); WebForm form = page.getForms()[0]; String[] values = form.getParameterValues( "File" ); assertEquals( "Number of file parameter values", 1, values.length ); assertEquals( "Default selected filename", "", values[0] ); final File file = new File( "dummy.txt" ); form.setParameter( "File", new UploadFileSpec[] { new UploadFileSpec( file ) } ); assertEquals( "Selected filename", file.getAbsolutePath(), form.getParameterValue( "File" ) ); form.setParameter( "File", file ); WebRequest wr = form.getRequest(); assertEquals( "File from validated request", file.getAbsolutePath(), wr.getParameterValues( "File" )[0] ); wr = form.newUnvalidatedRequest(); assertEquals( "File from unvalidated request", file.getAbsolutePath(), wr.getParameterValues( "File" )[0] ); }//---------------------------------------------- private members ------------------------------------------------ private WebConversation _wc; private void validateSetParameterRejected( WebRequest request, String parameterName, String value, String comment ) throws Exception { try { request.setParameter( parameterName, value ); fail( "Did not forbid " + comment ); } catch (IllegalRequestParameterException e) { } } private void validateSetParameterRejected( WebRequest request, String parameterName, String[] values, String comment ) throws Exception { try { request.setParameter( parameterName, values ); fail( "Did not forbid " + comment ); } catch (IllegalRequestParameterException e) { } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -