in portlet-tck_3.0/V3HeaderPortletTests/src/main/java/javax/portlet/tck/portlets/HeaderPortletTests_SPEC15_Header.java [210:699]
public void renderHeaders(HeaderRequest headerRequest,
HeaderResponse headerResponse) throws PortletException, IOException {
ModuleTestCaseDetails tcd = new ModuleTestCaseDetails();
StringWriter writer = new StringWriter();
RenderParameters renderParams = headerRequest.getRenderParameters();
String action = headerRequest.getParameter("inputval");
Boolean successTr2 = false, successTr5 = false, successTr6 = false;
Boolean successTr7 = false, successTr8 = false, successTr13 = false;
/* TestCase: V3HeaderPortletTests_SPEC15_Header_parameters10 */
/*
* Details: "The portlet-container must not propagate parameters received
* in an action or event request to subsequent header requests of the
* portlet"
*/
if (renderParams.getValue("actionURLTr0") == null
&& renderParams.getValue("tr0") != null
&& "true".equals(renderParams.getValue("tr0"))) {
TestResult tr0 = tcd.getTestResultFailed(
V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS10);
tr0.setTcSuccess(true);
tr0.writeTo(writer);
} else {
ActionURL aurl = headerResponse.createActionURL();
aurl.setParameter("actionURLTr0", "true");
TestButton tb = new TestButton(
V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS10, aurl);
tb.writeTo(writer);
}
if (action != null) {
if (action.equals(V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS13)) {
/* TestCase: V3HeaderPortletTests_SPEC15_Header_parameters13 */
/*
* Details: "If a portlet receives a render request that is the
* result of invoking a render URL targeting this portlet the render
* parameters received with the render request must be the
* parameters set on the render URL"
*/
TestResult tr2 = tcd.getTestResultFailed(
V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS13);
if (headerRequest.getParameter("renderURLTr2") != null
&& headerRequest.getParameter("tr2") != null
&& (headerRequest.getParameter("renderURLTr2").contains("tr2:" + headerRequest.getParameter("tr2")) ||
headerRequest.getParameter("renderURLTr2").contains("tr2=" + headerRequest.getParameter("tr2")))) {
tr2.setTcSuccess(true);
successTr2 = true;
} else {
tr2.appendTcDetail(
"Parameter renderURLTr2 is missing or does not contain tr2 parameter value.");
}
tr2.writeTo(writer);
} else if (action
.equals(V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS2)) {
/* TestCase: V3HeaderPortletTests_SPEC15_Header_parameters2 */
/* Details: "The parameters the request object returns must be */
/* \"x-www-form-urlencoded\" decoded" */
TestResult tr5 = tcd.getTestResultFailed(
V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS2);
if (headerRequest.getParameter("tr5") != null
&& headerRequest.getParameter("tr5").equals("true&<>'")) {
tr5.setTcSuccess(true);
successTr5 = true;
}
tr5.writeTo(writer);
} else if (action
.equals(V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS6)) {
/* TestCase: V3HeaderPortletTests_SPEC15_Header_parameters6 */
/*
* Details: "The getParameterMap method must return an unmodifiable
* Map object"
*/
TestResult tr6 = tcd.getTestResultFailed(
V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS6);
if (headerRequest.getParameterMap().containsKey("inputval")
&& V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS6.equals(
headerRequest.getParameterMap().get("inputval")[0])) {
String tr6TestStringArray[] = { "Modified Value" };
try {
headerRequest.getParameterMap().put(
"inputval", tr6TestStringArray);
if (V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS6
.equals(
headerRequest.getParameterMap().get("inputval")[0])) {
tr6.setTcSuccess(true);
successTr6 = true;
}
}
catch (UnsupportedOperationException e) {
tr6.setTcSuccess(true);
successTr6 = true;
}
}
tr6.writeTo(writer);
} else if (action.equals(
V3HEADERPORTLETTESTS_SPEC15_HEADER_PUBLICRENDERPARAMETERS15)) {
/*
* TestCase:
* V3HeaderPortletTests_SPEC15_Header_publicRenderParameters15
*/
/*
* Details: "A map of private parameters can be obtained through the
* getPrivateParameterMap method"
*/
TestResult tr7 = tcd.getTestResultFailed(
V3HEADERPORTLETTESTS_SPEC15_HEADER_PUBLICRENDERPARAMETERS15);
Map<String, String[]> privateParamMap = headerRequest
.getPrivateParameterMap();
if (privateParamMap != null && privateParamMap.containsKey("tr7")
&& privateParamMap.get("tr7")[0].equals("true")) {
tr7.setTcSuccess(true);
successTr7 = true;
}
tr7.writeTo(writer);
} else if (action.equals(
V3HEADERPORTLETTESTS_SPEC15_HEADER_PUBLICRENDERPARAMETERS16)) {
/*
* TestCase:
* V3HeaderPortletTests_SPEC15_Header_publicRenderParameters16
*/
/*
* Details: "A map of public parameters can be obtained through the
* getPublicParameterMap method"
*/
TestResult tr8 = tcd.getTestResultFailed(
V3HEADERPORTLETTESTS_SPEC15_HEADER_PUBLICRENDERPARAMETERS16);
if (headerRequest.getPublicParameterMap() != null && headerRequest
.getPublicParameterMap().containsKey("tckPRP3")) {
tr8.setTcSuccess(true);
successTr8 = true;
} else {
tr8.appendTcDetail("No public render parameter found.");
}
tr8.writeTo(writer);
} else if (action.equals(
V3HEADERPORTLETTESTS_SPEC15_HEADER_PUBLICRENDERPARAMETERS13A)) {
/*
* TestCase:
* V3HeaderPortletTests_SPEC15_Header_publicRenderParameters13a
*/
/* Details: "A public render parameter can be deleted using the */
/* removePublicRenderParameter method on the PortletURL" */
TestResult tr13 = tcd.getTestResultFailed(
V3HEADERPORTLETTESTS_SPEC15_HEADER_PUBLICRENDERPARAMETERS13A);
if (headerRequest.getPublicParameterMap() != null && !headerRequest
.getPublicParameterMap().containsKey("tckPRP3")) {
tr13.setTcSuccess(true);
successTr13 = true;
} else {
tr13.appendTcDetail("Render parameter tckPRP3 is not removed.");
}
tr13.writeTo(writer);
}
}
if (!successTr2) {
/* TestCase: V3HeaderPortletTests_SPEC15_Header_parameters13 */
/*
* Details: "If a portlet receives a render request that is the result
* of invoking a render URL targeting this portlet the render
* parameters received with the render request must be the parameters
* set on the render URL"
*/
PortletURL rurl = headerResponse.createRenderURL();
rurl.setParameters(headerRequest.getPrivateParameterMap());
rurl.setParameter("tr2", "true");
rurl.setParameter("renderURLTr2", rurl.toString());
TestButton tb = new TestButton(
V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS13, rurl);
tb.writeTo(writer);
}
if (!successTr5) {
/* TestCase: V3HeaderPortletTests_SPEC15_Header_parameters2 */
/* Details: "The parameters the request object returns must be */
/* \"x-www-form-urlencoded\" decoded" */
PortletURL purl = headerResponse.createRenderURL();
purl.setParameter("tr5", "true&<>'");
TestButton tb = new TestButton(
V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS2, purl);
tb.writeTo(writer);
}
if (!successTr6) {
/* TestCase: V3HeaderPortletTests_SPEC15_Header_parameters6 */
/*
* Details: "The getParameterMap method must return an unmodifiable Map
* object"
*/
PortletURL purl = headerResponse.createRenderURL();
TestButton tb = new TestButton(
V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS6, purl);
tb.writeTo(writer);
}
if (!successTr7) {
/*
* TestCase:
* V3HeaderPortletTests_SPEC15_Header_publicRenderParameters15
*/
/* Details: "A map of private parameters can be obtained through the */
/* getPrivateParameterMap method" */
PortletURL purl = headerResponse.createRenderURL();
purl.setParameter("tr7", "true");
TestButton tb = new TestButton(
V3HEADERPORTLETTESTS_SPEC15_HEADER_PUBLICRENDERPARAMETERS15,
purl);
tb.writeTo(writer);
}
if (!successTr8) {
/*
* TestCase:
* V3HeaderPortletTests_SPEC15_Header_publicRenderParameters16
*/
/* Details: "A map of public parameters can be obtained through the */
/* getPublicParameterMap method" */
if (headerRequest.getParameter("tckPRP3") == null) {
PortletURL purl = headerResponse.createRenderURL();
purl.setParameter("tckPRP3", "true");
TestSetupLink tl = new TestSetupLink(
V3HEADERPORTLETTESTS_SPEC15_HEADER_PUBLICRENDERPARAMETERS16,
purl);
tl.writeTo(writer);
} else {
PortletURL aurl = headerResponse.createRenderURL();
aurl.setParameters(headerRequest.getPrivateParameterMap());
TestButton tb = new TestButton(
V3HEADERPORTLETTESTS_SPEC15_HEADER_PUBLICRENDERPARAMETERS16,
aurl);
tb.writeTo(writer);
}
}
if (!successTr13) {
/*
* TestCase:
* V3HeaderPortletTests_SPEC15_Header_publicRenderParameters13a
*/
/* Details: "A public render parameter can be deleted using the */
/* removePublicRenderParameter method on the PortletURL" */
if (headerRequest.getParameter("tckPRP3") == null) {
PortletURL purl = headerResponse.createRenderURL();
purl.setParameter("tckPRP3", "true");
TestSetupLink tl = new TestSetupLink(
V3HEADERPORTLETTESTS_SPEC15_HEADER_PUBLICRENDERPARAMETERS13A,
purl);
tl.writeTo(writer);
} else {
PortletURL purl = headerResponse.createRenderURL();
purl.setParameters(headerRequest.getPrivateParameterMap());
purl.removePublicRenderParameter("tckPRP3");
TestButton tb = new TestButton(
V3HEADERPORTLETTESTS_SPEC15_HEADER_PUBLICRENDERPARAMETERS13A,
purl);
tb.writeTo(writer);
}
}
/* TestCase: V3HeaderPortletTests_SPEC15_Header_parameters15 */
/* Details: "Render parameters get automatically cleared if the portlet */
/* receives a processAction or processEvent call" */
if (headerRequest.getParameter("tr3a") != null) {
PortletURL aurl = headerResponse.createActionURL();
aurl.setParameter("tr3a", "true");
TestButton tb = new TestButton(
V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS15, aurl);
tb.writeTo(writer);
} else {
if (headerRequest.getParameter("tr3b") != null
&& headerRequest.getParameter("tr3b").equals("true")) {
TestResult tr3 = tcd.getTestResultFailed(
V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS15);
tr3.setTcSuccess(true);
tr3.writeTo(writer);
} else {
PortletURL purl = headerResponse.createRenderURL();
purl.setParameter("tr3a", "true");
TestSetupLink tl = new TestSetupLink(
V3HEADERPORTLETTESTS_SPEC15_HEADER_PARAMETERS15, purl);
tl.writeTo(writer);
}
}
/* TestCase: V3HeaderPortletTests_SPEC15_Header_properties1 */
/*
* Details: "The portlet can use the getProperty method to access single
* portal property and optionally-available HTTP header values"
*/
{
TestResult result = tcd.getTestResultFailed(
V3HEADERPORTLETTESTS_SPEC15_HEADER_PROPERTIES1);
if (headerRequest.getProperty("Accept") != null) {
result.setTcSuccess(true);
} else {
result.appendTcDetail(
"Failed because Accept header is not found in request headers.");
}
result.writeTo(writer);
}
/* TestCase: V3HeaderPortletTests_SPEC15_Header_properties2 */
/*
* Details: "The portlet can use the getProperties method to access
* multiple portal property and optionally-available HTTP header values by
* the same property name"
*/
{
TestResult result = tcd.getTestResultFailed(
V3HEADERPORTLETTESTS_SPEC15_HEADER_PROPERTIES2);
if (headerRequest.getProperties("Accept").hasMoreElements()) {
result.setTcSuccess(true);
} else {
result.appendTcDetail(
"Failed because Accept header is not found in request headers.");
}
result.writeTo(writer);
}
/* TestCase: V3HeaderPortletTests_SPEC15_Header_properties3 */
/*
* Details: "The portlet can use the getPropertyNames method to obtain an
* Enumeration of all available property names"
*/
{
TestResult result = tcd.getTestResultFailed(
V3HEADERPORTLETTESTS_SPEC15_HEADER_PROPERTIES3);
if (headerRequest.getPropertyNames().hasMoreElements()) {
result.setTcSuccess(true);
} else {
result.appendTcDetail(
"Failed because no header is not found in request headers.");
}
result.writeTo(writer);
}
/* TestCase: V3HeaderPortletTests_SPEC15_Header_properties4 */
/*
* Details: "The portlet can access cookies provided by the current
* request using the getCookies method"
*/
{
TestResult result = tcd.getTestResultFailed(
V3HEADERPORTLETTESTS_SPEC15_HEADER_PROPERTIES4);
if (headerRequest.getCookies().length > 0) {
result.setTcSuccess(true);
} else {
result.appendTcDetail(
"Failed because no cookies are found in HeaderRequest object");
}
result.writeTo(writer);
}
/* TestCase: V3HeaderPortletTests_SPEC15_Header_cookie8 */
/*
* Details: "Cookies set during the Header phase should be available to
* the portlet during the Resource phase"
*/
{
Cookie c = new Cookie("header_tr0_cookie", "true");
c.setMaxAge(100);
c.setPath("/");
headerResponse.addProperty(c);
}
/* TestCase: V3HeaderPortletTests_SPEC15_Header_cookie9 */
/*
* Details: "Cookies set during the Header phase should be available to
* the portlet during a subsequent Action phase"
*/
if (headerRequest.getParameter("trCookie1") != null
&& headerRequest.getParameter("trCookie1").equals("true")) {
TestResult tr1 = tcd
.getTestResultFailed(V3HEADERPORTLETTESTS_SPEC15_HEADER_COOKIE9);
tr1.setTcSuccess(true);
tr1.writeTo(writer);
} else {
Cookie c = new Cookie("header_tr1_cookie", "true");
c.setMaxAge(100);
c.setPath("/");
headerResponse.addProperty(c);
PortletURL aurl = headerResponse.createActionURL();
TestButton tb = new TestButton(
V3HEADERPORTLETTESTS_SPEC15_HEADER_COOKIE9, aurl);
tb.writeTo(writer);
}
/* TestCase: V3HeaderPortletTests_SPEC15_Header_cookie10 */
/*
* Details: "Cookies set during the Header phase should be available to
* the portlet during a subsequent Render phase"
*/
{
Cookie c = new Cookie("header_tr2_cookie", "true");
c.setMaxAge(100);
c.setPath("/");
headerResponse.addProperty(c);
PortletURL rurl = headerResponse.createRenderURL();
TestButton tb = new TestButton(
V3HEADERPORTLETTESTS_SPEC15_HEADER_COOKIE10, rurl);
tb.writeTo(writer);
}
/* TestCase: V3HeaderPortletTests_SPEC15_Header_cookie11 */
/*
* Details: "Cookies set during the Header phase should be available to
* the portlet during a subsequent request triggered by a URL"
*/
if (headerRequest.getParameter("tr3") != null
&& headerRequest.getParameter("tr3").equals("true")) {
Cookie[] cookies = headerRequest.getCookies();
StringBuilder txt = new StringBuilder(128);
txt.append("<p>Debug info:");
txt.append("<br>");
txt.append("# Cookies: ").append(cookies.length).append("<br>");
TestResult tr2 = tcd.getTestResultFailed(
V3HEADERPORTLETTESTS_SPEC15_HEADER_COOKIE11);
for (Cookie c : cookies) {
txt.append("Name: ").append(c.getName());
txt.append(", Value: ").append(c.getValue()).append("<br>");
if (c.getName().equals("header_tr3_cookie")
&& c.getValue().equals("true")) {
txt.append("<br>").append("Found my cookie!").append("<br>");
c.setMaxAge(0);
c.setValue("");
tr2.setTcSuccess(true);
}
}
tr2.writeTo(writer);
txt.append("</p>");
writer.append(txt.toString());
} else {
Cookie c = new Cookie("header_tr3_cookie", "true");
c.setMaxAge(100);
c.setPath("/");
headerResponse.addProperty(c);
PortletURL rurl = headerResponse.createRenderURL();
rurl.setParameter("tr3", "true");
TestButton tb = new TestButton(
V3HEADERPORTLETTESTS_SPEC15_HEADER_COOKIE11, rurl);
tb.writeTo(writer);
}
/* TestCase: V3HeaderPortletTests_SPEC15_Header_contentType5 */
/*
* Details: "If the setContentType method is not called before the
* getWriter or getPortletOutputStream method is used, the portlet
* container uses the content type returned by getResponseContentType"
*/
{
TestResult result = tcd.getTestResultFailed(
V3HEADERPORTLETTESTS_SPEC15_HEADER_CONTENTTYPE5);
if (headerRequest.getResponseContentType() != null) {
result.setTcSuccess(true);
result.appendTcDetail(
"Content type is - " + headerRequest.getResponseContentType());
} else {
result.appendTcDetail(
"Failed because getResponseContentType() method returned null");
}
result.writeTo(writer);
}
/* TestCase: V3HeaderPortletTests_SPEC15_Header_characterEncoding4 */
/*
* Details: "If the portlet does not set the character encoding, the
* portlet container uses UTF-8 as the default character encoding"
*/
{
TestResult result = tcd.getTestResultFailed(
V3HEADERPORTLETTESTS_SPEC15_HEADER_CHARACTERENCODING4);
if (headerResponse.getCharacterEncoding().equals("UTF-8")) {
result.setTcSuccess(true);
} else {
result.appendTcDetail(
"Failed because default character encoding is not UTF-8 but "
+ headerResponse.getCharacterEncoding());
}
result.writeTo(writer);
}
headerRequest.setAttribute(
RESULT_ATTR_PREFIX + "HeaderPortletTests_SPEC15_Header",
writer.toString());
}