/* * Copyright 2001-2008 Geert Bevin <gbevin[remove] at uwyn dot com> * Licensed under the Apache License, Version 2.0 (the "License") * $Id: TestEngineEmbedding.java 3930 2008-04-24 11:10:22Z gbevin $ */ package com.uwyn.rife.engine; 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.resources.ResourceFinderClasspath; import com.uwyn.rife.test.MockConversation; import com.uwyn.rife.test.MockForm; import com.uwyn.rife.test.MockResponse; import com.uwyn.rife.test.ParsedHtml; import com.uwyn.rife.tools.StringUtils; import java.net.InetAddress; import java.util.List; public class TestEngineEmbedding extends TestCaseServerside { public TestEngineEmbedding(int siteType, String name) { super(siteType, name); } public void testSimple() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; // Get the host name String hostname = InetAddress.getByName("127.0.0.1").getHostName(); request = new GetMethodWebRequest("http://localhost:8181/simple"); response = conversation.getResponse(request); assertEquals("Embedded: false"+ "The element \"Value: null"+ "Embedded: true"+ "Just some text 127.0.0.1:"+hostname+":\" is being embedded.", response.getText()); } public void testValue() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; // Get the host name String hostname = InetAddress.getByName("127.0.0.1").getHostName(); request = new GetMethodWebRequest("http://localhost:8181/value"); response = conversation.getResponse(request); assertEquals("The element \""+ "Value: this is the value"+ "Embedded: true"+ "Just some text 127.0.0.1:"+hostname+":"+ "\" is being embedded.\n"+ "Value: this is the value"+ "Embedded: true"+ "Just some text 127.0.0.1:"+hostname+":"+ "\n"+ "Value: this is another value"+ "Embedded: true"+ "Just some text 127.0.0.1:"+hostname+":"+ "\n"+ "Value: this is the third value"+ "Embedded: true"+ "Just some text 127.0.0.1:"+hostname+":"+ "\n", response.getText()); } public void testData() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; request = new GetMethodWebRequest("http://localhost:8181/data"); response = conversation.getResponse(request); assertEquals("The element \"Data: value1\" is being embedded.\n"+ "Data: value1\n"+ "Data: value2\n"+ "Data: value3\n", response.getText()); } public void testProperties() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; request = new GetMethodWebRequest("http://localhost:8181/properties"); response = conversation.getResponse(request); assertEquals("The element \"Properties"+ "yes"+ "no"+ "else"+ "yeah"+ "null"+ "\" is being embedded.\n", response.getText()); } public void testClearTemplate() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; // Get the host name String hostname = InetAddress.getByName("127.0.0.1").getHostName(); request = new GetMethodWebRequest("http://localhost:8181/clear_template"); response = conversation.getResponse(request); assertEquals("The element \"Value: nullEmbedded: trueJust some text 127.0.0.1:"+hostname+":\" is being embedded."+ "The element \"Value: nullEmbedded: trueJust some text 127.0.0.1:"+hostname+":\" is being embedded.", response.getText()); } public void testSubmission() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; WebForm form = null; request = new GetMethodWebRequest("http://localhost:8181/submission"); response = conversation.getResponse(request); assertEquals("The element \"<form method=\"post\" action=\"/submission/embedded\" name=\"embedded\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "</form>\n\" is being embedded.", response.getText()); form = response.getForms()[0]; form.setParameter("login", "the login"); form.setParameter("password", "its password"); response = form.submit(); assertEquals("the login,its password", response.getText()); } public void testList() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; WebForm form = null; String hostname = InetAddress.getByName("127.0.0.1").getHostName(); request = new GetMethodWebRequest("http://localhost:8181/list"); response = conversation.getResponse(request); assertEquals("Value: null"+"Embedded: true"+"Just some text 127.0.0.1:"+hostname+":\n"+ "<div>0\n"+ "<form method=\"post\" action=\"/list\" name=\"form0\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"changeEntry\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".LIST::engine_embedding_list:.LISTENTRY_EMBEDDED:0^.LISTENTRY_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"value\">\n"+ "<input type=\"submit\" />\n"+ "</form>\n"+ "</div>\n"+ "<div>1\n"+ "<form method=\"post\" action=\"/list\" name=\"form1\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"changeEntry\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".LIST::engine_embedding_list:.LISTENTRY_EMBEDDED:1^.LISTENTRY_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"value\">\n"+ "<input type=\"submit\" />\n"+ "</form>\n"+ "</div>\n"+ "<div>2\n"+ "<form method=\"post\" action=\"/list\" name=\"form2\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"changeEntry\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".LIST::engine_embedding_list:.LISTENTRY_EMBEDDED:2^.LISTENTRY_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"value\">\n"+ "<input type=\"submit\" />\n"+ "</form>\n"+ "</div>\n"+ "<div>3\n"+ "<form method=\"post\" action=\"/list\" name=\"form3\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"changeEntry\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".LIST::engine_embedding_list:.LISTENTRY_EMBEDDED:3^.LISTENTRY_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"value\">\n"+ "<input type=\"submit\" />\n"+ "</form>\n"+ "</div>\n"+ "<div>4\n"+ "<form method=\"post\" action=\"/list\" name=\"form4\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"changeEntry\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".LIST::engine_embedding_list:.LISTENTRY_EMBEDDED:4^.LISTENTRY_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"value\">\n"+ "<input type=\"submit\" />\n"+ "</form>\n"+ "</div>\n"+ "<div>5\n"+ "<form method=\"post\" action=\"/list\" name=\"form5\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"changeEntry\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".LIST::engine_embedding_list:.LISTENTRY_EMBEDDED:5^.LISTENTRY_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"value\">\n"+ "<input type=\"submit\" />\n"+ "</form>\n"+ "</div>\n"+ "<div>6\n"+ "<form method=\"post\" action=\"/list\" name=\"form6\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"changeEntry\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".LIST::engine_embedding_list:.LISTENTRY_EMBEDDED:6^.LISTENTRY_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"value\">\n"+ "<input type=\"submit\" />\n"+ "</form>\n"+ "</div>\n"+ "<div>7\n"+ "<form method=\"post\" action=\"/list\" name=\"form7\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"changeEntry\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".LIST::engine_embedding_list:.LISTENTRY_EMBEDDED:7^.LISTENTRY_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"value\">\n"+ "<input type=\"submit\" />\n"+ "</form>\n"+ "</div>\n"+ "<div>8\n"+ "<form method=\"post\" action=\"/list\" name=\"form8\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"changeEntry\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".LIST::engine_embedding_list:.LISTENTRY_EMBEDDED:8^.LISTENTRY_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"value\">\n"+ "<input type=\"submit\" />\n"+ "</form>\n"+ "</div>\n"+ "<div>9\n"+ "<form method=\"post\" action=\"/list\" name=\"form9\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"changeEntry\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".LIST::engine_embedding_list:.LISTENTRY_EMBEDDED:9^.LISTENTRY_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"value\">\n"+ "<input type=\"submit\" />\n"+ "</form>\n"+ "</div>\n"+ "\n"+ "\n", response.getText()); form = response.getFormWithName("form3"); form.setParameter("value", "formvalue3"); response = form.submit(); assertEquals("Value: null"+"Embedded: true"+"Just some text 127.0.0.1:"+hostname+":\n"+ "<div>0\n"+ "<form method=\"post\" action=\"/list\" name=\"form0\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"changeEntry\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".LIST::engine_embedding_list:.LISTENTRY_EMBEDDED:0^.LISTENTRY_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"value\">\n"+ "<input type=\"submit\" />\n"+ "</form>\n"+ "</div>\n"+ "<div>1\n"+ "<form method=\"post\" action=\"/list\" name=\"form1\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"changeEntry\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".LIST::engine_embedding_list:.LISTENTRY_EMBEDDED:1^.LISTENTRY_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"value\">\n"+ "<input type=\"submit\" />\n"+ "</form>\n"+ "</div>\n"+ "<div>2\n"+ "<form method=\"post\" action=\"/list\" name=\"form2\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"changeEntry\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".LIST::engine_embedding_list:.LISTENTRY_EMBEDDED:2^.LISTENTRY_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"value\">\n"+ "<input type=\"submit\" />\n"+ "</form>\n"+ "</div>\n"+ "<div>3\n"+ "formvalue3</div>\n"+ "<div>4\n"+ "<form method=\"post\" action=\"/list\" name=\"form4\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"changeEntry\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".LIST::engine_embedding_list:.LISTENTRY_EMBEDDED:4^.LISTENTRY_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"value\">\n"+ "<input type=\"submit\" />\n"+ "</form>\n"+ "</div>\n"+ "<div>5\n"+ "<form method=\"post\" action=\"/list\" name=\"form5\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"changeEntry\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".LIST::engine_embedding_list:.LISTENTRY_EMBEDDED:5^.LISTENTRY_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"value\">\n"+ "<input type=\"submit\" />\n"+ "</form>\n"+ "</div>\n"+ "<div>6\n"+ "<form method=\"post\" action=\"/list\" name=\"form6\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"changeEntry\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".LIST::engine_embedding_list:.LISTENTRY_EMBEDDED:6^.LISTENTRY_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"value\">\n"+ "<input type=\"submit\" />\n"+ "</form>\n"+ "</div>\n"+ "<div>7\n"+ "<form method=\"post\" action=\"/list\" name=\"form7\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"changeEntry\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".LIST::engine_embedding_list:.LISTENTRY_EMBEDDED:7^.LISTENTRY_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"value\">\n"+ "<input type=\"submit\" />\n"+ "</form>\n"+ "</div>\n"+ "<div>8\n"+ "<form method=\"post\" action=\"/list\" name=\"form8\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"changeEntry\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".LIST::engine_embedding_list:.LISTENTRY_EMBEDDED:8^.LISTENTRY_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"value\">\n"+ "<input type=\"submit\" />\n"+ "</form>\n"+ "</div>\n"+ "<div>9\n"+ "<form method=\"post\" action=\"/list\" name=\"form9\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"changeEntry\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".LIST::engine_embedding_list:.LISTENTRY_EMBEDDED:9^.LISTENTRY_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"value\">\n"+ "<input type=\"submit\" />\n"+ "</form>\n"+ "</div>\n"+ "\n"+ "\n", response.getText()); form = response.getFormWithName("form7"); form.setParameter("value", "formvalue7"); response = form.submit(); assertEquals("Value: null"+"Embedded: true"+"Just some text 127.0.0.1:"+hostname+":\n"+ "<div>0\n"+ "<form method=\"post\" action=\"/list\" name=\"form0\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"changeEntry\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".LIST::engine_embedding_list:.LISTENTRY_EMBEDDED:0^.LISTENTRY_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"value\">\n"+ "<input type=\"submit\" />\n"+ "</form>\n"+ "</div>\n"+ "<div>1\n"+ "<form method=\"post\" action=\"/list\" name=\"form1\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"changeEntry\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".LIST::engine_embedding_list:.LISTENTRY_EMBEDDED:1^.LISTENTRY_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"value\">\n"+ "<input type=\"submit\" />\n"+ "</form>\n"+ "</div>\n"+ "<div>2\n"+ "<form method=\"post\" action=\"/list\" name=\"form2\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"changeEntry\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".LIST::engine_embedding_list:.LISTENTRY_EMBEDDED:2^.LISTENTRY_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"value\">\n"+ "<input type=\"submit\" />\n"+ "</form>\n"+ "</div>\n"+ "<div>3\n"+ "<form method=\"post\" action=\"/list\" name=\"form3\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"changeEntry\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".LIST::engine_embedding_list:.LISTENTRY_EMBEDDED:3^.LISTENTRY_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"value\">\n"+ "<input type=\"submit\" />\n"+ "</form>\n"+ "</div>\n"+ "<div>4\n"+ "<form method=\"post\" action=\"/list\" name=\"form4\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"changeEntry\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".LIST::engine_embedding_list:.LISTENTRY_EMBEDDED:4^.LISTENTRY_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"value\">\n"+ "<input type=\"submit\" />\n"+ "</form>\n"+ "</div>\n"+ "<div>5\n"+ "<form method=\"post\" action=\"/list\" name=\"form5\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"changeEntry\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".LIST::engine_embedding_list:.LISTENTRY_EMBEDDED:5^.LISTENTRY_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"value\">\n"+ "<input type=\"submit\" />\n"+ "</form>\n"+ "</div>\n"+ "<div>6\n"+ "<form method=\"post\" action=\"/list\" name=\"form6\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"changeEntry\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".LIST::engine_embedding_list:.LISTENTRY_EMBEDDED:6^.LISTENTRY_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"value\">\n"+ "<input type=\"submit\" />\n"+ "</form>\n"+ "</div>\n"+ "<div>7\n"+ "formvalue7</div>\n"+ "<div>8\n"+ "<form method=\"post\" action=\"/list\" name=\"form8\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"changeEntry\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".LIST::engine_embedding_list:.LISTENTRY_EMBEDDED:8^.LISTENTRY_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"value\">\n"+ "<input type=\"submit\" />\n"+ "</form>\n"+ "</div>\n"+ "<div>9\n"+ "<form method=\"post\" action=\"/list\" name=\"form9\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"changeEntry\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".LIST::engine_embedding_list:.LISTENTRY_EMBEDDED:9^.LISTENTRY_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"value\">\n"+ "<input type=\"submit\" />\n"+ "</form>\n"+ "</div>\n"+ "\n"+ "\n", response.getText()); } public void testSubmissionExit() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; WebForm form = null; request = new GetMethodWebRequest("http://localhost:8181/submission_exit"); response = conversation.getResponse(request); assertEquals("The element \"<form method=\"post\" action=\"/submission_exit/embedded\" name=\"embedded\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_EXIT_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "</form>\n\" is being embedded.\n", response.getText()); form = response.getForms()[0]; form.setParameter("login", "the login"); form.setParameter("password", "its password"); response = form.submit(); assertEquals("The element \"<form method=\"post\" action=\"/submission_exit/embedded\" name=\"embedded\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_EXIT_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "</form>\n\" is being embedded here too.\n", response.getText()); } public void testSubmissionExitNourl() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; WebForm form = null; request = new GetMethodWebRequest("http://localhost:8181/submission_exit_nourl"); response = conversation.getResponse(request); assertEquals("The element nourl \"<form method=\"post\" action=\"/submission_exit_nourl\" name=\"embedded\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_EXIT_NOURL::engine_embedding_submission_exit_nourl:.SUBMISSION_EXIT_EMBEDDED_NOURL^.SUBMISSION_EXIT_EMBEDDED_NOURL")+"\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "</form>\n\" is being embedded.\n", response.getText()); form = response.getForms()[0]; form.setParameter("login", "the login"); form.setParameter("password", "its password"); response = form.submit(); assertEquals("The element nourl \"The element \"<form method=\"post\" action=\"/submission_exit/embedded\" name=\"embedded\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_EXIT_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "</form>\n\" is being embedded here too.\n\" is being embedded.\n", response.getText()); } public void testSubmissionExitCancelEmbedding() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; WebForm form = null; request = new GetMethodWebRequest("http://localhost:8181/submission_exit_cancel"); response = conversation.getResponse(request); assertEquals("The element cancel \"<form method=\"post\" action=\"/submission_exit_cancel\" name=\"embedded\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_EXIT_CANCEL::engine_embedding_submission_exit_cancel:.SUBMISSION_EXIT_EMBEDDED_CANCEL^.SUBMISSION_EXIT_EMBEDDED_CANCEL")+"\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "</form>\n\" is being embedded.\n", response.getText()); form = response.getForms()[0]; form.setParameter("login", "the login"); form.setParameter("password", "its password"); response = form.submit(); assertEquals("The element \"<form method=\"post\" action=\"/submission_exit/embedded\" name=\"embedded\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_EXIT_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "</form>\n\" is being embedded here too.\n", response.getText()); } public void testSubmissionNourl() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; WebForm form = null; request = new GetMethodWebRequest("http://localhost:8181/submission_nourl"); response = conversation.getResponse(request); assertEquals("The element \"<form method=\"post\" action=\"/submission_nourl\" name=\"embedded\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_NOURL::engine_embedding_submission_nourl:.SUBMISSION_NOURL_EMBEDDED^.SUBMISSION_NOURL_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "</form>\n\" is being embedded.\n", response.getText()); form = response.getForms()[0]; form.setParameter("login", "the login"); form.setParameter("password", "its password"); response = form.submit(); assertEquals("The element \"the login,its password\" is being embedded.\n", response.getText()); } public void testSubmissionNourlPathinfo() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; WebForm form = null; request = new GetMethodWebRequest("http://localhost:8181/submission_nourl_pathinfo"); response = conversation.getResponse(request); assertEquals("The element \"<form method=\"post\" action=\"/submission_nourl_pathinfo/\" name=\"embedded\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_NOURL_PATHINFO::engine_embedding_submission_nourl_pathinfo:.SUBMISSION_NOURL_PATHINFO_EMBEDDED^.SUBMISSION_NOURL_PATHINFO_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "</form>\n\" is being embedded.\n", response.getText()); form = response.getForms()[0]; form.setParameter("login", "the login"); form.setParameter("password", "its password"); response = form.submit(); assertEquals("The element \"the login,its password\" is being embedded.\n", response.getText()); request = new GetMethodWebRequest("http://localhost:8181/submission_nourl_pathinfo/somepathinfo"); response = conversation.getResponse(request); assertEquals("The element \"<form method=\"post\" action=\"/submission_nourl_pathinfo/somepathinfo\" name=\"embedded\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_NOURL_PATHINFO::engine_embedding_submission_nourl_pathinfo:.SUBMISSION_NOURL_PATHINFO_EMBEDDED^.SUBMISSION_NOURL_PATHINFO_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "</form>\n\" is being embedded.\n", response.getText()); form = response.getForms()[0]; form.setParameter("login", "the login"); form.setParameter("password", "its password"); response = form.submit(); assertEquals("The element \"the login,its password\" is being embedded.\n", response.getText()); } public void testSubmissionSame() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; WebForm form = null; request = new GetMethodWebRequest("http://localhost:8181/submission_same"); request.setParameter("language", "dutch"); response = conversation.getResponse(request); assertEquals("The element \"<form method=\"post\" action=\"/submission_same/embedded\" name=\"embedded\">\n" + "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_SAME_EMBEDDED")+"\" /><input name=\"inputs\" type=\"hidden\" value=\"bGFuZ3VhZ2VuAGR1dGNo\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "<input type=\"text\" name=\"language\">\n"+ "</form>\n\" is being embedded.\n"+ "<form method=\"post\" action=\"/submission_same\" name=\"embedding\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_SAME")+"\" /><input name=\"inputs\" type=\"hidden\" value=\"LlNVQk1JU1NJT05fU0FNRWMAbGFuZ3VhZ2VuAGR1dGNo\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "</form>,dutch\n", response.getText()); form = response.getFormWithName("embedded"); form.setParameter("login", "the login"); form.setParameter("password", "its password"); form.setParameter("language", "english"); assertEquals("the login,its password,english", form.submit().getText()); form = response.getFormWithName("embedding"); form.setParameter("login", "the login"); form.setParameter("password", "its password"); response = form.submit(); assertEquals("The element \"<form method=\"post\" action=\"/submission_same/embedded\" name=\"embedded\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_SAME_EMBEDDED")+"\" /><input name=\"inputs\" type=\"hidden\" value=\"bGFuZ3VhZ2VuAGR1dGNo\" /><input name=\"ctxt\" type=\"hidden\" value=\"LlNVQk1JU1NJT05fU0FNRWMAbGFuZ3VhZ2VuAGR1dGNo\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "<input type=\"text\" name=\"language\">\n"+ "</form>\n\" is being embedded.\n"+ "the login,its password,dutch\n", form.submit().getText()); } public void testSubmissionSameNourl() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; WebForm form = null; request = new GetMethodWebRequest("http://localhost:8181/submission_same_nourl"); request.setParameter("language", "dutch"); response = conversation.getResponse(request); assertEquals("The element \"<form method=\"post\" action=\"/submission_same_nourl\" name=\"embedded\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_SAME_NOURL::engine_embedding_submission_same_nourl:.SUBMISSION_SAME_NOURL_EMBEDDED^.SUBMISSION_SAME_NOURL_EMBEDDED")+"\" /><input name=\"inputs\" type=\"hidden\" value=\"bGFuZ3VhZ2VuAGR1dGNo\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "<input type=\"text\" name=\"language\">\n"+ "</form>\n\" is being embedded.\n"+ "<form method=\"post\" action=\"/submission_same_nourl\" name=\"embedding\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_SAME_NOURL")+"\" /><input name=\"inputs\" type=\"hidden\" value=\"LlNVQk1JU1NJT05fU0FNRV9OT1VSTGMAbGFuZ3VhZ2VuAGR1dGNo\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "</form>,dutch\n", response.getText()); form = response.getFormWithName("embedded"); form.setParameter("login", "the login"); form.setParameter("password", "its password"); form.setParameter("language", "english"); assertEquals("The element \"the login,its password,english\" is being embedded.\n"+ "<form method=\"post\" action=\"/submission_same_nourl\" name=\"embedding\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_SAME_NOURL")+"\" /><input name=\"inputs\" type=\"hidden\" value=\"LlNVQk1JU1NJT05fU0FNRV9OT1VSTGMAbGFuZ3VhZ2VuAGR1dGNo\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "</form>,dutch\n", form.submit().getText()); form = response.getFormWithName("embedding"); form.setParameter("login", "the login"); form.setParameter("password", "its password"); response = form.submit(); assertEquals("The element \"<form method=\"post\" action=\"/submission_same_nourl\" name=\"embedded\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_SAME_NOURL::engine_embedding_submission_same_nourl:.SUBMISSION_SAME_NOURL_EMBEDDED^.SUBMISSION_SAME_NOURL_EMBEDDED")+"\" /><input name=\"inputs\" type=\"hidden\" value=\"bGFuZ3VhZ2VuAGR1dGNo\" /><input name=\"ctxt\" type=\"hidden\" value=\"LlNVQk1JU1NJT05fU0FNRV9OT1VSTGMAbGFuZ3VhZ2VuAGR1dGNo\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "<input type=\"text\" name=\"language\">\n"+ "</form>\n\" is being embedded.\n"+ "the login,its password,dutch\n", form.submit().getText()); } public void testSubmissionGlobalSameNourl() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; WebForm form = null; request = new GetMethodWebRequest("http://localhost:8181/submission_global_same_nourl"); request.setParameter("language", "dutch"); response = conversation.getResponse(request); assertEquals("The element \"<form method=\"post\" action=\"/submission_global_same_nourl\" name=\"embedded\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"inputs\" type=\"hidden\" value=\"bGFuZ3VhZ2VuAGR1dGNo\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "<input type=\"text\" name=\"language\">\n"+ "</form>\n\" is being embedded.\n"+ "<form method=\"post\" action=\"/submission_global_same_nourl\" name=\"embedding\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"inputs\" type=\"hidden\" value=\"LlNVQk1JU1NJT05fR0xPQkFMX1NBTUVfTk9VUkxjAGxhbmd1YWdlbgBkdXRjaA==\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "</form>,dutch\n", response.getText()); form = response.getFormWithName("embedded"); form.setParameter("login", "the login"); form.setParameter("password", "its password"); form.setParameter("language", "english"); assertEquals("The element \"the login,its password,english\" is being embedded.\n"+ "the login,its password,dutch\n", form.submit().getText()); } public void testSubmissionMultiple() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; WebForm form = null; request = new GetMethodWebRequest("http://localhost:8181/submission_multiple"); response = conversation.getResponse(request); assertEquals("Element1 \"<form method=\"post\" action=\"/submission_multiple/embedded\" name=\"embedded0\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_MULTIPLE_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "</form>\n"+ "\" being embedded.\n"+ "Element2 \"<form method=\"post\" action=\"/submission_multiple/embedded\" name=\"embedded1\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_MULTIPLE_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "</form>\n"+ "\" being embedded.\n"+ "Element3 \"<form method=\"post\" action=\"/submission_multiple/embedded\" name=\"embedded2\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_MULTIPLE_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "</form>\n"+ "\" being embedded.\n"+ "Element4 \"<form method=\"post\" action=\"/submission_multiple/embedded\" name=\"embedded3\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_MULTIPLE_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "</form>\n"+ "\" being embedded.\n", response.getText()); form = response.getForms()[0]; form.setParameter("login", "the login 0"); form.setParameter("password", "its password 0"); assertEquals("the login 0,its password 0,", form.submit().getText()); form = response.getForms()[1]; form.setParameter("login", "the login 1"); form.setParameter("password", "its password 1"); assertEquals("the login 1,its password 1,", form.submit().getText()); form = response.getForms()[2]; form.setParameter("login", "the login 2"); form.setParameter("password", "its password 2"); assertEquals("the login 2,its password 2,", form.submit().getText()); form = response.getForms()[3]; form.setParameter("login", "the login 3"); form.setParameter("password", "its password 3"); assertEquals("the login 3,its password 3,", form.submit().getText()); } public void testSubmissionMultipleNourl() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; WebForm form = null; request = new GetMethodWebRequest("http://localhost:8181/submission_multiple_nourl"); response = conversation.getResponse(request); assertEquals("Element1 \"<form method=\"post\" action=\"/submission_multiple_nourl\" name=\"embedded0\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_MULTIPLE_NOURL::engine_embedding_submission_multiple_nourl:.SUBMISSION_MULTIPLE_NOURL_EMBEDDED^.SUBMISSION_MULTIPLE_NOURL_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "</form>\n"+ "\" being embedded.\n"+ "Element2 \"<form method=\"post\" action=\"/submission_multiple_nourl\" name=\"embedded1\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_MULTIPLE_NOURL::engine_embedding_submission_multiple_nourl:.SUBMISSION_MULTIPLE_NOURL_EMBEDDED:nr1^.SUBMISSION_MULTIPLE_NOURL_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "</form>\n"+ "\" being embedded.\n"+ "Element3 \"<form method=\"post\" action=\"/submission_multiple_nourl\" name=\"embedded2\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_MULTIPLE_NOURL::engine_embedding_submission_multiple_nourl:.SUBMISSION_MULTIPLE_NOURL_EMBEDDED:nr2^.SUBMISSION_MULTIPLE_NOURL_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "</form>\n"+ "\" being embedded.\n"+ "Element4 \"<form method=\"post\" action=\"/submission_multiple_nourl\" name=\"embedded3\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_MULTIPLE_NOURL::engine_embedding_submission_multiple_nourl:.SUBMISSION_MULTIPLE_NOURL_EMBEDDED:nr3^.SUBMISSION_MULTIPLE_NOURL_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "</form>\n"+ "\" being embedded.\n", response.getText()); form = response.getForms()[0]; form.setParameter("login", "the login 0"); form.setParameter("password", "its password 0"); assertEquals("Element1 \"the login 0,its password 0,0\" being embedded.\n"+ "Element2 \"<form method=\"post\" action=\"/submission_multiple_nourl\" name=\"embedded1\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_MULTIPLE_NOURL::engine_embedding_submission_multiple_nourl:.SUBMISSION_MULTIPLE_NOURL_EMBEDDED:nr1^.SUBMISSION_MULTIPLE_NOURL_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "</form>\n"+ "\" being embedded.\n"+ "Element3 \"<form method=\"post\" action=\"/submission_multiple_nourl\" name=\"embedded2\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_MULTIPLE_NOURL::engine_embedding_submission_multiple_nourl:.SUBMISSION_MULTIPLE_NOURL_EMBEDDED:nr2^.SUBMISSION_MULTIPLE_NOURL_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "</form>\n"+ "\" being embedded.\n"+ "Element4 \"<form method=\"post\" action=\"/submission_multiple_nourl\" name=\"embedded3\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_MULTIPLE_NOURL::engine_embedding_submission_multiple_nourl:.SUBMISSION_MULTIPLE_NOURL_EMBEDDED:nr3^.SUBMISSION_MULTIPLE_NOURL_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "</form>\n"+ "\" being embedded.\n", form.submit().getText()); form = response.getForms()[1]; form.setParameter("login", "the login 1"); form.setParameter("password", "its password 1"); assertEquals("Element1 \"<form method=\"post\" action=\"/submission_multiple_nourl\" name=\"embedded0\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_MULTIPLE_NOURL::engine_embedding_submission_multiple_nourl:.SUBMISSION_MULTIPLE_NOURL_EMBEDDED^.SUBMISSION_MULTIPLE_NOURL_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "</form>\n"+ "\" being embedded.\n"+ "Element2 \"the login 1,its password 1,1\" being embedded.\n"+ "Element3 \"<form method=\"post\" action=\"/submission_multiple_nourl\" name=\"embedded2\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_MULTIPLE_NOURL::engine_embedding_submission_multiple_nourl:.SUBMISSION_MULTIPLE_NOURL_EMBEDDED:nr2^.SUBMISSION_MULTIPLE_NOURL_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "</form>\n"+ "\" being embedded.\n"+ "Element4 \"<form method=\"post\" action=\"/submission_multiple_nourl\" name=\"embedded3\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_MULTIPLE_NOURL::engine_embedding_submission_multiple_nourl:.SUBMISSION_MULTIPLE_NOURL_EMBEDDED:nr3^.SUBMISSION_MULTIPLE_NOURL_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "</form>\n"+ "\" being embedded.\n", form.submit().getText()); form = response.getForms()[2]; form.setParameter("login", "the login 2"); form.setParameter("password", "its password 2"); assertEquals("Element1 \"<form method=\"post\" action=\"/submission_multiple_nourl\" name=\"embedded0\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_MULTIPLE_NOURL::engine_embedding_submission_multiple_nourl:.SUBMISSION_MULTIPLE_NOURL_EMBEDDED^.SUBMISSION_MULTIPLE_NOURL_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "</form>\n"+ "\" being embedded.\n"+ "Element2 \"<form method=\"post\" action=\"/submission_multiple_nourl\" name=\"embedded1\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_MULTIPLE_NOURL::engine_embedding_submission_multiple_nourl:.SUBMISSION_MULTIPLE_NOURL_EMBEDDED:nr1^.SUBMISSION_MULTIPLE_NOURL_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "</form>\n"+ "\" being embedded.\n"+ "Element3 \"the login 2,its password 2,2\" being embedded.\n"+ "Element4 \"<form method=\"post\" action=\"/submission_multiple_nourl\" name=\"embedded3\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_MULTIPLE_NOURL::engine_embedding_submission_multiple_nourl:.SUBMISSION_MULTIPLE_NOURL_EMBEDDED:nr3^.SUBMISSION_MULTIPLE_NOURL_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "</form>\n"+ "\" being embedded.\n", form.submit().getText()); form = response.getForms()[3]; form.setParameter("login", "the login 3"); form.setParameter("password", "its password 3"); assertEquals("Element1 \"<form method=\"post\" action=\"/submission_multiple_nourl\" name=\"embedded0\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_MULTIPLE_NOURL::engine_embedding_submission_multiple_nourl:.SUBMISSION_MULTIPLE_NOURL_EMBEDDED^.SUBMISSION_MULTIPLE_NOURL_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "</form>\n"+ "\" being embedded.\n"+ "Element2 \"<form method=\"post\" action=\"/submission_multiple_nourl\" name=\"embedded1\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_MULTIPLE_NOURL::engine_embedding_submission_multiple_nourl:.SUBMISSION_MULTIPLE_NOURL_EMBEDDED:nr1^.SUBMISSION_MULTIPLE_NOURL_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "</form>\n"+ "\" being embedded.\n"+ "Element3 \"<form method=\"post\" action=\"/submission_multiple_nourl\" name=\"embedded2\">\n"+ "<input name=\"submission\" type=\"hidden\" value=\"credentials\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SUBMISSION_MULTIPLE_NOURL::engine_embedding_submission_multiple_nourl:.SUBMISSION_MULTIPLE_NOURL_EMBEDDED:nr2^.SUBMISSION_MULTIPLE_NOURL_EMBEDDED")+"\" />\n"+ "<input type=\"text\" name=\"login\">\n"+ "<input type=\"text\" name=\"password\">\n"+ "</form>\n"+ "\" being embedded.\n"+ "Element4 \"the login 3,its password 3,3\" being embedded.\n", form.submit().getText()); } public void testGlobalvar() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; WebForm form = null; request = new GetMethodWebRequest("http://localhost:8181/globalvar"); response = conversation.getResponse(request); assertEquals("value 1,"+ "value 2,"+ "value 3,"+ "value 4,"+ "<!--V 'OUTPUT:var5'/-->,"+ "<form action=\"/globalvar\"><input name=\"submission\" type=\"hidden\" value=\"submission\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".GLOBALVAR::engine_embedding_globalvar:.GLOBALVAR_EMBEDDED^.GLOBALVAR_EMBEDDED")+"\" /><input type=\"submit\" /></form>\n", response.getText()); form = response.getForms()[0]; response = form.submit(); assertEquals("embedded value 1,"+ "<!--V 'OUTPUT:var2'/-->,"+ "value 3,"+ "value 4,"+ "<!--V 'OUTPUT:var5'/-->,submitted\n", response.getText()); } public void testEmbedderInputs() throws Exception { SiteBuilder builder = new SiteBuilder("site/embedding.xml", ResourceFinderClasspath.getInstance()); MockConversation conversation = new MockConversation(builder.getSite()); MockForm form; ParsedHtml parsed; MockResponse response; response = conversation.doRequest("/embedder_inputs?var1=value%201&var2=value%202&var3=value%203&var4=value%204"); assertEquals("value 1," + "value 2," + "value 3," + "value 4," + "<!--V 'INPUT:var5'/-->," + "<!--V 'INPUT:var6'/-->," + "<form action=\"/embedder_inputs/\"><input name=\"submission\" type=\"hidden\" value=\"submission\" /><input name=\"submissioncontext\" type=\"hidden\" value=\"" + Base64.encode(".EMBEDDER_INPUTS::engine_embedding_embedderinputs:.EMBEDDER_INPUTS_EMBEDDED^.EMBEDDER_INPUTS_EMBEDDED") + "\" /><input name=\"inputs\" type=\"hidden\" value=\"dmFyMW4AdmFsdWUgMXAAdmFyMm4AdmFsdWUgMnAAdmFyM24AdmFsdWUgM3AAdmFyNG4AdmFsdWUgNA==_LkVNQkVEREVSX0lOUFVUUzo6ZW5naW5lX2VtYmVkZGluZ19lbWJlZGRlcmlucHV0czouRU1CRURERVJfSU5QVVRTX0VNQkVEREVEYwB2YXIzbgB2YWx1ZSAzcAB2YXI0bgB2YWx1ZSA0\" /><input type=\"submit\" /></form>\n", response.getText()); parsed = response.getParsedHtml(); form = parsed.getForms().get(0); response = form.submit(); assertEquals("value 1," + "value 2," + "value 3," + "value 4," + "<!--V 'INPUT:var5'/-->," + "<!--V 'INPUT:var6'/-->," + "embedded no var6," + "submitted\n", response.getText()); response = conversation.doRequest("/embedder_inputs/test/value5/value6?var1=value%201&var2=value%202&var3=value%203&var4=value%204"); assertEquals("value 1," + "value 2," + "value 3," + "value 4," + "value5," + "value6," + "<form action=\"/embedder_inputs/test/value5/value6\"><input name=\"submission\" type=\"hidden\" value=\"submission\" /><input name=\"submissioncontext\" type=\"hidden\" value=\"" + Base64.encode(".EMBEDDER_INPUTS::engine_embedding_embedderinputs:.EMBEDDER_INPUTS_EMBEDDED^.EMBEDDER_INPUTS_EMBEDDED") + "\" /><input name=\"inputs\" type=\"hidden\" value=\"dmFyMW4AdmFsdWUgMXAAdmFyMm4AdmFsdWUgMnAAdmFyM24AdmFsdWUgM3AAdmFyNW4AdmFsdWU1cAB2YXI2bgB2YWx1ZTZwAHZhcjRuAHZhbHVlIDQ=_LkVNQkVEREVSX0lOUFVUUzo6ZW5naW5lX2VtYmVkZGluZ19lbWJlZGRlcmlucHV0czouRU1CRURERVJfSU5QVVRTX0VNQkVEREVEYwB2YXIzbgB2YWx1ZSAzcAB2YXI0bgB2YWx1ZSA0cAB2YXI1bgB2YWx1ZTU=\" /><input type=\"submit\" /></form>\n", response.getText()); parsed = response.getParsedHtml(); form = parsed.getForms().get(0); response = form.submit(); assertEquals("value 1," + "value 2," + "value 3," + "value 4," + "value5," + "value6," + "embedded value6," + "submitted\n", response.getText()); response = conversation.doRequest("/embedder_inputs/test/value5/value6?var1=value%201&var2=value%202&var3=value%203&var4=value%204"); assertEquals("value 1," + "value 2," + "value 3," + "value 4," + "value5," + "value6," + "<form action=\"/embedder_inputs/test/value5/value6\"><input name=\"submission\" type=\"hidden\" value=\"submission\" /><input name=\"submissioncontext\" type=\"hidden\" value=\"" + Base64.encode(".EMBEDDER_INPUTS::engine_embedding_embedderinputs:.EMBEDDER_INPUTS_EMBEDDED^.EMBEDDER_INPUTS_EMBEDDED") + "\" /><input name=\"inputs\" type=\"hidden\" value=\"dmFyMW4AdmFsdWUgMXAAdmFyMm4AdmFsdWUgMnAAdmFyM24AdmFsdWUgM3AAdmFyNW4AdmFsdWU1cAB2YXI2bgB2YWx1ZTZwAHZhcjRuAHZhbHVlIDQ=_LkVNQkVEREVSX0lOUFVUUzo6ZW5naW5lX2VtYmVkZGluZ19lbWJlZGRlcmlucHV0czouRU1CRURERVJfSU5QVVRTX0VNQkVEREVEYwB2YXIzbgB2YWx1ZSAzcAB2YXI0bgB2YWx1ZSA0cAB2YXI1bgB2YWx1ZTU=\" /><input type=\"submit\" /></form>\n", response.getText()); parsed = response.getParsedHtml(); form = parsed.getForms().get(0); form.setParameter("var6", "submission value6"); response = form.submit(); assertEquals("value 1," + "value 2," + "value 3," + "value 4," + "value5," + "value6," + "embedded submission value6," + "submitted\n", response.getText()); } public void testCookies() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; WebForm form = null; request = new GetMethodWebRequest("http://localhost:8181/cookies"); response = conversation.getResponse(request); assertEquals("value 1,"+ "value 2,"+ "value 3,"+ "value 4,"+ "<!--V 'OUTCOOKIE:cookie5'/-->,"+ "<form action=\"/cookies\"><input name=\"submission\" type=\"hidden\" value=\"submission\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".COOKIES::engine_embedding_cookies:.COOKIES_EMBEDDED^.COOKIES_EMBEDDED")+"\" /><input type=\"submit\" /></form>\n", response.getText()); form = response.getForms()[0]; response = form.submit(); assertEquals("embedded value 1,"+ "embedded value 2,"+ "value 3,"+ "embedded value 4,"+ "<!--V 'OUTCOOKIE:cookie5'/-->,submitted\n", response.getText()); } public void testCookiesOutjection() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; WebForm form = null; request = new GetMethodWebRequest("http://localhost:8181/cookies/outjection"); response = conversation.getResponse(request); assertEquals("value 1,"+ "value 2,"+ "value 3,"+ "value 4,"+ "<!--V 'OUTCOOKIE:cookie5'/-->,"+ "<form action=\"/cookies/outjection\"><input name=\"submission\" type=\"hidden\" value=\"submission\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".COOKIES_OUTJECTION::engine_embedding_cookies_outjection:.COOKIES_OUTJECTION_EMBEDDED^.COOKIES_OUTJECTION_EMBEDDED")+"\" /><input type=\"submit\" /></form>\n", response.getText()); form = response.getForms()[0]; response = form.submit(); assertEquals("embedded value 1,"+ "embedded value 2,"+ "value 3,"+ "embedded value 4,"+ "<!--V 'OUTCOOKIE:cookie5'/-->,submitted\n", response.getText()); } public void testSuccessiveGlobalcookie() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; request = new GetMethodWebRequest("http://localhost:8181/successive_globalcookie"); response = conversation.getResponse(request); assertEquals("embedded value 1,embedded value 2,<!--V 'OUTCOOKIE:cookie3'/-->,<!--V 'OUTCOOKIE:cookie4'/-->,<!--V 'OUTCOOKIE:cookie5'/-->\n"+ "first: embedded\n"+ "second: embedded value 1embedded value 2no cookie3\n", response.getText()); } public void testInheritanceEmbedded() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; WebLink link = null; request = new GetMethodWebRequest("http://localhost:8181/inheritance/embedded"); response = conversation.getResponse(request); assertEquals("The element \"<html><body><a href=\"/inheritance/embedded/target?submission=activatechild&submissioncontext="+StringUtils.encodeUrl(Base64.encode(".INHERITANCE_EMBEDDED_TARGET^.INHERITANCE_EMBEDDED_TARGET_PARENT"))+"&childrequest=ZWxlbWVudC9lbWJlZGRpbmcvZW1iZWRkZWQvaW5oZXJpdGFuY2VfY2hpbGQueG1seABHRVRtAA%3D%3D&triggerlist=\">activate child</a></body></html>\" is being embedded.\n", response.getText()); link = response.getLinkWith("activate child"); response = link.click(); assertEquals("This is the child", response.getText()); } public void testInheritanceEmbeddedNourl() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; WebLink link = null; request = new GetMethodWebRequest("http://localhost:8181/inheritance/embedded/nourl"); response = conversation.getResponse(request); assertEquals("The element \"<html><body><a href=\"/inheritance/embedded/nourl?submission=activatechild&submissioncontext="+StringUtils.encodeUrl(Base64.encode(".INHERITANCE_EMBEDDED_NOURL::engine_embedding_inheritance_embedded_nourl:.INHERITANCE_EMBEDDED_NOURL_TARGET^.INHERITANCE_EMBEDDED_NOURL_TARGET_PARENT"))+"&childrequest=ZWxlbWVudC9lbWJlZGRpbmcvZW1iZWRkZWQvaW5oZXJpdGFuY2VfY2hpbGQueG1seABHRVRtAA%3D%3D&triggerlist=\">activate child</a></body></html>\" is being embedded.\n", response.getText()); link = response.getLinkWith("activate child"); response = link.click(); assertEquals("The element \"This is the child\" is being embedded.\n", response.getText()); } public void testInheritanceEmbeddedNourlPathinfo() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; WebLink link = null; request = new GetMethodWebRequest("http://localhost:8181/inheritance/embedded/nourl_pathinfo"); response = conversation.getResponse(request); String arg1 = "The element \"<html><body><a href=\"/inheritance/embedded/nourl_pathinfo/?submission=activatechild&submissioncontext="+StringUtils.encodeUrl(Base64.encode(".INHERITANCE_EMBEDDED_NOURL_PATHINFO::engine_embedding_inheritance_embedded_nourl_pathinfo:.INHERITANCE_EMBEDDED_NOURL_PATHINFO_TARGET^.INHERITANCE_EMBEDDED_NOURL_PATHINFO_TARGET_PARENT"))+"&childrequest=ZWxlbWVudC9lbWJlZGRpbmcvZW1iZWRkZWQvaW5oZXJpdGFuY2VfY2hpbGQueG1seABHRVRtAA%3D%3D&triggerlist=\">activate child</a></body></html>\" is being embedded.\n"; assertEquals(arg1, response.getText()); link = response.getLinkWith("activate child"); response = link.click(); assertEquals("The element \"This is the child\" is being embedded.\n", response.getText()); request = new GetMethodWebRequest("http://localhost:8181/inheritance/embedded/nourl_pathinfo/somepathinfo"); response = conversation.getResponse(request); arg1 = "The element \"<html><body><a href=\"/inheritance/embedded/nourl_pathinfo/somepathinfo?submission=activatechild&submissioncontext="+StringUtils.encodeUrl(Base64.encode(".INHERITANCE_EMBEDDED_NOURL_PATHINFO::engine_embedding_inheritance_embedded_nourl_pathinfo:.INHERITANCE_EMBEDDED_NOURL_PATHINFO_TARGET^.INHERITANCE_EMBEDDED_NOURL_PATHINFO_TARGET_PARENT"))+"&childrequest=ZWxlbWVudC9lbWJlZGRpbmcvZW1iZWRkZWQvaW5oZXJpdGFuY2VfY2hpbGQueG1seABHRVRtAA%3D%3D&triggerlist=\">activate child</a></body></html>\" is being embedded.\n"; assertEquals(arg1, response.getText()); link = response.getLinkWith("activate child"); response = link.click(); assertEquals("The element \"This is the child\" is being embedded.\n", response.getText()); } public void testSuccessiveInheritanceEmbeddedNourl() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; WebLink link = null; request = new GetMethodWebRequest("http://localhost:8181/inheritance_successive/embedded/nourl"); response = conversation.getResponse(request); assertEquals("The element \"<html><body><a href=\"/inheritance_successive/embedded/nourl?submission=activatechild&submissioncontext="+StringUtils.encodeUrl(Base64.encode(".INHERITANCE_SUCCESSIVE_EMBEDDED_NOURL::engine_embedding_inheritance_embedded_nourl:.INHERITANCE_EMBEDDED_NOURL_TARGET^.INHERITANCE_EMBEDDED_NOURL_TARGET_PARENT"))+"&childrequest=ZWxlbWVudC9lbWJlZGRpbmcvZW1iZWRkZWQvaW5oZXJpdGFuY2VfY2hpbGQueG1seABHRVRtAA%3D%3D&triggerlist=\">activate child</a></body></html>\" is being embedded.\n", response.getText()); link = response.getLinkWith("activate child"); response = link.click(); assertEquals("The element \"This is the child\" is being embedded.\n", response.getText()); } public void testSuccessiveInheritanceEmbeddedNourlPathinfo() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; WebLink link = null; request = new GetMethodWebRequest("http://localhost:8181/inheritance_successive/embedded/nourl_pathinfo_successive"); response = conversation.getResponse(request); String arg1 = "The element \"<html><body><a href=\"/inheritance_successive/embedded/nourl_pathinfo_successive/?submission=activatechild&submissioncontext="+StringUtils.encodeUrl(Base64.encode(".INHERITANCE_SUCCESSIVE_EMBEDDED_NOURL_PATHINFO::engine_embedding_inheritance_embedded_nourl:.INHERITANCE_EMBEDDED_NOURL_TARGET^.INHERITANCE_EMBEDDED_NOURL_TARGET_PARENT"))+"&childrequest=ZWxlbWVudC9lbWJlZGRpbmcvZW1iZWRkZWQvaW5oZXJpdGFuY2VfY2hpbGQueG1seABHRVRtAA%3D%3D&triggerlist=\">activate child</a></body></html>\" is being embedded.\n"; assertEquals(arg1, response.getText()); link = response.getLinkWith("activate child"); response = link.click(); assertEquals("The element \"This is the child\" is being embedded.\n", response.getText()); request = new GetMethodWebRequest("http://localhost:8181/inheritance_successive/embedded/nourl_pathinfo_successive/somepathinfo"); response = conversation.getResponse(request); arg1 = "The element \"<html><body><a href=\"/inheritance_successive/embedded/nourl_pathinfo_successive/somepathinfo?submission=activatechild&submissioncontext="+StringUtils.encodeUrl(Base64.encode(".INHERITANCE_SUCCESSIVE_EMBEDDED_NOURL_PATHINFO::engine_embedding_inheritance_embedded_nourl:.INHERITANCE_EMBEDDED_NOURL_TARGET^.INHERITANCE_EMBEDDED_NOURL_TARGET_PARENT"))+"&childrequest=ZWxlbWVudC9lbWJlZGRpbmcvZW1iZWRkZWQvaW5oZXJpdGFuY2VfY2hpbGQueG1seABHRVRtAA%3D%3D&triggerlist=\">activate child</a></body></html>\" is being embedded.\n"; assertEquals(arg1, response.getText()); link = response.getLinkWith("activate child"); response = link.click(); assertEquals("The element \"This is the child\" is being embedded.\n", response.getText()); } public void testInheritanceCookieEmbedding() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; WebLink link = null; request = new GetMethodWebRequest("http://localhost:8181/inheritance/cookie/embedding"); response = conversation.getResponse(request); assertEquals("<html><body><a href=\"/inheritance/cookie/embedding?submission=activatechild&submissioncontext="+StringUtils.encodeUrl(Base64.encode(".INHERITANCE_COOKIE_EMBEDDING^.INHERITANCE_COOKIE_EMBEDDING_PARENT"))+"&childrequest=ZWxlbWVudC9lbWJlZGRpbmcvaW5oZXJpdGFuY2VfY29va2llX2VtYmVkZGluZy54bWx4AEdFVG0A&triggerlist=\">activate child</a></body></html>", response.getText()); link = response.getLinkWith("activate child"); response = link.click(); assertEquals("The element \"This is the child\" is being embedded.\n", response.getText()); } public void testInheritanceGlobalvarEmbedding() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; WebLink link = null; request = new GetMethodWebRequest("http://localhost:8181/inheritance/globalvar/embedding"); response = conversation.getResponse(request); assertEquals("<html><body><a href=\"/inheritance/globalvar/embedding?submission=activatechild&submissioncontext="+StringUtils.encodeUrl(Base64.encode(".INHERITANCE_GLOBALVAR_EMBEDDING^.INHERITANCE_GLOBALVAR_EMBEDDING_PARENT"))+"&childrequest=ZWxlbWVudC9lbWJlZGRpbmcvaW5oZXJpdGFuY2VfZ2xvYmFsdmFyX2VtYmVkZGluZy54bWx4AEdFVG0A&triggerlist=\">activate child</a></body></html>", response.getText()); link = response.getLinkWith("activate child"); response = link.click(); assertEquals("The element \"This is the child\" is being embedded.\n", response.getText()); } public void testScripted() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; WebForm form = null; request = new GetMethodWebRequest("http://localhost:8181/scripted"); request.setParameter("input1", "these values"); request.setParameter("input2", "are scripted"); response = conversation.getResponse(request); assertEquals("The element \"these values,are scripted\" is being embedded.", response.getText()); request = new GetMethodWebRequest("http://localhost:8181/scripted"); request.setParameter("input1", "form"); response = conversation.getResponse(request); assertEquals("The element \"<html><body>\n"+ "\t\t\t\t<form action=\"/scripted/embedded\" method=\"post\">\n"+ "\t\t\t\t<input name=\"submission\" type=\"hidden\" value=\"login\" /><input name=\"submissioncontext\" type=\"hidden\" value=\""+Base64.encode(".SCRIPTED_EMBEDDED")+"\" /><input name=\"inputs\" type=\"hidden\" value=\"LlNDUklQVEVEX0VNQkVEREVEYwBpbnB1dDFuAGZvcm0=\" /><input name=\"login\" type=\"text\">\n"+ "\t\t\t\t<input name=\"password\" type=\"password\">\n"+ "\t\t\t\t<input type=\"submit\">\n"+ "\t\t\t\t</form>\n"+ "\t\t\t\t</body></html>\" is being embedded.", response.getText()); form = response.getForms()[0]; form.setParameter("login", "mylogin"); form.setParameter("password", "mypassword"); response = form.submit(); assertEquals("mylogin,mypassword", response.getText()); } public void testExits() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; request = new GetMethodWebRequest("http://localhost:8181/exits"); response = conversation.getResponse(request); assertEquals("The element \"destination\" is being embedded.", response.getText()); } public void testExitNourlReflective() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; request = new GetMethodWebRequest("http://localhost:8181/exit_nourlreflective"); response = conversation.getResponse(request); assertEquals("no embedderinput", response.getElementWithID("embedder_value1").getAttribute("value")); assertEquals("no embeddedinput", response.getElementWithID("embedder_value2").getAttribute("value")); assertEquals("no input", response.getElementWithID("embedded_inputvalue").getAttribute("value")); assertEquals("/exit_nourlreflective?embeddedinput=outputvalue", response.getLinks()[0].getURLString()); response = response.getLinks()[0].click(); assertEquals("no embedderinput", response.getElementWithID("embedder_value1").getAttribute("value")); assertEquals("outputvalue", response.getElementWithID("embedder_value2").getAttribute("value")); assertEquals("outputvalue", response.getElementWithID("embedded_inputvalue").getAttribute("value")); request = new GetMethodWebRequest("http://localhost:8181/exit_nourlreflective?embedderinput=embeddervalue1&embeddedinput=embeddervalue2"); response = conversation.getResponse(request); assertEquals("embeddervalue1", response.getElementWithID("embedder_value1").getAttribute("value")); assertEquals("embeddervalue2", response.getElementWithID("embedder_value2").getAttribute("value")); assertEquals("embeddervalue2", response.getElementWithID("embedded_inputvalue").getAttribute("value")); assertEquals("/exit_nourlreflective?embedderinput=embeddervalue1&embeddedinput=outputvalue", response.getLinks()[0].getURLString()); response = response.getLinks()[0].click(); assertEquals("embeddervalue1", response.getElementWithID("embedder_value1").getAttribute("value")); assertEquals("outputvalue", response.getElementWithID("embedder_value2").getAttribute("value")); assertEquals("outputvalue", response.getElementWithID("embedded_inputvalue").getAttribute("value")); } public void testRelative() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; request = new GetMethodWebRequest("http://localhost:8181/relative1/toplevel"); response = conversation.getResponse(request); assertEquals("The element \"Relative1 embedded\" is being embedded.", response.getText()); request = new GetMethodWebRequest("http://localhost:8181/relative2/toplevel"); response = conversation.getResponse(request); assertEquals("The element \"Relative2 embedded\" is being embedded.", response.getText()); } public void testParent() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; request = new GetMethodWebRequest("http://localhost:8181/relative1/parent"); response = conversation.getResponse(request); assertEquals("The element \"Relative2 embedded\" is being embedded.", response.getText()); request = new GetMethodWebRequest("http://localhost:8181/relative2/parent"); response = conversation.getResponse(request); assertEquals("The element \"Relative1 embedded\" is being embedded.", response.getText()); } public void testExplicitProcessing() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; WebLink link = null; request = new GetMethodWebRequest("http://localhost:8181/explicit_processing"); response = conversation.getResponse(request); link = response.getLinkWith("late"); response = link.click(); link = response.getLinkWith("result"); response = link.click(); assertTrue(response.getText().indexOf("Input \"value2\"") != -1); assertTrue(response.getText().indexOf("Input \"embedded_value2\"") == -1); request = new GetMethodWebRequest("http://localhost:8181/explicit_processing"); response = conversation.getResponse(request); link = response.getLinkWith("early"); response = link.click(); link = response.getLinkWith("result"); response = link.click(); assertTrue(response.getText().indexOf("Input \"value2\"") == -1); assertTrue(response.getText().indexOf("Input \"embedded_value2\"") != -1); } public void testPriorities() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; request = new GetMethodWebRequest("http://localhost:8181/priorities"); response = conversation.getResponse(request); assertEquals("These elements are embedded:\n"+ ".PRIORITIES_EMBEDDED_LATE\n"+ ".PRIORITIES_EMBEDDED_NORMAL\n"+ ".PRIORITIES_EMBEDDED_EARLY\n"+ "done.\n"+ ".PRIORITIES_EMBEDDED_EARLY\n"+ ".PRIORITIES_EMBEDDED_NORMAL\n"+ ".PRIORITIES\n"+ ".PRIORITIES_EMBEDDED_LATE\n", response.getText()); } public void testGlobalVarSiblingEmbedded() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; request = new GetMethodWebRequest("http://localhost:8181/globalvar_sibling"); response = conversation.getResponse(request); assertEquals("embedded2: .GLOBALVAR_SIBLING_EMBEDDED2: inheritancevalue\n"+ "embedded3: .GLOBALVAR_SIBLING_EMBEDDED3: null\n"+ "embedded1: .GLOBALVAR_SIBLING_EMBEDDED1b: .GLOBALVAR_SIBLING_EMBEDDED1: inheritancevalue\n"+ "embedded3b: .GLOBALVAR_SIBLING_EMBEDDED3: inheritancevalue\n"+ "embedded4: .GLOBALVAR_SIBLING_EMBEDDED4: inheritancevalue\n", response.getText()); request = new GetMethodWebRequest("http://localhost:8181/globalvar_sibling?clear=true"); response = conversation.getResponse(request); assertEquals("embedded2: .GLOBALVAR_SIBLING_EMBEDDED2: null\n"+ "embedded3: .GLOBALVAR_SIBLING_EMBEDDED3: null\n"+ "embedded1: .GLOBALVAR_SIBLING_EMBEDDED1b: .GLOBALVAR_SIBLING_EMBEDDED1: inheritancevalue\n"+ "embedded3b: .GLOBALVAR_SIBLING_EMBEDDED3: inheritancevalue\n"+ "embedded4: .GLOBALVAR_SIBLING_EMBEDDED4: inheritancevalue\n", response.getText()); } public void testGlobalVarSiblingEmbeddedBijection() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; request = new GetMethodWebRequest("http://localhost:8181/globalvar_sibling/bijection"); response = conversation.getResponse(request); assertEquals("embedded2: .GLOBALVAR_SIBLING_BIJECTION_EMBEDDED2: inheritancevalue\n"+ "embedded3: .GLOBALVAR_SIBLING_BIJECTION_EMBEDDED3: null\n"+ "embedded1: .GLOBALVAR_SIBLING_BIJECTION_EMBEDDED1b: .GLOBALVAR_SIBLING_BIJECTION_EMBEDDED1: inheritancevalue\n"+ "embedded3b: .GLOBALVAR_SIBLING_BIJECTION_EMBEDDED3: inheritancevalue\n"+ "embedded4: .GLOBALVAR_SIBLING_BIJECTION_EMBEDDED4: inheritancevalue\n", response.getText()); request = new GetMethodWebRequest("http://localhost:8181/globalvar_sibling/bijection?clear=true"); response = conversation.getResponse(request); assertEquals("embedded2: .GLOBALVAR_SIBLING_BIJECTION_EMBEDDED2: null\n"+ "embedded3: .GLOBALVAR_SIBLING_BIJECTION_EMBEDDED3: null\n"+ "embedded1: .GLOBALVAR_SIBLING_BIJECTION_EMBEDDED1b: .GLOBALVAR_SIBLING_BIJECTION_EMBEDDED1: inheritancevalue\n"+ "embedded3b: .GLOBALVAR_SIBLING_BIJECTION_EMBEDDED3: inheritancevalue\n"+ "embedded4: .GLOBALVAR_SIBLING_BIJECTION_EMBEDDED4: inheritancevalue\n", response.getText()); } public void testPrintAndWriteBuffer() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; request = new GetMethodWebRequest("http://localhost:8181/printandwrite_buffer"); response = conversation.getResponse(request); assertEquals("The element \"write2write4print1print3\" is being embedded.\n", response.getText()); } public void testPrintAndWriteNobuffer() throws Exception { setupSite("site/embedding.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; request = new GetMethodWebRequest("http://localhost:8181/printandwrite_nobuffer"); response = conversation.getResponse(request); assertEquals("The element \"print1write2print3write4\" is being embedded.\n", response.getText()); } public void testStatefulElementsCounter() throws Exception { Site site = new SiteBuilder("site/embedding.xml").getSite(); MockConversation conversation = new MockConversation(site); MockResponse response1 = conversation.doRequest("/counter"); List<MockResponse> responses1 = response1.getEmbeddedResponses(); assertEquals(2, responses1.size()); assertEquals("0", responses1.get(0).getTemplate().getValue("counter")); assertEquals("0", responses1.get(1).getTemplate().getValue("counter")); ParsedHtml parsed1 = response1.getParsedHtml(); MockResponse response2 = parsed1.getFormWithId("increase1").submit(); List<MockResponse> responses2 = response2.getEmbeddedResponses(); assertEquals(2, responses2.size()); assertEquals("1", responses2.get(0).getTemplate().getValue("counter")); assertEquals("0", responses2.get(1).getTemplate().getValue("counter")); ParsedHtml parsed2 = response2.getParsedHtml(); MockResponse response3 = parsed2.getFormWithId("increase2").submit(); List<MockResponse> responses3 = response3.getEmbeddedResponses(); assertEquals(2, responses3.size()); assertEquals("1", responses3.get(0).getTemplate().getValue("counter")); assertEquals("1", responses3.get(1).getTemplate().getValue("counter")); ParsedHtml parsed3 = response3.getParsedHtml(); MockResponse response4 = parsed3.getFormWithId("increase2").submit(); List<MockResponse> responses4 = response4.getEmbeddedResponses(); assertEquals(2, responses4.size()); assertEquals("1", responses4.get(0).getTemplate().getValue("counter")); assertEquals("2", responses4.get(1).getTemplate().getValue("counter")); ParsedHtml parsed4 = response4.getParsedHtml(); MockResponse response5 = parsed4.getFormWithId("increase2").submit(); List<MockResponse> responses5 = response5.getEmbeddedResponses(); assertEquals(2, responses5.size()); assertEquals("1", responses5.get(0).getTemplate().getValue("counter")); assertEquals("3", responses5.get(1).getTemplate().getValue("counter")); ParsedHtml parsed5 = response5.getParsedHtml(); MockResponse response6 = parsed5.getFormWithId("increase1").submit(); List<MockResponse> responses6 = response6.getEmbeddedResponses(); assertEquals(2, responses6.size()); assertEquals("2", responses6.get(0).getTemplate().getValue("counter")); assertEquals("3", responses6.get(1).getTemplate().getValue("counter")); ParsedHtml parsed6 = response6.getParsedHtml(); MockResponse response7 = parsed6.getFormWithId("decrease2").submit(); List<MockResponse> responses7 = response7.getEmbeddedResponses(); assertEquals(2, responses7.size()); assertEquals("2", responses7.get(0).getTemplate().getValue("counter")); assertEquals("2", responses7.get(1).getTemplate().getValue("counter")); ParsedHtml parsed7 = response7.getParsedHtml(); MockResponse response8 = parsed7.getFormWithId("decrease1").submit(); List<MockResponse> responses8 = response8.getEmbeddedResponses(); assertEquals(2, responses8.size()); assertEquals("1", responses8.get(0).getTemplate().getValue("counter")); assertEquals("2", responses8.get(1).getTemplate().getValue("counter")); MockResponse response7b = parsed6.getFormWithId("increase2").submit(); List<MockResponse> responses7b = response7b.getEmbeddedResponses(); assertEquals(2, responses7b.size()); assertEquals("2", responses7b.get(0).getTemplate().getValue("counter")); assertEquals("4", responses7b.get(1).getTemplate().getValue("counter")); } public void testStatefulElementsCounterSessionState() throws Exception { Site site = new SiteBuilder("site/embedding.xml").getSite(); MockConversation conversation = new MockConversation(site); MockResponse response1 = conversation.doRequest("/counter_session"); List<MockResponse> responses1 = response1.getEmbeddedResponses(); assertEquals(2, responses1.size()); assertEquals("0", responses1.get(0).getTemplate().getValue("counter")); assertEquals("0", responses1.get(1).getTemplate().getValue("counter")); ParsedHtml parsed1 = response1.getParsedHtml(); MockForm form1 = parsed1.getFormWithId("increase1"); assertEquals(1, form1.getParameters().size()); assertNotNull(form1.getParameterValue(ReservedParameters.STATEID)); MockResponse response2 = form1.submit(); List<MockResponse> responses2 = response2.getEmbeddedResponses(); assertEquals(2, responses2.size()); assertEquals("1", responses2.get(0).getTemplate().getValue("counter")); assertEquals("0", responses2.get(1).getTemplate().getValue("counter")); ParsedHtml parsed2 = response2.getParsedHtml(); MockForm form2 = parsed2.getFormWithId("increase2"); assertEquals(1, form2.getParameters().size()); assertNotNull(form2.getParameterValue(ReservedParameters.STATEID)); MockResponse response3 = form2.submit(); List<MockResponse> responses3 = response3.getEmbeddedResponses(); assertEquals(2, responses3.size()); assertEquals("1", responses3.get(0).getTemplate().getValue("counter")); assertEquals("1", responses3.get(1).getTemplate().getValue("counter")); ParsedHtml parsed3 = response3.getParsedHtml(); MockForm form3 = parsed3.getFormWithId("increase2"); assertEquals(1, form3.getParameters().size()); assertNotNull(form3.getParameterValue(ReservedParameters.STATEID)); MockResponse response4 = form3.submit(); List<MockResponse> responses4 = response4.getEmbeddedResponses(); assertEquals(2, responses4.size()); assertEquals("1", responses4.get(0).getTemplate().getValue("counter")); assertEquals("2", responses4.get(1).getTemplate().getValue("counter")); ParsedHtml parsed4 = response4.getParsedHtml(); MockForm form4 = parsed4.getFormWithId("increase2"); assertEquals(1, form4.getParameters().size()); assertNotNull(form4.getParameterValue(ReservedParameters.STATEID)); MockResponse response5 = form4.submit(); List<MockResponse> responses5 = response5.getEmbeddedResponses(); assertEquals(2, responses5.size()); assertEquals("1", responses5.get(0).getTemplate().getValue("counter")); assertEquals("3", responses5.get(1).getTemplate().getValue("counter")); ParsedHtml parsed5 = response5.getParsedHtml(); MockForm form5 = parsed5.getFormWithId("increase1"); assertEquals(1, form5.getParameters().size()); assertNotNull(form5.getParameterValue(ReservedParameters.STATEID)); MockResponse response6 = form5.submit(); List<MockResponse> responses6 = response6.getEmbeddedResponses(); assertEquals(2, responses6.size()); assertEquals("2", responses6.get(0).getTemplate().getValue("counter")); assertEquals("3", responses6.get(1).getTemplate().getValue("counter")); ParsedHtml parsed6 = response6.getParsedHtml(); MockForm form6 = parsed6.getFormWithId("decrease2"); assertEquals(1, form6.getParameters().size()); assertNotNull(form6.getParameterValue(ReservedParameters.STATEID)); MockResponse response7 = form6.submit(); List<MockResponse> responses7 = response7.getEmbeddedResponses(); assertEquals(2, responses7.size()); assertEquals("2", responses7.get(0).getTemplate().getValue("counter")); assertEquals("2", responses7.get(1).getTemplate().getValue("counter")); ParsedHtml parsed7 = response7.getParsedHtml(); MockForm form7 = parsed7.getFormWithId("decrease1"); assertEquals(1, form7.getParameters().size()); assertNotNull(form7.getParameterValue(ReservedParameters.STATEID)); MockResponse response8 = form7.submit(); List<MockResponse> responses8 = response8.getEmbeddedResponses(); assertEquals(2, responses8.size()); assertEquals("1", responses8.get(0).getTemplate().getValue("counter")); assertEquals("2", responses8.get(1).getTemplate().getValue("counter")); MockForm form8 = parsed6.getFormWithId("increase2"); assertEquals(1, form8.getParameters().size()); assertNotNull(form8.getParameterValue(ReservedParameters.STATEID)); MockResponse response7b = form8.submit(); List<MockResponse> responses7b = response7b.getEmbeddedResponses(); assertEquals(2, responses7b.size()); assertEquals("2", responses7b.get(0).getTemplate().getValue("counter")); assertEquals("4", responses7b.get(1).getTemplate().getValue("counter")); } public void testStatefulElementsCounterContinuations() throws Exception { Site site = new SiteBuilder("site/embedding.xml").getSite(); MockConversation conversation = new MockConversation(site); MockResponse response1 = conversation.doRequest("/countercontinuations"); List<MockResponse> responses1 = response1.getEmbeddedResponses(); assertEquals(2, responses1.size()); assertEquals("0", responses1.get(0).getTemplate().getValue("counter")); assertEquals("0", responses1.get(1).getTemplate().getValue("counter")); ParsedHtml parsed1 = response1.getParsedHtml(); MockResponse response2 = parsed1.getFormWithId("increase1").submit(); List<MockResponse> responses2 = response2.getEmbeddedResponses(); assertEquals(2, responses2.size()); assertEquals("1", responses2.get(0).getTemplate().getValue("counter")); assertEquals("0", responses2.get(1).getTemplate().getValue("counter")); ParsedHtml parsed2 = response2.getParsedHtml(); MockResponse response3 = parsed2.getFormWithId("increase2").submit(); List<MockResponse> responses3 = response3.getEmbeddedResponses(); assertEquals(2, responses3.size()); assertEquals("1", responses3.get(0).getTemplate().getValue("counter")); assertEquals("1", responses3.get(1).getTemplate().getValue("counter")); ParsedHtml parsed3 = response3.getParsedHtml(); MockResponse response4 = parsed3.getFormWithId("increase2").submit(); List<MockResponse> responses4 = response4.getEmbeddedResponses(); assertEquals(2, responses4.size()); assertEquals("1", responses4.get(0).getTemplate().getValue("counter")); assertEquals("2", responses4.get(1).getTemplate().getValue("counter")); ParsedHtml parsed4 = response4.getParsedHtml(); MockResponse response5 = parsed4.getFormWithId("increase2").submit(); List<MockResponse> responses5 = response5.getEmbeddedResponses(); assertEquals(2, responses5.size()); assertEquals("1", responses5.get(0).getTemplate().getValue("counter")); assertEquals("3", responses5.get(1).getTemplate().getValue("counter")); ParsedHtml parsed5 = response5.getParsedHtml(); MockResponse response6 = parsed5.getFormWithId("increase1").submit(); List<MockResponse> responses6 = response6.getEmbeddedResponses(); assertEquals(2, responses6.size()); assertEquals("2", responses6.get(0).getTemplate().getValue("counter")); assertEquals("3", responses6.get(1).getTemplate().getValue("counter")); ParsedHtml parsed6 = response6.getParsedHtml(); MockResponse response7 = parsed6.getFormWithId("decrease2").submit(); List<MockResponse> responses7 = response7.getEmbeddedResponses(); assertEquals(2, responses7.size()); assertEquals("2", responses7.get(0).getTemplate().getValue("counter")); assertEquals("2", responses7.get(1).getTemplate().getValue("counter")); ParsedHtml parsed7 = response7.getParsedHtml(); MockResponse response8 = parsed7.getFormWithId("decrease1").submit(); List<MockResponse> responses8 = response8.getEmbeddedResponses(); assertEquals(2, responses8.size()); assertEquals("1", responses8.get(0).getTemplate().getValue("counter")); assertEquals("2", responses8.get(1).getTemplate().getValue("counter")); MockResponse response7b = parsed6.getFormWithId("increase2").submit(); List<MockResponse> responses7b = response7b.getEmbeddedResponses(); assertEquals(2, responses7b.size()); assertEquals("2", responses7b.get(0).getTemplate().getValue("counter")); assertEquals("4", responses7b.get(1).getTemplate().getValue("counter")); } public void testStatefulElementsCounterSessionStateNoclone() throws Exception { Config.getRepInstance().setParameter(RifeConfig.Engine.PARAM_SESSION_STATE_STORE_CLONING, false); try { Site site = new SiteBuilder("site/embedding.xml").getSite(); MockConversation conversation = new MockConversation(site); MockResponse response1 = conversation.doRequest("/counter_session"); List<MockResponse> responses1 = response1.getEmbeddedResponses(); assertEquals(2, responses1.size()); assertEquals("0", responses1.get(0).getTemplate().getValue("counter")); assertEquals("0", responses1.get(1).getTemplate().getValue("counter")); ParsedHtml parsed1 = response1.getParsedHtml(); MockForm form1 = parsed1.getFormWithId("increase1"); assertEquals(1, form1.getParameters().size()); assertNotNull(form1.getParameterValue(ReservedParameters.STATEID)); MockResponse response2 = form1.submit(); List<MockResponse> responses2 = response2.getEmbeddedResponses(); assertEquals(2, responses2.size()); assertEquals("1", responses2.get(0).getTemplate().getValue("counter")); assertEquals("0", responses2.get(1).getTemplate().getValue("counter")); ParsedHtml parsed2 = response2.getParsedHtml(); MockForm form2 = parsed2.getFormWithId("increase2"); assertEquals(1, form2.getParameters().size()); assertNotNull(form2.getParameterValue(ReservedParameters.STATEID)); MockResponse response3 = form2.submit(); List<MockResponse> responses3 = response3.getEmbeddedResponses(); assertEquals(2, responses3.size()); assertEquals("1", responses3.get(0).getTemplate().getValue("counter")); assertEquals("1", responses3.get(1).getTemplate().getValue("counter")); ParsedHtml parsed3 = response3.getParsedHtml(); MockForm form3 = parsed3.getFormWithId("increase2"); assertEquals(1, form3.getParameters().size()); assertNotNull(form3.getParameterValue(ReservedParameters.STATEID)); MockResponse response4 = form3.submit(); List<MockResponse> responses4 = response4.getEmbeddedResponses(); assertEquals(2, responses4.size()); assertEquals("1", responses4.get(0).getTemplate().getValue("counter")); assertEquals("2", responses4.get(1).getTemplate().getValue("counter")); ParsedHtml parsed4 = response4.getParsedHtml(); MockForm form4 = parsed4.getFormWithId("increase2"); assertEquals(1, form4.getParameters().size()); assertNotNull(form4.getParameterValue(ReservedParameters.STATEID)); MockResponse response5 = form4.submit(); List<MockResponse> responses5 = response5.getEmbeddedResponses(); assertEquals(2, responses5.size()); assertEquals("1", responses5.get(0).getTemplate().getValue("counter")); assertEquals("3", responses5.get(1).getTemplate().getValue("counter")); ParsedHtml parsed5 = response5.getParsedHtml(); MockForm form5 = parsed5.getFormWithId("increase1"); assertEquals(1, form5.getParameters().size()); assertNotNull(form5.getParameterValue(ReservedParameters.STATEID)); MockResponse response6 = form5.submit(); List<MockResponse> responses6 = response6.getEmbeddedResponses(); assertEquals(2, responses6.size()); assertEquals("2", responses6.get(0).getTemplate().getValue("counter")); assertEquals("3", responses6.get(1).getTemplate().getValue("counter")); ParsedHtml parsed6 = response6.getParsedHtml(); MockForm form6 = parsed6.getFormWithId("decrease2"); assertEquals(1, form6.getParameters().size()); assertNotNull(form6.getParameterValue(ReservedParameters.STATEID)); MockResponse response7 = form6.submit(); List<MockResponse> responses7 = response7.getEmbeddedResponses(); assertEquals(2, responses7.size()); assertEquals("2", responses7.get(0).getTemplate().getValue("counter")); assertEquals("2", responses7.get(1).getTemplate().getValue("counter")); ParsedHtml parsed7 = response7.getParsedHtml(); MockForm form7 = parsed7.getFormWithId("decrease1"); assertEquals(1, form7.getParameters().size()); assertNotNull(form7.getParameterValue(ReservedParameters.STATEID)); MockResponse response8 = form7.submit(); List<MockResponse> responses8 = response8.getEmbeddedResponses(); assertEquals(2, responses8.size()); assertEquals("1", responses8.get(0).getTemplate().getValue("counter")); assertEquals("2", responses8.get(1).getTemplate().getValue("counter")); MockForm form8 = parsed6.getFormWithId("increase2"); assertEquals(1, form8.getParameters().size()); assertNotNull(form8.getParameterValue(ReservedParameters.STATEID)); MockResponse response7b = form8.submit(); List<MockResponse> responses7b = response7b.getEmbeddedResponses(); assertEquals(2, responses7b.size()); assertEquals("1", responses7b.get(0).getTemplate().getValue("counter")); assertEquals("4", responses7b.get(1).getTemplate().getValue("counter")); } finally { Config.getRepInstance().setParameter(RifeConfig.Engine.PARAM_SESSION_STATE_STORE_CLONING, true); } } public void testStatefulExplicitProcessing() throws Exception { Site site = new SiteBuilder("site/embedding.xml").getSite(); MockConversation conversation = new MockConversation(site); List<MockForm> forms; MockResponse response = conversation.doRequest("/statefulexplicitprocessing"); forms = response.getParsedHtml().getForms(); assertEquals(7, forms.size()); assertEquals("two", forms.get(1).getName()); response = forms.get(1).submit(); assertEquals("two", response.xpathString("//div[@id='id_two']/text()").trim()); forms = response.getParsedHtml().getForms(); assertEquals(6, forms.size()); assertEquals("three", forms.get(1).getName()); assertEquals("one", forms.get(0).getName()); response = forms.get(0).submit(); assertEquals("one", response.xpathString("//div[@id='id_one']/text()").trim()); assertEquals("two", response.xpathString("//div[@id='id_two']/text()").trim()); forms = response.getParsedHtml().getForms(); assertEquals(5, forms.size()); assertEquals("three", forms.get(0).getName()); assertEquals("six", forms.get(3).getName()); response = forms.get(3).submit(); assertEquals("one", response.xpathString("//div[@id='id_one']/text()").trim()); assertEquals("two", response.xpathString("//div[@id='id_two']/text()").trim()); assertEquals("six", response.xpathString("//div[@id='id_six']/text()").trim()); forms = response.getParsedHtml().getForms(); assertEquals(4, forms.size()); assertEquals("seven", forms.get(3).getName()); assertEquals("four", forms.get(1).getName()); response = forms.get(1).submit(); assertEquals("one", response.xpathString("//div[@id='id_one']/text()").trim()); assertEquals("two", response.xpathString("//div[@id='id_two']/text()").trim()); assertEquals("four", response.xpathString("//div[@id='id_four']/text()").trim()); assertEquals("six", response.xpathString("//div[@id='id_six']/text()").trim()); forms = response.getParsedHtml().getForms(); assertEquals(3, forms.size()); assertEquals("five", forms.get(1).getName()); assertEquals("three", forms.get(0).getName()); response = forms.get(0).submit(); assertEquals("one", response.xpathString("//div[@id='id_one']/text()").trim()); assertEquals("two", response.xpathString("//div[@id='id_two']/text()").trim()); assertEquals("three", response.xpathString("//div[@id='id_three']/text()").trim()); assertEquals("four", response.xpathString("//div[@id='id_four']/text()").trim()); assertEquals("six", response.xpathString("//div[@id='id_six']/text()").trim()); forms = response.getParsedHtml().getForms(); assertEquals(2, forms.size()); assertEquals("five", forms.get(0).getName()); assertEquals("seven", forms.get(1).getName()); response = forms.get(1).submit(); assertEquals("one", response.xpathString("//div[@id='id_one']/text()").trim()); assertEquals("two", response.xpathString("//div[@id='id_two']/text()").trim()); assertEquals("three", response.xpathString("//div[@id='id_three']/text()").trim()); assertEquals("four", response.xpathString("//div[@id='id_four']/text()").trim()); assertEquals("six", response.xpathString("//div[@id='id_six']/text()").trim()); assertEquals("seven", response.xpathString("//div[@id='id_seven']/text()").trim()); forms = response.getParsedHtml().getForms(); assertEquals(1, forms.size()); assertEquals("five", forms.get(0).getName()); assertEquals("five", forms.get(0).getName()); response = forms.get(0).submit(); assertEquals("one", response.xpathString("//div[@id='id_one']/text()").trim()); assertEquals("two", response.xpathString("//div[@id='id_two']/text()").trim()); assertEquals("three", response.xpathString("//div[@id='id_three']/text()").trim()); assertEquals("four", response.xpathString("//div[@id='id_four']/text()").trim()); assertEquals("five", response.xpathString("//div[@id='id_five']/text()").trim()); assertEquals("six", response.xpathString("//div[@id='id_six']/text()").trim()); assertEquals("seven", response.xpathString("//div[@id='id_seven']/text()").trim()); forms = response.getParsedHtml().getForms(); assertEquals(0, forms.size()); } public void testStatefulExplicitProcessingSessionState() throws Exception { Site site = new SiteBuilder("site/embedding.xml").getSite(); MockConversation conversation = new MockConversation(site); List<MockForm> forms; MockResponse response = conversation.doRequest("/statefulexplicitprocessing_session"); forms = response.getParsedHtml().getForms(); assertEquals(7, forms.size()); for (MockForm form : forms) { assertEquals(1, form.getParameters().size()); assertNotNull(form.getParameterValue(ReservedParameters.STATEID)); } assertEquals("two", forms.get(1).getName()); response = forms.get(1).submit(); assertEquals("two", response.xpathString("//div[@id='id_two']/text()").trim()); forms = response.getParsedHtml().getForms(); assertEquals(6, forms.size()); assertEquals("three", forms.get(1).getName()); for (MockForm form : forms) { assertEquals(1, form.getParameters().size()); assertNotNull(form.getParameterValue(ReservedParameters.STATEID)); } assertEquals("one", forms.get(0).getName()); response = forms.get(0).submit(); assertEquals("one", response.xpathString("//div[@id='id_one']/text()").trim()); assertEquals("two", response.xpathString("//div[@id='id_two']/text()").trim()); forms = response.getParsedHtml().getForms(); assertEquals(5, forms.size()); assertEquals("three", forms.get(0).getName()); for (MockForm form : forms) { assertEquals(1, form.getParameters().size()); assertNotNull(form.getParameterValue(ReservedParameters.STATEID)); } assertEquals("six", forms.get(3).getName()); response = forms.get(3).submit(); assertEquals("one", response.xpathString("//div[@id='id_one']/text()").trim()); assertEquals("two", response.xpathString("//div[@id='id_two']/text()").trim()); assertEquals("six", response.xpathString("//div[@id='id_six']/text()").trim()); forms = response.getParsedHtml().getForms(); assertEquals(4, forms.size()); assertEquals("seven", forms.get(3).getName()); for (MockForm form : forms) { assertEquals(1, form.getParameters().size()); assertNotNull(form.getParameterValue(ReservedParameters.STATEID)); } assertEquals("four", forms.get(1).getName()); response = forms.get(1).submit(); assertEquals("one", response.xpathString("//div[@id='id_one']/text()").trim()); assertEquals("two", response.xpathString("//div[@id='id_two']/text()").trim()); assertEquals("four", response.xpathString("//div[@id='id_four']/text()").trim()); assertEquals("six", response.xpathString("//div[@id='id_six']/text()").trim()); forms = response.getParsedHtml().getForms(); assertEquals(3, forms.size()); assertEquals("five", forms.get(1).getName()); for (MockForm form : forms) { assertEquals(1, form.getParameters().size()); assertNotNull(form.getParameterValue(ReservedParameters.STATEID)); } assertEquals("three", forms.get(0).getName()); response = forms.get(0).submit(); assertEquals("one", response.xpathString("//div[@id='id_one']/text()").trim()); assertEquals("two", response.xpathString("//div[@id='id_two']/text()").trim()); assertEquals("three", response.xpathString("//div[@id='id_three']/text()").trim()); assertEquals("four", response.xpathString("//div[@id='id_four']/text()").trim()); assertEquals("six", response.xpathString("//div[@id='id_six']/text()").trim()); forms = response.getParsedHtml().getForms(); assertEquals(2, forms.size()); assertEquals("five", forms.get(0).getName()); for (MockForm form : forms) { assertEquals(1, form.getParameters().size()); assertNotNull(form.getParameterValue(ReservedParameters.STATEID)); } assertEquals("seven", forms.get(1).getName()); response = forms.get(1).submit(); assertEquals("one", response.xpathString("//div[@id='id_one']/text()").trim()); assertEquals("two", response.xpathString("//div[@id='id_two']/text()").trim()); assertEquals("three", response.xpathString("//div[@id='id_three']/text()").trim()); assertEquals("four", response.xpathString("//div[@id='id_four']/text()").trim()); assertEquals("six", response.xpathString("//div[@id='id_six']/text()").trim()); assertEquals("seven", response.xpathString("//div[@id='id_seven']/text()").trim()); forms = response.getParsedHtml().getForms(); assertEquals(1, forms.size()); assertEquals("five", forms.get(0).getName()); for (MockForm form : forms) { assertEquals(1, form.getParameters().size()); assertNotNull(form.getParameterValue(ReservedParameters.STATEID)); } assertEquals("five", forms.get(0).getName()); response = forms.get(0).submit(); assertEquals("one", response.xpathString("//div[@id='id_one']/text()").trim()); assertEquals("two", response.xpathString("//div[@id='id_two']/text()").trim()); assertEquals("three", response.xpathString("//div[@id='id_three']/text()").trim()); assertEquals("four", response.xpathString("//div[@id='id_four']/text()").trim()); assertEquals("five", response.xpathString("//div[@id='id_five']/text()").trim()); assertEquals("six", response.xpathString("//div[@id='id_six']/text()").trim()); assertEquals("seven", response.xpathString("//div[@id='id_seven']/text()").trim()); forms = response.getParsedHtml().getForms(); assertEquals(0, forms.size()); } public void testErrorHandlingHandler() throws Exception { Site site = new SiteBuilder("site/embedding.xml").getSite(); MockConversation conversation = new MockConversation(site); MockResponse response = conversation.doRequest("/errorhandling/handler"); String txt = response.getText(); assertEquals("The element \".Erroneous\n" + "This is an error.\n" + "java.lang.RuntimeException\" is being embedded.", txt); } public void testErrorHandlingNoHandler() throws Exception { Site site = new SiteBuilder("site/embedding.xml").getSite(); MockConversation conversation = new MockConversation(site); try { conversation.doRequest("/errorhandling/nohandler"); fail("Expected exception"); } catch (RuntimeException e) { assertEquals("This is an error.", e.getMessage()); } } }