/*
* Copyright 2001-2008 Geert Bevin (gbevin[remove] at uwyn dot com)
* Licensed under the Apache License, Version 2.0 (the "License")
* $Id: TestEngineSubmissions.java 3918 2008-04-14 17:35:35Z gbevin $
*/
package com.uwyn.rife.engine;
import com.meterware.httpunit.Base64;
import com.meterware.httpunit.*;
import com.uwyn.rife.TestCaseServerside;
import com.uwyn.rife.config.Config;
import com.uwyn.rife.config.RifeConfig;
import com.uwyn.rife.engine.exceptions.MultipartFileTooBigException;
import com.uwyn.rife.engine.exceptions.ParameterUnknownException;
import com.uwyn.rife.engine.exceptions.SubmissionUnknownException;
import com.uwyn.rife.engine.testelements.submission.BeanImpl.SerializableParam;
import com.uwyn.rife.resources.ResourceFinderClasspath;
import com.uwyn.rife.template.TemplateFactory;
import com.uwyn.rife.tools.*;
import com.uwyn.rife.tools.exceptions.FileUtilsErrorException;
import com.uwyn.rife.tools.exceptions.InnerClassException;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.InputStream;
import java.io.StringBufferInputStream;
import java.util.HashMap;
import java.util.logging.Formatter;
import java.util.logging.Handler;
import java.util.logging.Logger;
public class TestEngineSubmissions extends TestCaseServerside
{
public TestEngineSubmissions(int siteType, String name)
{
super(siteType, name);
}
public void testContextIndependence()
throws Exception
{
WebConversation conversation = null;
WebRequest request = null;
WebResponse response = null;
setupSite("site/submissions.xml");
conversation = new WebConversation();
request = new PostMethodWebRequest("http://localhost:8181/submissions/valid");
request.setParameter(ReservedParameters.SUBMISSION, "login");
request.setParameter("login", "gbevin");
request.setParameter("password", "mypassword");
request.setParameter("array", new String[] {"1", "3", "4"});
response = conversation.getResponse(request);
assertEquals("gbevin,mypassword,1|3|4", response.getText());
setupSite("/PREFIX", "site/submissions.xml");
conversation = new WebConversation();
request = new PostMethodWebRequest("http://localhost:8181/PREFIX/submissions/valid");
request.setParameter(ReservedParameters.SUBMISSION, "login");
request.setParameter("login", "gbevin");
request.setParameter("password", "mypassword");
request.setParameter("array", new String[] {"1", "3", "4"});
response = conversation.getResponse(request);
assertEquals("gbevin,mypassword,1|3|4", response.getText());
}
public void testParameters()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = new PostMethodWebRequest("http://localhost:8181/submissions/valid");
request.setParameter(ReservedParameters.SUBMISSION, "login");
request.setParameter("login", "gbevin");
request.setParameter("password", "mypassword");
request.setParameter("array", new String[] {"1", "3", "4"});
WebResponse response = conversation.getResponse(request);
assertEquals("gbevin,mypassword,1|3|4", response.getText());
}
public void testParametersRegexp()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = new PostMethodWebRequest("http://localhost:8181/params/regexp");
WebResponse response = null;
request.setParameter(ReservedParameters.SUBMISSION, "login");
request.setParameter("login", "gbevin");
request.setParameter("password", "mypassword");
request.setParameter("array", new String[] {"1", "3", "4"});
request.setParameter("loffin", "gbevin2");
request.setParameter("paword", "mypasswordtoo");
request.setParameter("aray", new String[] {"9", "4", "2"});
response = conversation.getResponse(request);
assertEquals("9|4|2,1|3|4,gbevin2,gbevin,mypassword,mypasswordtoo,mypassword,mypasswordtoo,", response.getText());
}
public void testParametersTyped()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = new PostMethodWebRequest("http://localhost:8181/submissions/typed");
WebResponse response = null;
request.setParameter(ReservedParameters.SUBMISSION, "typed");
request.setParameter("paramstring1", "astring");
request.setParameter("paramint1", ""+Integer.MAX_VALUE);
request.setParameter("paramlong1", ""+Long.MAX_VALUE);
request.setParameter("paramdouble1", "9873434.4334");
request.setParameter("paramfloat1", "23.12");
response = conversation.getResponse(request);
assertEquals("paramstring1:astring"+
"paramstring2:null"+
"paramstring2default:stringdefault"+
"paramint1:"+Integer.MAX_VALUE+
"paramint2:0"+
"paramint2default:123"+
"paramlong1:"+Long.MAX_VALUE+
"paramlong2:0"+
"paramlong2default:983749876"+
"paramdouble1:9873434.4334"+
"paramdouble2:0.0"+
"paramdouble2default:34778.34"+
"paramfloat1:23.12"+
"paramfloat2:0.0"+
"paramfloat2default:324.34", response.getText());
}
public void testParametersTypedInjection()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = new PostMethodWebRequest("http://localhost:8181/submissions/typed_injection");
WebResponse response = null;
request.setParameter(ReservedParameters.SUBMISSION, "typed");
request.setParameter("paramstring1", "astring");
request.setParameter("paramint1", ""+Integer.MAX_VALUE);
request.setParameter("paramlong1", ""+Long.MAX_VALUE);
request.setParameter("paramdouble1", "9873434.4334");
request.setParameter("paramfloat1", "23.12");
request.setParameter("parammultiple", new String [] {"one", "two", "three"});
response = conversation.getResponse(request);
assertEquals("paramstring1:astring"+
"paramstring2:null"+
"paramint1:"+Integer.MAX_VALUE+
"paramint2:378"+
"paramlong1:"+Long.MAX_VALUE+
"paramlong2:0"+
"paramdouble1:9873434.4334"+
"paramdouble2:0.0"+
"paramfloat1:23.12"+
"paramfloat2:0.0"+
"parammultiple:one-two-three", response.getText());
}
public void testParametersTypedMultiple()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = new PostMethodWebRequest("http://localhost:8181/submissions/typed/multiple");
WebResponse response = null;
request.setParameter(ReservedParameters.SUBMISSION, "typed_multiple");
request.setParameter("paramstring", new String [] {"one", "two", "three"});
request.setParameter("paramint", new String [] {String.valueOf(89), "ok", String.valueOf(12), String.valueOf(2), "cracotte", String.valueOf(56)});
request.setParameter("paramlong", new String [] {String.valueOf(4342), String.valueOf(54543), "okko", String.valueOf(3434), "kili", String.valueOf(44342)});
request.setParameter("paramdouble", new String [] {"rokko", String.valueOf(9873434.4334d), String.valueOf(23984.945d), String.valueOf(348900.6534d), String.valueOf(153932.343d), "kirri"});
request.setParameter("paramfloat", new String [] {String.valueOf(432.34f), "ohno", String.valueOf(9234.65f), String.valueOf(2345.98f), "nokki", String.valueOf(633.9f)});
response = conversation.getResponse(request);
assertEquals("paramstring:one,two,three"+
"paramint:89,12,2,56"+
"paramlong:4342,54543,3434,44342"+
"paramdouble:9873434.4334,23984.945,348900.6534,153932.343"+
"paramfloat:432.34,9234.65,2345.98,633.9", response.getText());
}
public void testParametersMissingSubmission()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = new GetMethodWebRequest("http://localhost:8181/submissions/valid");
WebResponse response = null;
request.setParameter("login", "gbevin");
request.setParameter("password", "mypassword");
request.setParameter("array", new String[] {"1", "3", "4"});
response = conversation.getResponse(request);
assertEquals("null,null,null", response.getText());
}
public void testParametersUnknownSubmission()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = new PostMethodWebRequest("http://localhost:8181/submissions/unknown");
try
{
conversation.getResponse(request);
fail();
}
catch (HttpInternalErrorException e)
{
assertTrue(getLogSink().getInternalException() instanceof SubmissionUnknownException);
SubmissionUnknownException e2 = (SubmissionUnknownException)getLogSink().getInternalException();
assertEquals("unknown", e2.getSubmissionName());
assertEquals(e2.getDeclarationName(), "element/submission/unknown.xml");
}
}
public void testParameterDoesntExist()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = new PostMethodWebRequest("http://localhost:8181/submissions/doesntexist");
request.setParameter(ReservedParameters.SUBMISSION, "login");
request.setParameter("login", "gbevin");
request.setParameter("password", "mypassword");
request.setParameter("array", new String[] {"1", "3", "4"});
try
{
conversation.getResponse(request);
fail();
}
catch (HttpInternalErrorException e)
{
assertTrue(getLogSink().getInternalException() instanceof ParameterUnknownException);
ParameterUnknownException e2 = (ParameterUnknownException)getLogSink().getInternalException();
assertEquals("login", e2.getParameterName());
assertEquals(e2.getDeclarationName(), "element/submission/doesntexist.xml");
}
}
public void testParametersUnknown()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = new GetMethodWebRequest("http://localhost:8181/submissions/params_unknown");
request.setParameter("login", "gbevin");
request.setParameter("password", "mypassword");
try
{
conversation.getResponse(request);
fail();
}
catch (HttpInternalErrorException e)
{
assertTrue(getLogSink().getInternalException() instanceof ParameterUnknownException);
ParameterUnknownException e2 = (ParameterUnknownException)getLogSink().getInternalException();
assertEquals("login_unknown", e2.getParameterName());
assertEquals(e2.getDeclarationName(), "element/submission/params_unknown.xml");
}
}
public void testSubmissionMultiple()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = null;
WebResponse response = null;
WebForm form = null;
request = new GetMethodWebRequest("http://localhost:8181/submissions/multiple");
response = conversation.getResponse(request);
form = response.getFormWithName("login");
form.setParameter("login", "gbevin");
form.setParameter("password", "mypassword");
form.setParameter("language", form.getOptionValues("language"));
response = form.submit();
assertEquals("gbevin,mypassword,fr|nl", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/submissions/multiple");
response = conversation.getResponse(request);
form = response.getFormWithName("register");
form.setParameter("login", "gbevin");
form.setParameter("password", "mypassword");
form.setParameter("firstname", "Geert");
form.setParameter("lastname", "Bevin");
response = form.submit();
assertEquals("gbevin,mypassword,Geert,Bevin", response.getText());
}
public void testSubmissionSendGet()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = new GetMethodWebRequest("http://localhost:8181/submissions/sendget");
WebResponse response = conversation.getResponse(request);
WebLink submission_link = response.getLinkWith("submissionlink");
submission_link.click();
response = conversation.getCurrentPage();
assertEquals("gbevin,stillmypassword", response.getText());
}
public void testSubmissionSendPost()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = new GetMethodWebRequest("http://localhost:8181/submissions/sendpost");
WebResponse response = conversation.getResponse(request);
WebForm submission_form = response.getForms()[0];
submission_form.setParameter("login", "gbevin2");
submission_form.setParameter("password", "oncemoremypassword");
response = submission_form.submit();
assertEquals("gbevin2,oncemoremypassword", response.getText());
}
public void testSubmissionSendPostHidden()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = new GetMethodWebRequest("http://localhost:8181/submissions/sendposthidden");
WebResponse response = conversation.getResponse(request);
WebForm submission_form = response.getForms()[0];
submission_form.setParameter("login", "gbevin2");
submission_form.setParameter("password", "oncemoremypassword");
response = submission_form.submit();
assertEquals("gbevin2,oncemoremypassword", response.getText());
}
public void testSubmissionSendGetHidden()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = new GetMethodWebRequest("http://localhost:8181/submissions/sendgethidden");
WebResponse response = conversation.getResponse(request);
WebForm submission_form = response.getForms()[0];
submission_form.setParameter("login", "gbevin2");
submission_form.setParameter("password", "oncemoremypassword");
response = submission_form.submit();
assertEquals("gbevin2,oncemoremypassword", response.getText());
}
public void testSubmissionGeneratedUrl()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = null;
WebResponse response = null;
WebLink submission_link = null;
WebForm submission_form = null;
request = new GetMethodWebRequest("http://localhost:8181/submissions/generatedurl");
response = conversation.getResponse(request);
submission_link = response.getLinkWith("submission1");
submission_link.click();
response = conversation.getCurrentPage();
assertEquals("thevalue", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/submissions/generatedurl");
response = conversation.getResponse(request);
submission_form = response.getForms()[0];
submission_form.setParameter("login", "gbevin2");
response = submission_form.submit();
submission_form = response.getForms()[0];
submission_form.setParameter("password", "oncemoremypassword");
response = submission_form.submit();
assertEquals("gbevin2,oncemoremypassword", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/submissions/generatedurl");
response = conversation.getResponse(request);
submission_form = response.getForms()[1];
response = submission_form.submit();
submission_form = response.getForms()[1];
submission_form.setParameter("login", "me");
response = submission_form.submit();
assertEquals("me,it is", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/submissions/generatedurl");
response = conversation.getResponse(request);
submission_link = response.getLinkWith("submission4");
submission_link.click();
response = conversation.getCurrentPage();
assertEquals("submission4", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/submissions/generatedurl");
response = conversation.getResponse(request);
submission_form = response.getForms()[2];
response = submission_form.submit();
submission_form = response.getForms()[2];
submission_form.setParameter("password", "this pass");
response = submission_form.submit();
assertEquals("one more,this pass", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/submissions/generatedurl");
response = conversation.getResponse(request);
submission_link = response.getLinkWith("submission6");
submission_link.click();
response = conversation.getCurrentPage();
assertEquals("submission6", response.getText());
}
public void testSubmissionGeneratedUrlPathinfo()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = null;
WebResponse response = null;
WebLink submission_link = null;
WebForm submission_form = null;
request = new GetMethodWebRequest("http://localhost:8181/submissions/generatedurlpathinfo");
response = conversation.getResponse(request);
submission_link = response.getLinkWith("submission1");
submission_link.click();
response = conversation.getCurrentPage();
assertEquals("/"+
"thevalue", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/submissions/generatedurlpathinfo");
response = conversation.getResponse(request);
submission_form = response.getForms()[0];
submission_form.setParameter("login", "gbevin2");
response = submission_form.submit();
submission_form = response.getForms()[0];
submission_form.setParameter("password", "oncemoremypassword");
response = submission_form.submit();
assertEquals("/"+
"gbevin2,oncemoremypassword", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/submissions/generatedurlpathinfo");
response = conversation.getResponse(request);
submission_form = response.getForms()[1];
response = submission_form.submit();
submission_form = response.getForms()[1];
submission_form.setParameter("login", "me");
response = submission_form.submit();
assertEquals("/"+
"me,it is", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/submissions/generatedurlpathinfo");
response = conversation.getResponse(request);
submission_link = response.getLinkWith("submission4");
submission_link.click();
response = conversation.getCurrentPage();
assertEquals("/"+
"submission4", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/submissions/generatedurlpathinfo");
response = conversation.getResponse(request);
submission_form = response.getForms()[2];
response = submission_form.submit();
submission_form = response.getForms()[2];
submission_form.setParameter("password", "this pass");
response = submission_form.submit();
assertEquals("/"+
"one more,this pass", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/submissions/generatedurlpathinfo");
response = conversation.getResponse(request);
submission_link = response.getLinkWith("submission6");
submission_link.click();
response = conversation.getCurrentPage();
assertEquals("/"+
"submission6", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/submissions/generatedurlpathinfo/thepathinfo");
response = conversation.getResponse(request);
submission_link = response.getLinkWith("submission1");
submission_link.click();
response = conversation.getCurrentPage();
assertEquals("/thepathinfo"+
"thevalue", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/submissions/generatedurlpathinfo/thepathinfo2");
response = conversation.getResponse(request);
submission_form = response.getForms()[0];
submission_form.setParameter("login", "gbevin2");
response = submission_form.submit();
submission_form = response.getForms()[0];
submission_form.setParameter("password", "oncemoremypassword");
response = submission_form.submit();
assertEquals("/thepathinfo2"+
"gbevin2,oncemoremypassword", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/submissions/generatedurlpathinfo/thepathinfo3");
response = conversation.getResponse(request);
submission_form = response.getForms()[1];
response = submission_form.submit();
submission_form = response.getForms()[1];
submission_form.setParameter("login", "me");
response = submission_form.submit();
assertEquals("/thepathinfo3"+
"me,it is", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/submissions/generatedurlpathinfo/thepathinfo4");
response = conversation.getResponse(request);
submission_link = response.getLinkWith("submission4");
submission_link.click();
response = conversation.getCurrentPage();
assertEquals("/thepathinfo4"+
"submission4", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/submissions/generatedurlpathinfo/thepathinfo5");
response = conversation.getResponse(request);
submission_form = response.getForms()[2];
response = submission_form.submit();
submission_form = response.getForms()[2];
submission_form.setParameter("password", "this pass");
response = submission_form.submit();
assertEquals("/thepathinfo5"+
"one more,this pass", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/submissions/generatedurlpathinfo/thepathinfo6");
response = conversation.getResponse(request);
submission_link = response.getLinkWith("submission6");
submission_link.click();
response = conversation.getCurrentPage();
assertEquals("/thepathinfo6"+
"submission6", response.getText());
}
public void testSubmissionGeneratedUrlOverflow()
throws Exception
{
setupSite("site/submissions.xml");
// setup swallowing log formatters
HashMap<Handler, Formatter> formatters = new HashMap<Handler, Formatter>();
SwallowingLogFormatter formatter = new SwallowingLogFormatter();
Logger logger = Logger.getLogger("");
for (Handler handler : logger.getHandlers())
{
formatters.put(handler, handler.getFormatter());
handler.setFormatter(formatter);
}
try
{
WebConversation conversation = new WebConversation();
WebRequest request = null;
WebResponse response = null;
WebLink submission_link = null;
request = new GetMethodWebRequest("http://localhost:8181/submissions/generatedurloverflow");
response = conversation.getResponse(request);
submission_link = response.getLinkWith("submission1");
submission_link.click();
response = conversation.getCurrentPage();
assertEquals(StringUtils.repeat("abcdefghijklmnopqrstuvwxyz", 74)+"01234567890", response.getText());
assertEquals(1, formatter.getRecords().size());
assertEquals("The submission 'submission1' of element '.GENERATEDURLOVERFLOW' generated an URL whose length of 2049 exceeds the maximum length of 2048 bytes, using session state store instead. The generated URL was '/submissions/generatedurloverflow?submission=submission1¶meter="+StringUtils.repeat("abcdefghijklmnopqrstuvwxyz", 74)+"01234567890"+"&submissioncontext=LkdFTkVSQVRFRFVSTE9WRVJGTE9X'.", formatter.getRecords().get(0).getMessage());
}
finally
{
// restore the previous formatters
for (Handler handler : logger.getHandlers())
{
handler.setFormatter(formatters.get(handler));
}
}
}
public void testSubmissionInputsPreserved()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = null;
WebResponse response = null;
WebLink submission_link = null;
WebForm submission_form = null;
request = new GetMethodWebRequest("http://localhost:8181/submissions/inputspreserved");
request.setParameter("input1", "submission1input1value");
request.setParameter("input4", "submission1input4value");
response = conversation.getResponse(request);
submission_link = response.getLinkWith("submission1");
String url = submission_link.getURLString();
request = new GetMethodWebRequest("http://localhost:8181"+url);
response = conversation.getResponse(request);
assertEquals("thevalue"+
"submission1input1value"+
"null"+
"input3default", response.getText());
request = new GetMethodWebRequest("http://localhost:8181"+url+"&input1=submission1input1overriddenvalue");
response = conversation.getResponse(request);
assertEquals("thevalue"+
"submission1input1value"+
"null"+
"input3default", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/submissions/inputspreserved");
request.setParameter("input1", "submission2input1value");
request.setParameter("input4", "submission2input4value");
response = conversation.getResponse(request);
submission_form = response.getForms()[0];
submission_form.setParameter("login", "gbevin2");
response = submission_form.submit();
submission_form = response.getForms()[0];
submission_form.setParameter("password", "oncemoremypassword");
response = submission_form.submit();
assertEquals("gbevin2,oncemoremypassword"+
"submission2input1value"+
"null"+
"input3default", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/submissions/inputspreserved");
request.setParameter("input1", "submission3input1value");
request.setParameter("input4", "submission3input4value");
response = conversation.getResponse(request);
submission_form = response.getForms()[1];
response = submission_form.submit();
submission_form = response.getForms()[1];
submission_form.setParameter("login", "me");
response = submission_form.submit();
assertEquals("me,it is"+
"submission3input1value"+
"null"+
"input3default", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/submissions/inputspreserved");
request.setParameter("input1", "submission4input1value");
request.setParameter("input4", "submission4input4value");
response = conversation.getResponse(request);
submission_link = response.getLinkWith("submission4");
url = submission_link.getURLString();
request = new GetMethodWebRequest("http://localhost:8181"+url);
response = conversation.getResponse(request);
assertEquals("submission4"+
"submission4input1value"+
"null"+
"input3default", response.getText());
request = new GetMethodWebRequest("http://localhost:8181"+url+"&input1=submission4input1overriddenvalue");
response = conversation.getResponse(request);
assertEquals("submission4"+
"submission4input1value"+
"null"+
"input3default", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/submissions/inputspreserved");
request.setParameter("input1", "submission5input1value");
request.setParameter("input4", "submission5input4value");
response = conversation.getResponse(request);
submission_form = response.getForms()[2];
response = submission_form.submit();
submission_form = response.getForms()[2];
submission_form.setParameter("password", "this pass");
response = submission_form.submit();
assertEquals("one more,this pass"+
"submission5input1value"+
"null"+
"input3default", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/submissions/inputspreserved");
request.setParameter("input1", "submission6input1value");
request.setParameter("input4", "submission6input4value");
response = conversation.getResponse(request);
submission_link = response.getLinkWith("submission6");
url = submission_link.getURLString();
request = new GetMethodWebRequest("http://localhost:8181"+url);
response = conversation.getResponse(request);
assertEquals("submission6"+
"submission6input1value"+
"null"+
"input3default", response.getText());
request = new GetMethodWebRequest("http://localhost:8181"+url+"&input1=submission6input1overriddenvalue");
response = conversation.getResponse(request);
assertEquals("submission6"+
"submission6input1value"+
"null"+
"input3default", response.getText());
}
public void testSubmissionBean()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = new GetMethodWebRequest("http://localhost:8181/submissions/bean/normal");
WebResponse response = null;
WebForm form = null;
response = conversation.getResponse(request);
form = response.getFormWithName("submissionform");
request = form.getRequest();
request.setParameter("enum", "WEDNESDAY");
request.setParameter("string", "the string");
request.setParameter("boolean", "y");
request.setParameter("string", "the string");
request.setParameter("stringbuffer", "the stringbuffer");
request.setParameter("int", "23154");
request.setParameter("integer", "893749");
request.setParameter("char", "u");
request.setParameter("character", "R");
request.setParameter("boolean", "y");
request.setParameter("booleanObject", "no");
request.setParameter("byte", "120");
request.setParameter("byteObject", "21");
request.setParameter("double", "34878.34");
request.setParameter("doubleObject", "25435.98");
request.setParameter("float", "3434.76");
request.setParameter("floatObject", "6534.8");
request.setParameter("long", "34347897");
request.setParameter("longObject", "2335454");
request.setParameter("short", "32");
request.setParameter("shortObject", "12");
request.setParameter("date", "2005-08-20 09:44");
request.setParameter("dateFormatted", "Sat 20 Aug 2005 09:44:00");
request.setParameter("datesFormatted", new String[] {"Sun 21 Aug 2005 11:06:14", "Mon 17 Jul 2006 16:05:31"});
request.setParameter("serializableParam", SerializationUtils.serializeToString(new SerializableParam(13, "Thirteen")));
request.setParameter("serializableParams", new String[] {SerializationUtils.serializeToString(new SerializableParam(9, "Nine")),SerializationUtils.serializeToString(new SerializableParam(91, "NinetyOne"))});
request.selectFile("stringFile", "somedesign.html", new StringBufferInputStream("this is some html content"), "text/html");
byte[] image_bytes = ResourceFinderClasspath.getInstance().useStream("uwyn.png", new InputStreamUser() {
public Object useInputStream(InputStream stream) throws InnerClassException
{
try
{
return FileUtils.readBytes(stream);
}
catch (FileUtilsErrorException e)
{
throwException(e);
}
return null;
}
});
request.selectFile("bytesFile", "someimage.png", new ByteArrayInputStream(image_bytes), "image/png");
request.selectFile("streamFile", "somefile.png", new ByteArrayInputStream(image_bytes), null);
response = conversation.getResponse(request);
assertEquals("WEDNESDAY,the string,the stringbuffer,23154,893749,u,null,true,false,0,21,34878.34,25435.98,3434.76,6534.8,34347897,2335454,32,12,this is some html content,true,someimage.png,true,Sat 20 Aug 2005 09:44:00,Sun 21 Aug 2005 11:06:14,Mon 17 Jul 2006 16:05:31,13:Thirteen,9:Nine,91:NinetyOne", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/submissions/bean/normal");
response = conversation.getResponse(request);
form = response.getFormWithName("submissionform");
request = form.getRequest();
request.setParameter("enum", "invalid");
request.setParameter("string", "the string");
request.setParameter("boolean", "y");
request.setParameter("string", "the string");
request.setParameter("stringbuffer", "the stringbuffer");
request.setParameter("int", "23fd33");
request.setParameter("char", "u");
request.setParameter("character", "R");
request.setParameter("boolean", "y");
request.setParameter("booleanObject", "no");
request.setParameter("byte", "120");
request.setParameter("byteObject", "21");
request.setParameter("double", "zef.34");
request.setParameter("doubleObject", "25435.98");
request.setParameter("float", "3434.76");
request.setParameter("floatObject", "6534.8");
request.setParameter("long", "34347897");
request.setParameter("longObject", "233f5454");
request.setParameter("short", "32");
request.setParameter("shortObject", "");
request.setParameter("datesFormatted", new String[] {"Sun 21 Aug 2005 11:06:14", "Mon 18 Jul 2006 16:05:31"});
request.setParameter("serializableParam", "invalid");
request.setParameter("serializableParams", new String[] {"invalid", SerializationUtils.serializeToString(new SerializableParam(91, "NinetyOne"))});
response = conversation.getResponse(request);
assertEquals("INVALID : datesFormatted\nNOTNUMERIC : double\nINVALID : enum\nNOTNUMERIC : int\nNOTNUMERIC : longObject\nINVALID : serializableParam\nINVALID : serializableParams\nnull,the string,the stringbuffer,0,null,u,null,true,false,0,21,0.0,25435.98,3434.76,6534.8,34347897,null,32,null,null,null,null,null,null,Sun 21 Aug 2005 11:06:14,null,null,null,91:NinetyOne", response.getText());
}
public void testSubmissionBeanPrefix()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = new GetMethodWebRequest("http://localhost:8181/submissions/bean/prefix");
WebResponse response = null;
WebForm form = null;
response = conversation.getResponse(request);
form = response.getFormWithName("submissionform");
request = form.getRequest();
request.setParameter(ReservedParameters.SUBMISSION, "bean");
request.setParameter("prefix_enum", "MONDAY");
request.setParameter("prefix_string", "the string");
request.setParameter("prefix_boolean", "y");
request.setParameter("prefix_string", "the string");
request.setParameter("prefix_stringbuffer", "the stringbuffer");
request.setParameter("prefix_int", "23154");
request.setParameter("prefix_integer", "893749");
request.setParameter("prefix_char", "u");
request.setParameter("prefix_character", "R");
request.setParameter("prefix_boolean", "y");
request.setParameter("prefix_booleanObject", "no");
request.setParameter("prefix_byte", "120");
request.setParameter("prefix_byteObject", "21");
request.setParameter("prefix_double", "34878.34");
request.setParameter("prefix_doubleObject", "25435.98");
request.setParameter("prefix_float", "3434.76");
request.setParameter("prefix_floatObject", "6534.8");
request.setParameter("prefix_long", "34347897");
request.setParameter("prefix_longObject", "2335454");
request.setParameter("prefix_short", "32");
request.setParameter("prefix_shortObject", "12");
request.setParameter("prefix_date", "2005-08-20 09:44");
request.setParameter("prefix_dateFormatted", "Sat 20 Aug 2005 09:44:00");
request.setParameter("prefix_datesFormatted", new String[] {"Sun 21 Aug 2005 11:06:14", "Mon 17 Jul 2006 16:05:31"});
request.setParameter("prefix_serializableParam", SerializationUtils.serializeToString(new SerializableParam(13, "Thirteen")));
request.setParameter("prefix_serializableParams", new String[] {SerializationUtils.serializeToString(new SerializableParam(9, "Nine")),SerializationUtils.serializeToString(new SerializableParam(91, "NinetyOne"))});
request.selectFile("prefix_stringFile", "somedesign.html", new StringBufferInputStream("this is some html content"), "text/html");
byte[] image_bytes = ResourceFinderClasspath.getInstance().useStream("uwyn.png", new InputStreamUser() {
public Object useInputStream(InputStream stream) throws InnerClassException
{
try
{
return FileUtils.readBytes(stream);
}
catch (FileUtilsErrorException e)
{
throwException(e);
}
return null;
}
});
request.selectFile("prefix_bytesFile", "someimage.png", new ByteArrayInputStream(image_bytes), "image/png");
request.selectFile("prefix_streamFile", "somefile.png", new ByteArrayInputStream(image_bytes), null);
response = conversation.getResponse(request);
assertEquals("MONDAY,the string,the stringbuffer,23154,893749,u,null,true,false,0,21,34878.34,25435.98,3434.76,6534.8,34347897,2335454,32,12,this is some html content,true,someimage.png,true,Sat 20 Aug 2005 09:44:00,Sun 21 Aug 2005 11:06:14,Mon 17 Jul 2006 16:05:31,13:Thirteen,9:Nine,91:NinetyOne", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/submissions/bean/prefix");
response = conversation.getResponse(request);
form = response.getFormWithName("submissionform");
request = form.getRequest();
request.setParameter("prefix_enum", "invalid");
request.setParameter("prefix_string", "the string");
request.setParameter("prefix_boolean", "y");
request.setParameter("prefix_string", "the string");
request.setParameter("prefix_stringbuffer", "the stringbuffer");
request.setParameter("prefix_int", "23fd33");
request.setParameter("prefix_char", "u");
request.setParameter("prefix_character", "R");
request.setParameter("prefix_boolean", "y");
request.setParameter("prefix_booleanObject", "no");
request.setParameter("prefix_byte", "120");
request.setParameter("prefix_byteObject", "21");
request.setParameter("prefix_double", "zef.34");
request.setParameter("prefix_doubleObject", "25435.98");
request.setParameter("prefix_float", "3434.76");
request.setParameter("prefix_floatObject", "6534.8");
request.setParameter("prefix_long", "34347897");
request.setParameter("prefix_longObject", "233f5454");
request.setParameter("prefix_short", "32");
request.setParameter("prefix_shortObject", "");
request.setParameter("prefix_datesFormatted", new String[] {"Sun 21 Aug 2005 11:06:14", "Mon 18 Jul 2006 16:05:31"});
request.setParameter("prefix_serializableParam", "invalid");
request.setParameter("prefix_serializableParams", new String[] {"invalid", SerializationUtils.serializeToString(new SerializableParam(91, "NinetyOne"))});
response = conversation.getResponse(request);
assertEquals("INVALID : datesFormatted\nNOTNUMERIC : double\nINVALID : enum\nNOTNUMERIC : int\nNOTNUMERIC : longObject\nINVALID : serializableParam\nINVALID : serializableParams\nnull,the string,the stringbuffer,0,null,u,null,true,false,0,21,0.0,25435.98,3434.76,6534.8,34347897,null,32,null,null,null,null,null,null,Sun 21 Aug 2005 11:06:14,null,null,null,91:NinetyOne", response.getText());
}
public void testNamedSubmissionBean()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = new PostMethodWebRequest("http://localhost:8181/submissions/named_bean/normal");
request.setParameter(ReservedParameters.SUBMISSION, "bean");
request.setParameter("enum", "SATURDAY");
request.setParameter("string", "the string");
request.setParameter("boolean", "y");
request.setParameter("string", "the string");
request.setParameter("stringbuffer", "the stringbuffer");
request.setParameter("int", "23154");
request.setParameter("integer", "893749");
request.setParameter("char", "u");
request.setParameter("character", "R");
request.setParameter("boolean", "y");
request.setParameter("booleanObject", "no");
request.setParameter("byte", "120");
request.setParameter("byteObject", "21");
request.setParameter("double", "34878.34");
request.setParameter("doubleObject", "25435.98");
request.setParameter("float", "3434.76");
request.setParameter("floatObject", "6534.8");
request.setParameter("long", "34347897");
request.setParameter("longObject", "2335454");
request.setParameter("short", "32");
request.setParameter("shortObject", "12");
WebResponse response = conversation.getResponse(request);
assertEquals("SATURDAY,the string,the stringbuffer,23154,893749,u,null,true,false,0,21,34878.34,25435.98,3434.76,6534.8,34347897,2335454,32,12", response.getText());
request = new PostMethodWebRequest("http://localhost:8181/submissions/named_bean/normal");
request.setParameter(ReservedParameters.SUBMISSION, "bean");
request.setParameter("enum", "invalid");
request.setParameter("string", "the string");
request.setParameter("boolean", "y");
request.setParameter("string", "the string");
request.setParameter("stringbuffer", "the stringbuffer");
request.setParameter("int", "23fd33");
request.setParameter("char", "u");
request.setParameter("character", "R");
request.setParameter("boolean", "y");
request.setParameter("booleanObject", "no");
request.setParameter("byte", "120");
request.setParameter("byteObject", "21");
request.setParameter("double", "zef.34");
request.setParameter("doubleObject", "25435.98");
request.setParameter("float", "3434.76");
request.setParameter("floatObject", "6534.8");
request.setParameter("long", "34347897");
request.setParameter("longObject", "233f5454");
request.setParameter("short", "32");
request.setParameter("shortObject", "");
response = conversation.getResponse(request);
assertEquals("NOTNUMERIC : double\nINVALID : enum\nNOTNUMERIC : int\nNOTNUMERIC : longObject\nnull,the string,the stringbuffer,0,null,u,null,true,false,0,21,0.0,25435.98,3434.76,6534.8,34347897,null,32,null", response.getText());
}
public void testNamedSubmissionBeanPrefix()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = new PostMethodWebRequest("http://localhost:8181/submissions/named_bean/prefix");
request.setParameter(ReservedParameters.SUBMISSION, "bean");
request.setParameter("prefix_enum", "TUESDAY");
request.setParameter("prefix_string", "the string");
request.setParameter("prefix_boolean", "y");
request.setParameter("prefix_string", "the string");
request.setParameter("prefix_stringbuffer", "the stringbuffer");
request.setParameter("prefix_int", "23154");
request.setParameter("prefix_integer", "893749");
request.setParameter("prefix_char", "u");
request.setParameter("prefix_character", "R");
request.setParameter("prefix_boolean", "y");
request.setParameter("prefix_booleanObject", "no");
request.setParameter("prefix_byte", "120");
request.setParameter("prefix_byteObject", "21");
request.setParameter("prefix_double", "34878.34");
request.setParameter("prefix_doubleObject", "25435.98");
request.setParameter("prefix_float", "3434.76");
request.setParameter("prefix_floatObject", "6534.8");
request.setParameter("prefix_long", "34347897");
request.setParameter("prefix_longObject", "2335454");
request.setParameter("prefix_short", "32");
request.setParameter("prefix_shortObject", "12");
WebResponse response = conversation.getResponse(request);
assertEquals("TUESDAY,the string,the stringbuffer,23154,893749,u,null,true,false,0,21,34878.34,25435.98,3434.76,6534.8,34347897,2335454,32,12", response.getText());
request = new PostMethodWebRequest("http://localhost:8181/submissions/named_bean/prefix");
request.setParameter(ReservedParameters.SUBMISSION, "bean");
request.setParameter("prefix_enum", "invalid");
request.setParameter("prefix_string", "the string");
request.setParameter("prefix_boolean", "y");
request.setParameter("prefix_string", "the string");
request.setParameter("prefix_stringbuffer", "the stringbuffer");
request.setParameter("prefix_int", "23fd33");
request.setParameter("prefix_char", "u");
request.setParameter("prefix_character", "R");
request.setParameter("prefix_boolean", "y");
request.setParameter("prefix_booleanObject", "no");
request.setParameter("prefix_byte", "120");
request.setParameter("prefix_byteObject", "21");
request.setParameter("prefix_double", "zef.34");
request.setParameter("prefix_doubleObject", "25435.98");
request.setParameter("prefix_float", "3434.76");
request.setParameter("prefix_floatObject", "6534.8");
request.setParameter("prefix_long", "34347897");
request.setParameter("prefix_longObject", "233f5454");
request.setParameter("prefix_short", "32");
request.setParameter("prefix_shortObject", "");
response = conversation.getResponse(request);
assertEquals("NOTNUMERIC : double\nINVALID : enum\nNOTNUMERIC : int\nNOTNUMERIC : longObject\nnull,the string,the stringbuffer,0,null,u,null,true,false,0,21,0.0,25435.98,3434.76,6534.8,34347897,null,32,null", response.getText());
}
public void testNamedSubmissionBeanInjection()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = new PostMethodWebRequest("http://localhost:8181/submissions/named_bean/normal/injection");
request.setParameter(ReservedParameters.SUBMISSION, "bean");
request.setParameter("enum", "THURSDAY");
request.setParameter("string", "the string");
request.setParameter("boolean", "y");
request.setParameter("string", "the string");
request.setParameter("stringbuffer", "the stringbuffer");
request.setParameter("int", "23154");
request.setParameter("integer", "893749");
request.setParameter("char", "u");
request.setParameter("character", "R");
request.setParameter("boolean", "y");
request.setParameter("booleanObject", "no");
request.setParameter("byte", "120");
request.setParameter("byteObject", "21");
request.setParameter("double", "34878.34");
request.setParameter("doubleObject", "25435.98");
request.setParameter("float", "3434.76");
request.setParameter("floatObject", "6534.8");
request.setParameter("long", "34347897");
request.setParameter("longObject", "2335454");
request.setParameter("short", "32");
request.setParameter("shortObject", "12");
WebResponse response = conversation.getResponse(request);
assertEquals("THURSDAY,the string,the stringbuffer,23154,893749,u,null,true,false,0,21,34878.34,25435.98,3434.76,6534.8,34347897,2335454,32,12", response.getText());
request = new PostMethodWebRequest("http://localhost:8181/submissions/named_bean/normal/injection");
request.setParameter(ReservedParameters.SUBMISSION, "bean");
request.setParameter("enum", "invalid");
request.setParameter("string", "the string");
request.setParameter("boolean", "y");
request.setParameter("string", "the string");
request.setParameter("stringbuffer", "the stringbuffer");
request.setParameter("int", "23fd33");
request.setParameter("char", "u");
request.setParameter("character", "R");
request.setParameter("boolean", "y");
request.setParameter("booleanObject", "no");
request.setParameter("byte", "120");
request.setParameter("byteObject", "21");
request.setParameter("double", "zef.34");
request.setParameter("doubleObject", "25435.98");
request.setParameter("float", "3434.76");
request.setParameter("floatObject", "6534.8");
request.setParameter("long", "34347897");
request.setParameter("longObject", "233f5454");
request.setParameter("short", "32");
request.setParameter("shortObject", "");
response = conversation.getResponse(request);
assertEquals("NOTNUMERIC : double\nINVALID : enum\nNOTNUMERIC : int\nNOTNUMERIC : longObject\nnull,the string,the stringbuffer,0,null,u,null,true,false,0,21,0.0,25435.98,3434.76,6534.8,34347897,null,32,null", response.getText());
}
public void testNamedSubmissionBeanPrefixInjection()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = new PostMethodWebRequest("http://localhost:8181/submissions/named_bean/prefix/injection");
request.setParameter(ReservedParameters.SUBMISSION, "bean");
request.setParameter("prefix_enum", "TUESDAY");
request.setParameter("prefix_string", "the string");
request.setParameter("prefix_boolean", "y");
request.setParameter("prefix_string", "the string");
request.setParameter("prefix_stringbuffer", "the stringbuffer");
request.setParameter("prefix_int", "23154");
request.setParameter("prefix_integer", "893749");
request.setParameter("prefix_char", "u");
request.setParameter("prefix_character", "R");
request.setParameter("prefix_boolean", "y");
request.setParameter("prefix_booleanObject", "no");
request.setParameter("prefix_byte", "120");
request.setParameter("prefix_byteObject", "21");
request.setParameter("prefix_double", "34878.34");
request.setParameter("prefix_doubleObject", "25435.98");
request.setParameter("prefix_float", "3434.76");
request.setParameter("prefix_floatObject", "6534.8");
request.setParameter("prefix_long", "34347897");
request.setParameter("prefix_longObject", "2335454");
request.setParameter("prefix_short", "32");
request.setParameter("prefix_shortObject", "12");
WebResponse response = conversation.getResponse(request);
assertEquals("TUESDAY,the string,the stringbuffer,23154,893749,u,null,true,false,0,21,34878.34,25435.98,3434.76,6534.8,34347897,2335454,32,12", response.getText());
request = new PostMethodWebRequest("http://localhost:8181/submissions/named_bean/prefix/injection");
request.setParameter(ReservedParameters.SUBMISSION, "bean");
request.setParameter("prefix_enum", "invalid");
request.setParameter("prefix_string", "the string");
request.setParameter("prefix_boolean", "y");
request.setParameter("prefix_string", "the string");
request.setParameter("prefix_stringbuffer", "the stringbuffer");
request.setParameter("prefix_int", "23fd33");
request.setParameter("prefix_char", "u");
request.setParameter("prefix_character", "R");
request.setParameter("prefix_boolean", "y");
request.setParameter("prefix_booleanObject", "no");
request.setParameter("prefix_byte", "120");
request.setParameter("prefix_byteObject", "21");
request.setParameter("prefix_double", "zef.34");
request.setParameter("prefix_doubleObject", "25435.98");
request.setParameter("prefix_float", "3434.76");
request.setParameter("prefix_floatObject", "6534.8");
request.setParameter("prefix_long", "34347897");
request.setParameter("prefix_longObject", "233f5454");
request.setParameter("prefix_short", "32");
request.setParameter("prefix_shortObject", "");
response = conversation.getResponse(request);
assertEquals("NOTNUMERIC : double\nINVALID : enum\nNOTNUMERIC : int\nNOTNUMERIC : longObject\nnull,the string,the stringbuffer,0,null,u,null,true,false,0,21,0.0,25435.98,3434.76,6534.8,34347897,null,32,null", response.getText());
}
public void testSubmissionFillBean()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = new GetMethodWebRequest("http://localhost:8181/submissions/fill/bean/normal");
WebResponse response = null;
WebForm form = null;
response = conversation.getResponse(request);
form = response.getFormWithName("submissionform");
request = form.getRequest();
request.setParameter("enum", "MONDAY");
request.setParameter("string", "the string");
request.setParameter("boolean", "y");
request.setParameter("string", "the string");
request.setParameter("stringbuffer", "the stringbuffer");
request.setParameter("int", "23154");
request.setParameter("integer", "893749");
request.setParameter("char", "u");
request.setParameter("character", "R");
request.setParameter("boolean", "y");
request.setParameter("booleanObject", "no");
request.setParameter("byte", "120");
request.setParameter("byteObject", "21");
request.setParameter("double", "34878.34");
request.setParameter("doubleObject", "25435.98");
request.setParameter("float", "3434.76");
request.setParameter("floatObject", "6534.8");
request.setParameter("long", "34347897");
request.setParameter("longObject", "2335454");
request.setParameter("short", "32");
request.setParameter("shortObject", "12");
request.selectFile("stringFile", "somedesign.html", new StringBufferInputStream("this is some html content"), "text/html");
byte[] image_bytes = ResourceFinderClasspath.getInstance().useStream("uwyn.png", new InputStreamUser() {
public Object useInputStream(InputStream stream) throws InnerClassException
{
try
{
return FileUtils.readBytes(stream);
}
catch (FileUtilsErrorException e)
{
throwException(e);
}
return null;
}
});
request.selectFile("bytesFile", "someimage.png", new ByteArrayInputStream(image_bytes), "image/png");
request.selectFile("streamFile", "somefile.png", new ByteArrayInputStream(image_bytes), null);
response = conversation.getResponse(request);
assertEquals("MONDAY,the string,the stringbuffer,23154,893749,u,b,true,false,22,21,34878.34,25435.98,3434.76,6534.8,34347897,2335454,32,12,this is some html content,true,someimage.png,true", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/submissions/fill/bean/normal");
response = conversation.getResponse(request);
form = response.getFormWithName("submissionform");
request = form.getRequest();
request.setParameter("enum", "invalid");
request.setParameter("string", "the string");
request.setParameter("boolean", "y");
request.setParameter("string", "the string");
request.setParameter("stringbuffer", "the stringbuffer");
request.setParameter("int", "23fd33");
request.setParameter("char", "u");
request.setParameter("character", "R");
request.setParameter("boolean", "y");
request.setParameter("booleanObject", "no");
request.setParameter("byte", "120");
request.setParameter("byteObject", "21");
request.setParameter("double", "zef.34");
request.setParameter("doubleObject", "25435.98");
request.setParameter("float", "3434.76");
request.setParameter("floatObject", "6534.8");
request.setParameter("long", "34347897");
request.setParameter("longObject", "233f5454");
request.setParameter("short", "32");
request.setParameter("shortObject", "");
response = conversation.getResponse(request);
assertEquals("NOTNUMERIC : double\nINVALID : enum\nNOTNUMERIC : int\nNOTNUMERIC : longObject\nnull,the string,the stringbuffer,999,null,u,b,true,false,22,21,123.45,25435.98,3434.76,6534.8,34347897,55,32,null,stringFile,false,null,false", response.getText());
}
public void testSubmissionFillBeanGroup()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = new GetMethodWebRequest("http://localhost:8181/submissions/fill/bean/group");
WebResponse response = null;
WebForm form = null;
response = conversation.getResponse(request);
form = response.getFormWithName("submissionform");
request = form.getRequest();
request.setParameter("enum", "SUNDAY");
request.setParameter("string", "the string");
request.setParameter("boolean", "y");
request.setParameter("string", "the string");
request.setParameter("stringbuffer", "the stringbuffer");
request.setParameter("int", "23154");
request.setParameter("integer", "893749");
request.setParameter("char", "u");
request.setParameter("character", "R");
request.setParameter("boolean", "y");
request.setParameter("booleanObject", "no");
request.setParameter("byte", "120");
request.setParameter("byteObject", "21");
request.setParameter("double", "34878.34");
request.setParameter("doubleObject", "25435.98");
request.setParameter("float", "3434.76");
request.setParameter("floatObject", "6534.8");
request.setParameter("long", "34347897");
request.setParameter("longObject", "2335454");
request.setParameter("short", "32");
request.setParameter("shortObject", "12");
request.selectFile("stringFile", "somedesign.html", new StringBufferInputStream("this is some html content"), "text/html");
byte[] image_bytes = ResourceFinderClasspath.getInstance().useStream("uwyn.png", new InputStreamUser() {
public Object useInputStream(InputStream stream) throws InnerClassException
{
try
{
return FileUtils.readBytes(stream);
}
catch (FileUtilsErrorException e)
{
throwException(e);
}
return null;
}
});
request.selectFile("bytesFile", "someimage.png", new ByteArrayInputStream(image_bytes), "image/png");
request.selectFile("streamFile", "somefile.png", new ByteArrayInputStream(image_bytes), null);
response = conversation.getResponse(request);
assertEquals("SUNDAY,the string,stringbuffer,23154,111,a,b,false,true,22,33,123.45,234.56,321.54,432.65,44,2335454,32,77,stringFile,false,null,false", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/submissions/fill/bean/group");
response = conversation.getResponse(request);
form = response.getFormWithName("submissionform");
request = form.getRequest();
request.setParameter("enum", "invalid");
request.setParameter("string", "the string");
request.setParameter("boolean", "y");
request.setParameter("string", "the string");
request.setParameter("stringbuffer", "the stringbuffer");
request.setParameter("int", "23fd33");
request.setParameter("char", "u");
request.setParameter("character", "R");
request.setParameter("boolean", "y");
request.setParameter("booleanObject", "no");
request.setParameter("byte", "120");
request.setParameter("byteObject", "21");
request.setParameter("double", "zef.34");
request.setParameter("doubleObject", "25435.98");
request.setParameter("float", "3434.76");
request.setParameter("floatObject", "6534.8");
request.setParameter("long", "34347897");
request.setParameter("longObject", "233f5454");
request.setParameter("shortObject", "");
response = conversation.getResponse(request);
assertEquals("NOTNUMERIC : int\nNOTNUMERIC : longObject\nSATURDAY,the string,stringbuffer,999,111,a,b,false,true,22,33,123.45,234.56,321.54,432.65,44,55,-24,77,stringFile,false,null,false", response.getText());
}
public void testParamsGenerated()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = null;
WebResponse response = null;
request = new PostMethodWebRequest("http://localhost:8181/params/generated");
request.setParameter(ReservedParameters.SUBMISSION, "name");
request.setParameter("wantsupdates", "on");
request.setParameter("colors", new String[] {"orange", "blue", "green"});
request.setParameter("firstname", "Geert");
request.setParameter("lastname", "Bevin");
response = conversation.getResponse(request);
assertEquals("Geert, Bevin\n"+
"<input type=\"checkbox\" name=\"wantsupdates\" checked=\"checked\"> I want updates<br />\n"+
"<input type=\"checkbox\" name=\"colors\" value=\"orange\" checked=\"checked\">orange<br />\n"+
"<input type=\"checkbox\" name=\"colors\" value=\"blue\" checked=\"checked\">blue<br />\n"+
"<input type=\"checkbox\" name=\"colors\" value=\"red\">red<br />\n"+
"<input type=\"radio\" name=\"firstname\" checked=\"checked\"> Geert\n"+
"<input type=\"radio\" name=\"firstname\"> Nathalie\n"+
"<select name=\"lastname\">\n"+
"\t<option value=\"Bevin\" selected=\"selected\">Bevin</option>\n"+
"\t<option value=\"Mafessoni\">Mafessoni</option>\n"+
"</select>\n", response.getText());
request = new PostMethodWebRequest("http://localhost:8181/params/generated");
request.setParameter(ReservedParameters.SUBMISSION, "name");
response = conversation.getResponse(request);
assertEquals(", \n"+
"<input type=\"checkbox\" name=\"wantsupdates\"> I want updates<br />\n"+
"<input type=\"checkbox\" name=\"colors\" value=\"orange\">orange<br />\n"+
"<input type=\"checkbox\" name=\"colors\" value=\"blue\">blue<br />\n"+
"<input type=\"checkbox\" name=\"colors\" value=\"red\">red<br />\n"+
"<input type=\"radio\" name=\"firstname\"> Geert\n"+
"<input type=\"radio\" name=\"firstname\"> Nathalie\n"+
"<select name=\"lastname\">\n"+
"\t<option value=\"Bevin\">Bevin</option>\n"+
"\t<option value=\"Mafessoni\">Mafessoni</option>\n"+
"</select>\n", response.getText());
}
public void testFormGenerated()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = null;
WebResponse response = null;
request = new PostMethodWebRequest("http://localhost:8181/form/generated");
request.setParameter(ReservedParameters.SUBMISSION, "form");
response = conversation.getResponse(request);
assertEquals(TemplateFactory.ENGINEHTML.get("formbuilder_fields_out_constrained_empty").getContent(), response.getText());
}
public void testSetSubmissionBean()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = null;
WebResponse response = null;
request = new GetMethodWebRequest("http://localhost:8181/set_submission_bean");
response = conversation.getResponse(request);
assertEquals(", \n"+
"<input type=\"checkbox\" name=\"wantsupdates\"> I want updates<br />\n"+
"<input type=\"checkbox\" name=\"colors\" value=\"orange\">orange<br />\n"+
"<input type=\"checkbox\" name=\"colors\" value=\"blue\">blue<br />\n"+
"<input type=\"checkbox\" name=\"colors\" value=\"red\">red<br />\n"+
"<input type=\"radio\" name=\"firstname\"> Geert\n"+
"<input type=\"radio\" name=\"firstname\"> Nathalie\n"+
"<select name=\"lastname\">\n"+
"\t<option value=\"Bevin\">Bevin</option>\n"+
"\t<option value=\"Mafessoni\">Mafessoni</option>\n"+
"</select>\n", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/set_submission_bean");
request.setParameter("populated", "yes");
response = conversation.getResponse(request);
assertEquals("Geert, Bevin\n"+
"<input type=\"checkbox\" name=\"wantsupdates\" checked=\"checked\"> I want updates<br />\n"+
"<input type=\"checkbox\" name=\"colors\" value=\"orange\" checked=\"checked\">orange<br />\n"+
"<input type=\"checkbox\" name=\"colors\" value=\"blue\">blue<br />\n"+
"<input type=\"checkbox\" name=\"colors\" value=\"red\" checked=\"checked\">red<br />\n"+
"<input type=\"radio\" name=\"firstname\" checked=\"checked\"> Geert\n"+
"<input type=\"radio\" name=\"firstname\"> Nathalie\n"+
"<select name=\"lastname\">\n\t<option value=\"Bevin\" selected=\"selected\">Bevin</option>\n"+
"\t<option value=\"Mafessoni\">Mafessoni</option>\n"+
"</select>\n", response.getText());
}
public void testParamsDefaults()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = new PostMethodWebRequest("http://localhost:8181/params/defaults");
request.setParameter(ReservedParameters.SUBMISSION, "name");
WebResponse response = conversation.getResponse(request);
assertEquals("John|Paul,27,the element config value,", response.getText());
}
public void testFileUploadOmitted()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = null;
WebResponse response = null;
WebForm form = null;
// no file provided
request = new GetMethodWebRequest("http://localhost:8181/fileupload/simple");
response = conversation.getResponse(request);
form = response.getForms()[0];
form.setParameter("purpose", "it will serve you well");
response = form.submit();
assertEquals("no file 1;no file 2;it will serve you well", response.getText());
}
public void testFileUploadEmpty()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = null;
WebResponse response = null;
WebForm form = null;
// empty file provided
request = new GetMethodWebRequest("http://localhost:8181/fileupload/simple");
response = conversation.getResponse(request);
form = response.getForms()[0];
File empty_upload = File.createTempFile("rifetest", ".tmp");
empty_upload.deleteOnExit();
FileUtils.writeString("", empty_upload);
form.setParameter("purpose", "it will serve you well");
UploadFileSpec empty_upload_spec = new UploadFileSpec(empty_upload);
form.setParameter("doc1", new UploadFileSpec[] {empty_upload_spec});
response = form.submit();
assertEquals("empty file 1;no file 2;it will serve you well", response.getText());
empty_upload.delete();
}
public void testFileUploadSingleParam()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = null;
WebResponse response = null;
WebForm form = null;
request = new GetMethodWebRequest("http://localhost:8181/fileupload/simple");
response = conversation.getResponse(request);
form = response.getForms()[0];
String upload_content = "abcdefghijklmnopqrstuvwxyz";
File upload = File.createTempFile("rifetest", ".tmp");
upload.deleteOnExit();
FileUtils.writeString(upload_content, upload);
form.setParameter("purpose", "it will serve you well");
UploadFileSpec upload_spec = new UploadFileSpec(upload);
form.setParameter("doc1", new UploadFileSpec[] {upload_spec});
response = form.submit();
assertEquals(upload_content+";no file 2;it will serve you well", response.getText());
upload.delete();
}
public void testFileUploadInjection()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = null;
WebResponse response = null;
WebForm form = null;
request = new GetMethodWebRequest("http://localhost:8181/fileupload/injection");
response = conversation.getResponse(request);
form = response.getForms()[0];
String upload_content = "abcdefghijklmnopqrstuvwxyz";
File upload = File.createTempFile("rifetest", ".tmp");
upload.deleteOnExit();
FileUtils.writeString(upload_content, upload);
form.setParameter("purpose", "it will serve you well");
UploadFileSpec upload_spec = new UploadFileSpec(upload);
form.setParameter("doc1", new UploadFileSpec[] {upload_spec});
response = form.submit();
assertEquals(upload_content+";it will serve you well", response.getText());
upload.delete();
}
public void testFileUploadMultipleParams()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = null;
WebResponse response = null;
WebForm form = null;
request = new GetMethodWebRequest("http://localhost:8181/fileupload/simple");
response = conversation.getResponse(request);
form = response.getForms()[0];
String upload1_content = "abcdefghijklmnopqrstuvwxyz";
File upload1 = File.createTempFile("rifetest", ".tmp");
String upload2_content = "oiuezroizehfkjsdgfhgizeugfizuhfksjdhfiuzhfiuzehfizeuhfziuh";
File upload2 = File.createTempFile("rifetest", ".tmp");
upload1.deleteOnExit();
FileUtils.writeString(upload1_content, upload1);
upload2.deleteOnExit();
FileUtils.writeString(upload2_content, upload2);
form.setParameter("purpose", "it will serve you well");
UploadFileSpec upload_spec1 = new UploadFileSpec(upload1);
UploadFileSpec upload_spec2 = new UploadFileSpec(upload2);
form.setParameter("doc1", new UploadFileSpec[] {upload_spec1});
form.setParameter("doc2", new UploadFileSpec[] {upload_spec2});
response = form.submit();
assertEquals(upload1_content+";"+upload2_content+";it will serve you well", response.getText());
upload1.delete();
upload2.delete();
}
public void testFileUploadSingleParamMultipleFiles()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = null;
WebResponse response = null;
WebForm form = null;
request = new GetMethodWebRequest("http://localhost:8181/fileupload/simple");
response = conversation.getResponse(request);
form = response.getForms()[0];
String upload1_content = "abcdefghijklmnopqrstuvwxyz";
File upload1 = File.createTempFile("rifetest", ".tmp");
String upload2_content = "oiuezroizehfkjsdgfhgizeugfizuhfksjdhfiuzhfiuzehfizeuhfziuh";
File upload2 = File.createTempFile("rifetest", ".tmp");
upload1.deleteOnExit();
FileUtils.writeString(upload1_content, upload1);
upload2.deleteOnExit();
FileUtils.writeString(upload2_content, upload2);
form.setParameter("purpose", "it will serve you well");
UploadFileSpec upload_spec1 = new UploadFileSpec(upload1);
UploadFileSpec upload_spec2 = new UploadFileSpec(upload2);
form.setParameter("doc1", new UploadFileSpec[] {upload_spec1, upload_spec2});
response = form.submit();
assertEquals(upload1_content+","+upload2_content+";no file 2;it will serve you well", response.getText());
upload1.delete();
upload2.delete();
}
public void testFileUploadRegexp()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = null;
WebResponse response = null;
WebForm form = null;
request = new GetMethodWebRequest("http://localhost:8181/fileupload/regexp");
response = conversation.getResponse(request);
form = response.getForms()[0];
form.setParameter("somefile", new UploadFileSpec[] {new UploadFileSpec("file1.txt", new StringBufferInputStream("file1somefilecontent"), "text/plain")});
form.setParameter("yourdoc1", new UploadFileSpec[] {new UploadFileSpec("file2.txt", new StringBufferInputStream("file2yourdoc1content"), "text/plain")});
form.setParameter("hisdoc1", new UploadFileSpec[] {new UploadFileSpec("file3.txt", new StringBufferInputStream("file3hisdoc1content"), "text/plain")});
form.setParameter("thisdoc2", new UploadFileSpec[] {new UploadFileSpec("file4.txt", new StringBufferInputStream("file4thisdoc2content"), "text/plain")});
response = form.submit();
assertEquals("file1somefilecontent,\nfile3hisdoc1content,file4thisdoc2content,", response.getText());
}
public void testFileUploadSizeLimit()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = null;
WebResponse response = null;
WebForm form = null;
String upload_content_part = "01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567"; // 128 bytes
StringBuffer upload_content = new StringBuffer();
File upload = File.createTempFile("rifetest", ".tmp");
upload.deleteOnExit();
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 8; j++) // 1KB
{
upload_content.append(upload_content_part);
}
}
FileUtils.writeString(upload_content.toString(), upload);
UploadFileSpec upload_spec = null;
// exactly the same size as the limit
Config.getRepInstance().setParameter(RifeConfig.Engine.PARAM_FILEUPLOAD_SIZE_LIMIT, ""+upload_content.length());
request = new GetMethodWebRequest("http://localhost:8181/fileupload/simple");
response = conversation.getResponse(request);
form = response.getForms()[0];
form.setParameter("purpose", "it will serve you well");
upload_spec = new UploadFileSpec(upload);
form.setParameter("doc1", new UploadFileSpec[] {upload_spec});
response = form.submit();
assertEquals(upload_content.toString()+";no file 2;it will serve you well", response.getText());
// exceeding the size by 1
Config.getRepInstance().setParameter(RifeConfig.Engine.PARAM_FILEUPLOAD_SIZE_LIMIT, ""+(upload_content.length()-1));
request = new GetMethodWebRequest("http://localhost:8181/fileupload/simple");
response = conversation.getResponse(request);
form = response.getForms()[0];
// throw no exception when size is exceeded, but don't provide the uploaded file
Config.getRepInstance().setParameter(RifeConfig.Engine.PARAM_FILEUPLOAD_SIZE_EXCEPTION, false);
form.setParameter("purpose", "it will serve you well");
upload_spec = new UploadFileSpec(upload);
form.setParameter("doc1", new UploadFileSpec[] {upload_spec});
response = form.submit();
assertEquals("file 1 size exceeded;no file 2;it will serve you well", response.getText());
// throw exception when size is exceeded
Config.getRepInstance().setParameter(RifeConfig.Engine.PARAM_FILEUPLOAD_SIZE_EXCEPTION, true);
form.setParameter("purpose", "it will serve you well");
upload_spec = new UploadFileSpec(upload);
form.setParameter("doc1", new UploadFileSpec[] {upload_spec});
try
{
response = form.submit();
fail();
}
catch (HttpInternalErrorException e)
{
assertTrue(getLogSink().getInternalException() instanceof MultipartFileTooBigException);
MultipartFileTooBigException e2 = (MultipartFileTooBigException)getLogSink().getInternalException();
assertEquals("doc1", e2.getFileName());
assertEquals(upload_content.length()-1, e2.getSizeLimit());
}
// disable size limit
Config.getRepInstance().setParameter(RifeConfig.Engine.PARAM_FILEUPLOAD_SIZE_CHECK, false);
request = new GetMethodWebRequest("http://localhost:8181/fileupload/simple");
response = conversation.getResponse(request);
form = response.getForms()[0];
form.setParameter("purpose", "it will serve you well");
upload_spec = new UploadFileSpec(upload);
form.setParameter("doc1", new UploadFileSpec[] {upload_spec});
response = form.submit();
upload.delete();
Config.getRepInstance().setParameter(RifeConfig.Engine.PARAM_FILEUPLOAD_SIZE_CHECK, "true");
}
public void testExitActivation()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = new PostMethodWebRequest("http://localhost:8181/exit/source");
request.setParameter(ReservedParameters.SUBMISSION, "activate_exit");
request.setParameter("submitted_value", "the value");
WebResponse response = conversation.getResponse(request);
assertEquals("exit target : the value", response.getText());
}
public void testDifferentSubmissioncontext()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = new PostMethodWebRequest("http://localhost:8181/submissions/valid");
request.setParameter(ReservedParameters.SUBMISSION, "login");
request.setParameter(ReservedParameters.SUBMISSIONCONTEXT, Base64.encode(".VALID"));
request.setParameter("login", "gbevin");
request.setParameter("password", "mypassword");
request.setParameter("array", new String[] {"1", "3", "4"});
WebResponse response = conversation.getResponse(request);
assertEquals("gbevin,mypassword,1|3|4", response.getText());
request = new PostMethodWebRequest("http://localhost:8181/submissions/valid");
request.setParameter(ReservedParameters.SUBMISSION, "login");
request.setParameter(ReservedParameters.SUBMISSIONCONTEXT, Base64.encode(".TYPED^.VALID"));
request.setParameter("login", "gbevin");
request.setParameter("password", "mypassword");
request.setParameter("array", new String[] {"1", "3", "4"});
response = conversation.getResponse(request);
assertEquals("null,null,null", response.getText());
}
public void testInvalidSubmissioncontext()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = new PostMethodWebRequest("http://localhost:8181/submissions/valid");
request.setParameter(ReservedParameters.SUBMISSION, "login");
request.setParameter(ReservedParameters.SUBMISSIONCONTEXT, Base64.encode("129:.9990::PPLM^.VALID"));
request.setParameter("login", "gbevin");
request.setParameter("password", "mypassword");
request.setParameter("array", new String[] {"1", "3", "4"});
WebResponse response = conversation.getResponse(request);
assertEquals("null,null,null", response.getText());
}
public void testDifferentSubmissiontarget()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = new PostMethodWebRequest("http://localhost:8181/submissions/valid");
request.setParameter(ReservedParameters.SUBMISSION, "login");
request.setParameter(ReservedParameters.SUBMISSIONCONTEXT, Base64.encode(".VALID"));
request.setParameter("login", "gbevin");
request.setParameter("password", "mypassword");
request.setParameter("array", new String[] {"1", "3", "4"});
WebResponse response = conversation.getResponse(request);
assertEquals("gbevin,mypassword,1|3|4", response.getText());
request = new PostMethodWebRequest("http://localhost:8181/submissions/valid");
request.setParameter(ReservedParameters.SUBMISSION, "login");
request.setParameter(ReservedParameters.SUBMISSIONCONTEXT, Base64.encode(".VALID^.TYPED"));
request.setParameter("login", "gbevin");
request.setParameter("password", "mypassword");
request.setParameter("array", new String[] {"1", "3", "4"});
response = conversation.getResponse(request);
assertEquals("gbevin,mypassword,1|3|4", response.getText());
}
public void testInvalidSubmissiontarget()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = new PostMethodWebRequest("http://localhost:8181/submissions/valid");
request.setParameter(ReservedParameters.SUBMISSION, "login");
request.setParameter(ReservedParameters.SUBMISSIONCONTEXT, Base64.encode(".VALID^OIJH:98//JHSD::8"));
request.setParameter("login", "gbevin");
request.setParameter("password", "mypassword");
request.setParameter("array", new String[] {"1", "3", "4"});
WebResponse response = conversation.getResponse(request);
assertEquals("gbevin,mypassword,1|3|4", response.getText());
}
public void testNonParamInputsOverlap()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = null;
WebResponse response = null;
// trigger a first submission through direct request parameters with
// inputs, check if it arrived correrctly
request = new GetMethodWebRequest("http://localhost:8181/submissions/inputsnonparam");
request.setParameter("input1", "input1value");
request.setParameter("input4", "input4value");
request.setParameter(ReservedParameters.SUBMISSION, "submission1");
request.setParameter(ReservedParameters.SUBMISSIONCONTEXT, Base64.encode(".INPUTSNONPARAM"));
request.setParameter("parameter1", "parameter1value");
request.setParameter("parameter2", "parameter2value");
response = conversation.getResponse(request);
assertEquals("parameter1value"+
"parameter2value"+
"input1value"+
"null"+
"input3default"+
"<a href=\"/submissions/inputsnonparam?submission=submission1&submissioncontext=LklOUFVUU05PTlBBUkFN&inputs=LklOUFVUU05PTlBBUkFNYwBpbnB1dDFuAGlucHV0MXZhbHVl\">thelink</a>", response.getText());
// extract the link and the inputs parameter to construct a new
// request which makes it possible to check that overlapped inputs
// are still preserved
request = new GetMethodWebRequest("http://localhost:8181/submissions/inputsnonparam");
request.setParameter(ReservedParameters.SUBMISSION, new String[] {"submission1", "submissionoverlap"});
request.setParameter(ReservedParameters.SUBMISSIONCONTEXT, new String[] {Base64.encode(".INPUTSNONPARAM"), Base64.encode(".INPUTSOVERLAP")});
request.setParameter("parameter1", "parameter1value");
request.setParameter("parameter2", "parameter2value");
request.setParameter("input1", "input1value");
request.setParameter("input4", "input4value");
request.setParameter("inputs", response.getLinkWith("thelink").getParameterValues("inputs"));
assertEquals("parameter1value"+
"parameter2value"+
"input1value"+
"null"+
"input3default"+
"<a href=\"/submissions/inputsnonparam?submission=submission1&submissioncontext=LklOUFVUU05PTlBBUkFN&inputs=LklOUFVUU05PTlBBUkFNYwBpbnB1dDFuAGlucHV0MXZhbHVl\">thelink</a>", response.getText());
// check that inputs are not obtained from prohibited request parameters
request = new GetMethodWebRequest("http://localhost:8181/submissions/inputsnonparam");
request.setParameter(ReservedParameters.SUBMISSION, new String[] {"submission1", "submissionoverlap"});
request.setParameter(ReservedParameters.SUBMISSIONCONTEXT, new String[] {Base64.encode(".INPUTSNONPARAM"), Base64.encode(".INPUTSOVERLAP")});
request.setParameter("parameter1", "parameter1value");
request.setParameter("parameter2", "parameter2value");
request.setParameter("input1", "input1value");
request.setParameter("input4", "input4value");
response = conversation.getResponse(request);
assertEquals("parameter1value"+
"parameter2value"+
"null"+
"null"+
"input3default"+
"<a href=\"/submissions/inputsnonparam?submission=submission1&submissioncontext=LklOUFVUU05PTlBBUkFN\">thelink</a>", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/submissions/inputsnonparam");
request.setParameter(ReservedParameters.SUBMISSION, new String[] {"submissionoverlap", "submission1"});
request.setParameter(ReservedParameters.SUBMISSIONCONTEXT, new String[] {Base64.encode(".INPUTSOVERLAP"), Base64.encode(".INPUTSNONPARAM")});
request.setParameter("parameter1", "parameter1value");
request.setParameter("parameter2", "parameter2value");
request.setParameter("input1", "input1value");
request.setParameter("input4", "input4value");
response = conversation.getResponse(request);
assertEquals("parameter1value"+
"parameter2value"+
"null"+
"null"+
"input3default"+
"<a href=\"/submissions/inputsnonparam?submission=submission1&submissioncontext=LklOUFVUU05PTlBBUkFN\">thelink</a>", response.getText());
}
public void testParameterOverlap()
throws Exception
{
setupSite("site/submissions.xml");
WebConversation conversation = new WebConversation();
WebRequest request = new PostMethodWebRequest("http://localhost:8181/submissions/valid");
request.setParameter(ReservedParameters.SUBMISSION, new String[] {"login", "loginoverlap"});
request.setParameter(ReservedParameters.SUBMISSIONCONTEXT, new String[] {Base64.encode(".VALID"), Base64.encode(".PARAMETERSOVERLAP")});
request.setParameter("login", "gbevin");
request.setParameter("password", "mypassword");
request.setParameter("array", new String[] {"1", "3", "4"});
WebResponse response = conversation.getResponse(request);
assertEquals("gbevin,mypassword,1|3|4", response.getText());
}
}