/*
* Copyright 2001-2008 Geert Bevin (gbevin[remove] at uwyn dot com)
* Licensed under the Apache License, Version 2.0 (the "License")
* $Id: TestXml2ElementInfo.java 3928 2008-04-22 16:25:18Z gbevin $
*/
package com.uwyn.rife.engine;
import com.uwyn.rife.database.Datasources;
import com.uwyn.rife.engine.exceptions.ParsingErrorException;
import com.uwyn.rife.engine.exceptions.PropertyValueRetrievalException;
import com.uwyn.rife.ioc.exceptions.ParticipantUnknownException;
import com.uwyn.rife.ioc.exceptions.TemplateFactoryUnknownException;
import com.uwyn.rife.rep.Rep;
import com.uwyn.rife.resources.ResourceFinderClasspath;
import com.uwyn.rife.template.Template;
import com.uwyn.rife.template.TemplateFactory;
import java.util.LinkedHashMap;
import java.util.ArrayList;
import junit.framework.TestCase;
public class TestXml2ElementInfo extends TestCase
{
public TestXml2ElementInfo(String name)
{
super(name);
}
public void testInstantiation()
{
SiteBuilder site_builder = new SiteBuilder("test", ResourceFinderClasspath.getInstance());
ElementInfoBuilder elementinfo_builder = site_builder.enterElement("manual://test");
assertNotNull(elementinfo_builder);
}
public void testParser()
{
SiteBuilder site_builder = new SiteBuilder("test", ResourceFinderClasspath.getInstance());
ElementInfoBuilder elementinfo_builder = site_builder.enterElement("xml:xml/test_xml2elementinfo1.xml");
elementinfo_builder.process();
ElementInfo elementinfo = elementinfo_builder.createElementInfo(new LinkedHashMap<String, GlobalExit>(), new LinkedHashMap<String, GlobalVar>(), new LinkedHashMap<String, String>(), new LinkedHashMap<String, BeanDeclaration>(), new ArrayList<ErrorHandler>());
assertEquals(elementinfo.getPropertyNames().size(), 7+Rep.getProperties().size());
assertTrue(elementinfo.containsProperty("property1"));
assertTrue(elementinfo.containsProperty("property2"));
assertTrue(elementinfo.containsProperty("property3"));
assertTrue(elementinfo.containsProperty("property4"));
assertEquals("value1", elementinfo.getProperty("property1"));
assertTrue(elementinfo.getProperty("property2") instanceof Template);
assertEquals(((Template)elementinfo.getProperty("property2")).getContent(), TemplateFactory.ENGINEHTML.get("noblocks_in").getContent());
assertEquals("the value 3", elementinfo.getProperty("property3"));
assertSame(Datasources.getRepInstance().getDatasource("unittestspgsql"), elementinfo.getProperty("property4"));
assertEquals("unittests\n pgsql", elementinfo.getProperty("property5"));
try
{
elementinfo.getProperty("property6");
fail("exception wasn't thrown");
}
catch (PropertyValueRetrievalException e)
{
assertTrue(e.getCause() instanceof ParticipantUnknownException);
assertEquals("doesntexist", ((ParticipantUnknownException)e.getCause()).getName());
}
try
{
elementinfo.getProperty("property7");
fail("exception wasn't thrown");
}
catch (PropertyValueRetrievalException e)
{
assertTrue(e.getCause() instanceof TemplateFactoryUnknownException);
assertEquals("unknowntype", ((TemplateFactoryUnknownException)e.getCause()).getType());
}
assertEquals(elementinfo.getInputNames().size(), 26);
assertTrue(elementinfo.containsInput("input1"));
assertTrue(elementinfo.containsInput("input2"));
assertTrue(elementinfo.containsInput("input3"));
assertTrue(elementinfo.containsInput("string1"));
assertTrue(elementinfo.containsInput("string2"));
assertTrue(elementinfo.containsInput("string3"));
assertTrue(elementinfo.containsInput("enum4"));
assertTrue(elementinfo.containsInput("date5"));
assertTrue(elementinfo.containsInput("string6"));
assertTrue(elementinfo.containsInput("string7"));
assertTrue(elementinfo.containsInput("string8"));
assertTrue(elementinfo.containsInput("prefix_string1"));
assertTrue(elementinfo.containsInput("prefix_string2"));
assertTrue(elementinfo.containsInput("prefix_string3"));
assertTrue(elementinfo.containsInput("prefix_enum4"));
assertTrue(elementinfo.containsInput("prefix_date5"));
assertTrue(elementinfo.containsInput("prefixgroup_enum"));
assertTrue(elementinfo.containsInput("prefixgroup_string"));
assertTrue(elementinfo.containsInput("prefixgroup_int"));
assertTrue(elementinfo.containsInput("prefixgroup_longObject"));
assertTrue(elementinfo.containsInput("prefixgroup_short"));
assertTrue(elementinfo.containsInput("enum"));
assertTrue(elementinfo.containsInput("string"));
assertTrue(elementinfo.containsInput("int"));
assertTrue(elementinfo.containsInput("longObject"));
assertTrue(elementinfo.containsInput("short"));
assertEquals(elementinfo.getOutputNames().size(), 27);
assertTrue(elementinfo.containsOutput("output1"));
assertTrue(elementinfo.containsOutput("output2"));
assertTrue(elementinfo.containsOutput("output3"));
assertTrue(elementinfo.containsOutput("output4"));
assertTrue(elementinfo.containsOutput("string1"));
assertTrue(elementinfo.containsOutput("string2"));
assertTrue(elementinfo.containsOutput("string3"));
assertTrue(elementinfo.containsOutput("enum4"));
assertTrue(elementinfo.containsOutput("date5"));
assertTrue(elementinfo.containsOutput("string6"));
assertTrue(elementinfo.containsOutput("string7"));
assertTrue(elementinfo.containsOutput("string8"));
assertTrue(elementinfo.containsOutput("prefix_enum4"));
assertTrue(elementinfo.containsOutput("prefix_date5"));
assertTrue(elementinfo.containsOutput("prefix_string6"));
assertTrue(elementinfo.containsOutput("prefix_string7"));
assertTrue(elementinfo.containsOutput("prefix_string8"));
assertTrue(elementinfo.containsOutput("prefixgroup_enum"));
assertTrue(elementinfo.containsOutput("prefixgroup_string"));
assertTrue(elementinfo.containsOutput("prefixgroup_int"));
assertTrue(elementinfo.containsOutput("prefixgroup_longObject"));
assertTrue(elementinfo.containsOutput("prefixgroup_short"));
assertTrue(elementinfo.containsOutput("enum"));
assertTrue(elementinfo.containsOutput("string"));
assertTrue(elementinfo.containsOutput("int"));
assertTrue(elementinfo.containsOutput("longObject"));
assertTrue(elementinfo.containsOutput("short"));
assertEquals(elementinfo.getIncookieNames().size(), 2);
assertTrue(elementinfo.containsIncookie("incookie1"));
assertTrue(elementinfo.containsIncookie("incookie2"));
assertEquals(elementinfo.getOutcookieNames().size(), 4);
assertTrue(elementinfo.containsOutcookie("outcookie1"));
assertTrue(elementinfo.containsOutcookie("outcookie2"));
assertTrue(elementinfo.containsOutcookie("outcookie3"));
assertTrue(elementinfo.containsOutcookie("outcookie4"));
assertEquals(elementinfo.getNamedInbeanNames().size(), 2);
assertTrue(elementinfo.containsNamedInbean("inbean1"));
assertEquals(elementinfo.getNamedInbeanInfo("inbean1").getClassname(), "com.uwyn.rife.engine.testelements.exits.BeanImpl1");
assertEquals(elementinfo.getNamedInbeanInfo("inbean1").getPrefix(), null);
assertEquals(elementinfo.getNamedInbeanInfo("inbean1").getGroupName(), null);
assertTrue(elementinfo.containsNamedInbean("inbean2"));
assertEquals(elementinfo.getNamedInbeanInfo("inbean2").getClassname(), "com.uwyn.rife.engine.testelements.submission.BeanImpl");
assertEquals(elementinfo.getNamedInbeanInfo("inbean2").getPrefix(), "prefixgroup_");
assertEquals(elementinfo.getNamedInbeanInfo("inbean2").getGroupName(), "somegroup");
assertEquals(elementinfo.getNamedOutbeanNames().size(), 2);
assertTrue(elementinfo.containsNamedOutbean("outbean1"));
assertEquals(elementinfo.getNamedOutbeanInfo("outbean1").getClassname(), "com.uwyn.rife.engine.testelements.exits.BeanImpl2");
assertEquals(elementinfo.getNamedOutbeanInfo("outbean1").getPrefix(), "prefix_");
assertEquals(elementinfo.getNamedOutbeanInfo("outbean1").getGroupName(), null);
assertTrue(elementinfo.containsNamedOutbean("outbean2"));
assertEquals(elementinfo.getNamedOutbeanInfo("outbean2").getClassname(), "com.uwyn.rife.engine.testelements.submission.BeanImpl");
assertEquals(elementinfo.getNamedOutbeanInfo("outbean2").getPrefix(), null);
assertEquals(elementinfo.getNamedOutbeanInfo("outbean2").getGroupName(), "somegroup");
assertEquals(elementinfo.getChildTriggerNames().size(), 2);
assertTrue(elementinfo.containsChildTrigger("input1"));
assertTrue(elementinfo.containsChildTrigger("input2"));
assertEquals(elementinfo.getExitNames().size(), 4);
assertTrue(elementinfo.containsExit("exit1"));
assertTrue(elementinfo.containsExit("exit2"));
assertTrue(elementinfo.containsExit("exit3"));
assertTrue(elementinfo.containsExit("exit4"));
assertEquals(elementinfo.getSubmissionNames().size(), 2);
assertTrue(elementinfo.containsSubmission("submission1"));
assertTrue(elementinfo.containsSubmission("submission2"));
assertNotNull(elementinfo.getSubmission("submission1"));
assertNotNull(elementinfo.getSubmission("submission2"));
assertEquals(elementinfo.getSubmission("submission1").getParameterNames().size(), 3);
assertTrue(elementinfo.getSubmission("submission1").containsParameter("param1"));
assertTrue(elementinfo.getSubmission("submission1").containsParameter("param2"));
assertTrue(elementinfo.getSubmission("submission1").containsParameter("param3"));
assertEquals(elementinfo.getSubmission("submission1").getParameterRegexps().size(), 2);
assertTrue(elementinfo.getSubmission("submission1").containsParameter("paramA1"));
assertTrue(elementinfo.getSubmission("submission1").containsParameter("paramA2"));
assertTrue(elementinfo.getSubmission("submission1").containsParameter("paramB1"));
assertTrue(elementinfo.getSubmission("submission1").containsParameter("paramB2"));
assertEquals(elementinfo.getSubmission("submission1").getFileNames().size(), 2);
assertTrue(elementinfo.getSubmission("submission1").containsFile("file1"));
assertTrue(elementinfo.getSubmission("submission1").containsFile("file2"));
assertEquals(elementinfo.getSubmission("submission2").getParameterNames().size(), 2);
assertTrue(elementinfo.getSubmission("submission2").containsParameter("param1"));
assertTrue(elementinfo.getSubmission("submission2").containsParameter("param2"));
assertEquals(elementinfo.getSubmission("submission2").getParameterRegexps().size(), 1);
assertTrue(elementinfo.getSubmission("submission2").containsParameter("paramC1"));
assertTrue(elementinfo.getSubmission("submission2").containsParameter("paramC2"));
assertEquals(elementinfo.getSubmission("submission2").getFileNames().size(), 1);
assertTrue(elementinfo.getSubmission("submission2").containsFile("file1"));
}
public void testFlawedSubmissionParamRegexpname()
{
SiteBuilder site_builder = new SiteBuilder("test", ResourceFinderClasspath.getInstance());
ElementInfoBuilder elementinfo_builder = site_builder.enterElement("element/flawed/submission_param_regexpname.xml");
try
{
elementinfo_builder.process();
fail();
}
catch (ParsingErrorException e)
{
assertTrue(true);
}
}
public void testFlawedSubmissionParamRegexpdefaults()
{
SiteBuilder site_builder = new SiteBuilder("test", ResourceFinderClasspath.getInstance());
ElementInfoBuilder elementinfo_builder = site_builder.enterElement("element/flawed/submission_param_regexpdefaults.xml");
try
{
elementinfo_builder.process();
fail();
}
catch (ParsingErrorException e)
{
assertTrue(true);
}
}
}