/*
* Copyright 2001-2008 Geert Bevin (gbevin[remove] at uwyn dot com)
* Licensed under the Apache License, Version 2.0 (the "License")
* $Id: TestEngineGlobals.java 3933 2008-04-25 20:41:45Z gbevin $
*/
package com.uwyn.rife.engine;
import javax.servlet.http.Cookie;
import com.meterware.httpunit.*;
import com.uwyn.rife.TestCaseServerside;
import com.uwyn.rife.engine.exceptions.GlobalExitOverriddenException;
import com.uwyn.rife.engine.exceptions.IncookieUnknownException;
import com.uwyn.rife.engine.exceptions.OutcookieUnknownException;
import com.uwyn.rife.tools.HttpUtils;
public class TestEngineGlobals extends TestCaseServerside
{
public TestEngineGlobals(int siteType, String name)
{
super(siteType, name);
}
public void testGlobalVars()
throws Exception
{
setupSite("site/globals.xml");
WebConversation conversation = new WebConversation();
WebRequest request = null;
WebResponse response = null;
request = new GetMethodWebRequest("http://localhost:8181/globals/source");
request.setParameter("switch", "1");
response = conversation.getResponse(request);
assertEquals("value2a|value2b|value2c,value1", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/globals/source");
request.setParameter("switch", "2");
response = conversation.getResponse(request);
assertEquals("value1,value2a|value2b|value2c", response.getText());
}
public void testGlobalVarsInjection()
throws Exception
{
setupSite("site/globals.xml");
WebConversation conversation = new WebConversation();
WebRequest request = null;
WebResponse response = null;
request = new GetMethodWebRequest("http://localhost:8181/globals/injection");
request.setParameter("switch", "1");
try
{
response = conversation.getResponse(request);
}
catch (Throwable e) {getLogSink().getInternalException().printStackTrace();}
assertEquals("value2a|value2b|value2c,value1", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/globals/injection");
request.setParameter("switch", "2");
response = conversation.getResponse(request);
assertEquals("value1,value2a|value2b|value2c", response.getText());
}
public void testGlobalVarsGroup()
throws Exception
{
setupSite("site/globals.xml");
WebConversation conversation = new WebConversation();
WebRequest request = null;
WebResponse response = null;
request = new GetMethodWebRequest("http://localhost:8181/globals/group/source");
request.setParameter("switch", "1");
response = conversation.getResponse(request);
assertEquals("value4a|value4b|value4c,value3,value2a|value2b|value2c,value1", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/globals/group/source");
request.setParameter("switch", "2");
response = conversation.getResponse(request);
assertEquals("value1,value2a|value2b|value2c,value3,value4a|value4b|value4c", response.getText());
}
public void testGlobalVarsGroupIsolation()
throws Exception
{
setupSite("site/globals.xml");
WebConversation conversation = new WebConversation();
WebRequest request = null;
WebResponse response = null;
request = new GetMethodWebRequest("http://localhost:8181/globals/group/isolation_source");
request.setParameter("switch", "1");
response = conversation.getResponse(request);
assertEquals("value1|value2|value5", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/globals/group/isolation_source");
request.setParameter("switch", "2");
response = conversation.getResponse(request);
assertEquals("value1|default value 2 local|null", response.getText());
}
public void testGlobalDefaultVars()
throws Exception
{
setupSite("site/global_defaults.xml");
WebConversation conversation = new WebConversation();
WebRequest request = null;
WebResponse response = null;
request = new GetMethodWebRequest("http://localhost:8181/globals/defaults");
response = conversation.getResponse(request);
assertEquals("the first value"+
"2rda-2rdd-2rdc-2rdb", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/globals/defaults");
request.setParameter("global1", "a new global value");
response = conversation.getResponse(request);
assertEquals("a new global value"+
"2rda-2rdd-2rdc-2rdb", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/globals/defaults");
request.setParameter("input1", "1");
response = conversation.getResponse(request);
assertEquals("the first value"+
"2rda-2rdd-2rdc-2rdb"+
"the first value"+
"2rda-2rdd-2rdc-2rdb"+
"the element config value", response.getText());
}
public void testGlobalExits()
throws Exception
{
setupSite("site/globals.xml");
WebConversation conversation = new WebConversation();
WebRequest request = null;
WebResponse response = null;
request = new GetMethodWebRequest("http://localhost:8181/globals/source");
request.setParameter("switch", "3");
response = conversation.getResponse(request);
assertEquals("global exit : value1,value2a|value2b|value2c", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/globals/source");
request.setParameter("switch", "4");
request.setParameter("reflected", "reflected_value");
request.setParameter("reflected_overridden", "reflected_value");
request.setParameter("not_reflected", "not_reflected_value");
response = conversation.getResponse(request);
assertEquals("reflected"+
"reflected_value"+
"reflected_value_overridden"+
"null", response.getText());
}
public void testGlobalExitsConflict()
throws Exception
{
setupSite("site/global_conflict_exit.xml");
WebConversation conversation = new WebConversation();
WebRequest request = null;
request = new GetMethodWebRequest("http://localhost:8181/subsite");
try
{
conversation.getResponse(request);
}
catch (Throwable e)
{
Throwable e2 = getLogSink().getInternalException();
assertTrue(e2 instanceof GlobalExitOverriddenException);
assertEquals(((GlobalExitOverriddenException)e2).getGlobalExitName(), "globalexit1");
}
}
public void testGlobalExitsGroup()
throws Exception
{
setupSite("site/globals.xml");
WebConversation conversation = new WebConversation();
WebRequest request = null;
WebResponse response = null;
request = new GetMethodWebRequest("http://localhost:8181/globals/group/source");
request.setParameter("switch", "3");
response = conversation.getResponse(request);
assertEquals("global exit : value1,value2a|value2b|value2c", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/globals/group/source");
request.setParameter("switch", "4");
response = conversation.getResponse(request);
assertEquals("reflective1", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/globals/group/source");
request.setParameter("switch", "5");
response = conversation.getResponse(request);
assertEquals("global exit : value1,value2a|value2b|value2c,value3,value4a|value4b|value4c", response.getText());
request = new GetMethodWebRequest("http://localhost:8181/globals/group/source");
request.setParameter("switch", "6");
response = conversation.getResponse(request);
assertEquals("reflective2", response.getText());
}
public void testGlobalVarsSubmission()
throws Exception
{
setupSite("site/globals.xml");
WebConversation conversation = new WebConversation();
WebRequest request = null;
WebResponse response = null;
request = new GetMethodWebRequest("http://localhost:8181/globals/submission");
request.setParameter("globalvar1", "var one");
request.setParameter("globalvar2", new String [] {"var two a", "var two b"});
response = conversation.getResponse(request);
WebForm form = response.getForms()[0];
response = form.submit();
assertEquals("value1,value2a|value2b|value2c,one param", response.getText());
}
public void testGlobalVarsInputsOverriding()
throws Exception
{
setupSite("site/globals.xml");
WebConversation conversation = new WebConversation();
WebRequest request = null;
WebResponse response = null;
request = new GetMethodWebRequest("http://localhost:8181/globalvars/inputs/source");
request.setParameter("globalvar1", "global var one");
request.setParameter("globalvar2", new String [] {"global var two a", "global var two b", "global var two c"});
request.setParameter("input1", "input var one");
request.setParameter("input2", "input var two");
response = conversation.getResponse(request);
assertEquals("global var one,global var two a|global var two b|global var two c,output input var one:outit,output input var two", response.getText());
}
public void testGlobalExitToRootArrival()
throws Exception
{
setupSite("site/globals.xml");
WebConversation conversation = new WebConversation();
WebRequest request = null;
WebResponse response = null;
request = new GetMethodWebRequest("http://localhost:8181/globals/globalexit_to_root_arrival");
request.setParameter("globalvar1", "global var one");
request.setParameter("globalvar2", new String [] {"global var two a", "global var two b", "global var two c"});
request.setParameter("input1", "input var one");
request.setParameter("input2", "input var two");
response = conversation.getResponse(request);
assertEquals("global var one,global var two a|global var two b|global var two c,output input var one:outit,output input var two", response.getText());
}
public void testGlobalsBeanNormal()
throws Exception
{
setupSite("site/globals.xml");
WebConversation conversation = new WebConversation();
WebRequest request = new GetMethodWebRequest("http://localhost:8181/globals/bean/normal");
WebResponse response = null;
response = conversation.getResponse(request);
assertEquals("the string,the stringbuffer,23154,893749,u,false,true,false,false,21,34878.34,25435.98,3434.76,6534.8,34347897,2335454,32,12", response.getText());
}
public void testGlobalsBeanPrefix()
throws Exception
{
setupSite("site/globals.xml");
WebConversation conversation = new WebConversation();
WebRequest request = new GetMethodWebRequest("http://localhost:8181/globals/bean/prefix");
WebResponse response = null;
response = conversation.getResponse(request);
assertEquals("the string,the stringbuffer,23154,893749,u,false,true,false,false,21,34878.34,25435.98,3434.76,6534.8,34347897,2335454,32,12", response.getText());
}
public void testNamedGlobalBeanNormal()
throws Exception
{
setupSite("site/globals.xml");
WebConversation conversation = new WebConversation();
WebRequest request = new GetMethodWebRequest("http://localhost:8181/globals/namedbean/normal");
WebResponse response = null;
response = conversation.getResponse(request);
assertEquals("the string,the stringbuffer,23154,893749,u,null,true,false,0,21,34878.34,25435.98,3434.76,6534.8,34347897,2335454,32,12", response.getText());
}
public void testNamedGlobalBeanPrefix()
throws Exception
{
setupSite("site/globals.xml");
WebConversation conversation = new WebConversation();
WebRequest request = new GetMethodWebRequest("http://localhost:8181/globals/namedbean/prefix");
WebResponse response = null;
response = conversation.getResponse(request);
assertEquals("the string,the stringbuffer,23154,893749,u,null,true,false,0,21,34878.34,25435.98,3434.76,6534.8,34347897,2335454,32,12", response.getText());
}
public void testGlobalExitSnapback()
throws Exception
{
setupSite("site/globals.xml");
WebConversation conversation = new WebConversation();
WebRequest request = null;
WebResponse response = null;
request = new GetMethodWebRequest("http://localhost:8181/globals/snapback/source");
request.setParameter("activate_exit", "1");
response = conversation.getResponse(request);
assertEquals("this is the output of SnapbackPassthrough"+
"the content of SnapbackSource", response.getText());
}
public void testGlobalCookiesValid()
throws Exception
{
setupSite("site/globals.xml");
HttpUtils.Page page = null;
// initial page that accepts and overrides cookies
page = new HttpUtils.Request("http://localhost:8181/globals/globalcookie/valid/source")
.cookie("cookie1", "cookie1")
.cookie("cookie2", "cookie2")
.cookie("cookie3", "cookie3")
.retrieve();
// check if the correct cookies were returned
assertTrue(page.checkReceivedCookies(new Cookie[] {
new Cookie("cookie1", "cookie4"),
new Cookie("cookie2", "cookie5"),
new Cookie("cookie3", "cookie6"),
}));
// new page with cookie context
page = new HttpUtils.Request("http://localhost:8181/globals/globalcookie/valid/destination")
.cookie("cookie1", "cookie7")
.cookie("cookie2", "cookie8")
.cookie("cookie3", "cookie9")
.retrieve();
assertEquals("cookie7,cookie8,cookie9", page.getContent());
}
public void testGlobalCookiesInvalid()
throws Exception
{
setupSite("site/globals.xml");
HttpUtils.Page page = null;
try
{
page = new HttpUtils.Request("http://localhost:8181/globals/globalcookie/invalid/source")
.cookie("cookie1", "this is the first cookie")
.cookie("cookie2", "this is the second cookie")
.cookie("cookie3", "this is the third cookie")
.retrieve();
fail();
assertNotNull(page);
}
catch (Exception e)
{
assertTrue(getLogSink().getInternalException() instanceof IncookieUnknownException);
IncookieUnknownException e2 = (IncookieUnknownException)getLogSink().getInternalException();
assertEquals("cookie3", e2.getIncookieName());
}
try
{
page = new HttpUtils.Request("http://localhost:8181/globals/globalcookie/invalid/source2")
.cookie("cookie1", "this is the first cookie")
.cookie("cookie2", "this is the second cookie")
.retrieve();
fail();
}
catch (Exception e)
{
assertTrue(getLogSink().getInternalException() instanceof OutcookieUnknownException);
OutcookieUnknownException e2 = (OutcookieUnknownException)getLogSink().getInternalException();
assertEquals("cookie3", e2.getOutcookieName());
}
}
public void testGlobalCookiesDefault()
throws Exception
{
setupSite("site/globals.xml");
HttpUtils.Page page = HttpUtils.retrievePage("http://localhost:8181/globals/globalcookie/defaults");
assertEquals("defcookie1 : the first cookie"+
"defcookie3 : the element config value", page.getContent());
// check if the correct cookies were returned
assertTrue(page.checkReceivedCookies(new Cookie[] {
new Cookie("defcookie4", "\"the element config value\""),
new Cookie("defcookie5", "\"the fifth cookie\"")
}));
}
}