blob: df1080358b841612b7f12930f9354bd22a20107c [file] [log] [blame]
/*
* Copyright 2003,2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.pluto.testsuite.test;
import org.apache.pluto.testsuite.TestResult;
import javax.portlet.*;
import java.util.*;
/**
* Tests basic attribute retrieval and storage functions within
* the portlet request, session, and context objects.
*
* @author <a href="mailto:ddewolf@apache.org">David H. DeWolf</a>
* @author <a href="mailto:zheng@apache.org">ZHENG Zhong</a>
*/
public class ResourceBundleTest extends AbstractReflectivePortletTest {
// Static Constant Definitions ---------------------------------------------
/** Key for portlet title defined in portlet.xml/init-param. */
private static final String TITLE_KEY = "javax.portlet.title";
/** Key for portlet short title defined in portlet.xml/init-param. */
private static final String SHORT_TITLE_KEY = "javax.portlet.short-title";
/** Key for portlet keywords defined in portlet.xml/init-param. */
private static final String KEYWORDS_KEY = "javax.portlet.keywords";
/**
* Parameter name for if resource bundle is declared in
* <code>testsuite-config/init-param</code>.
*/
private static final String BUNDLE_DECLARED_PARAM = "resource-bundle";
/**
* Parameter name for portlet title in
* <code>testsuite-config/init-param</code>.
*/
private static final String TITLE_PARAM = "title";
/**
* Parameter name for portlet short title in
* <code>testsuite-config/init-param</code>.
*/
private static final String SHORT_TITLE_PARAM = "short-title";
/**
* Parameter name for portlet keywords in
* <code>testsuite-config/init-param</code>.
*/
private static final String KEYWORDS_PARAM = "keywords";
// Test Methods ------------------------------------------------------------
protected TestResult checkResourceBundleExists(PortletConfig config,
PortletRequest request) {
TestResult result = new TestResult();
result.setDescription("Ensure the resource bundle is not null.");
ResourceBundle bundle = config.getResourceBundle(request.getLocale());
if (bundle != null) {
result.setReturnCode(TestResult.PASSED);
} else {
result.setReturnCode(TestResult.FAILED);
result.setResultMessage("Unable to retrieve resource bundle "
+ "for locale: " + request.getLocale());
}
return result;
}
protected TestResult checkGetNames(PortletConfig config,
PortletRequest request) {
TestResult result = new TestResult();
result.setDescription("Retrieve the property names and ensure that "
+ "the required keys are present.");
List requiredKeys = new ArrayList();
requiredKeys.add(TITLE_KEY);
requiredKeys.add(SHORT_TITLE_KEY);
requiredKeys.add(KEYWORDS_KEY);
ResourceBundle bundle = config.getResourceBundle(request.getLocale());
if (bundle == null) {
result.setReturnCode(TestResult.WARNING);
result.setResultMessage("A function upon which this test depends "
+ "failed to execute as expected. "
+ "Check the other test results in this test suite.");
return result;
}
for (Enumeration en = bundle.getKeys(); en.hasMoreElements(); ) {
String key = (String) en.nextElement();
requiredKeys.remove(key);
}
if (requiredKeys.isEmpty()) {
result.setReturnCode(TestResult.PASSED);
} else {
result.setReturnCode(TestResult.FAILED);
StringBuffer buffer = new StringBuffer();
for (Iterator it = requiredKeys.iterator(); it.hasNext(); ) {
buffer.append(it.next()).append(", ");
}
result.setResultMessage("Required keys [" + buffer.toString()
+ "] are missing in the resource bundle.");
}
return result;
}
protected TestResult checkGetGermanBundle(PortletConfig config,
PortletRequest request) {
return doGenericLocaleRequiredFields(config,
request,
Locale.GERMAN);
}
protected TestResult checkGetEnglishBundle(PortletConfig config,
PortletRequest request) {
return doGenericLocaleRequiredFields(config,
request,
Locale.ENGLISH);
}
/*
protected TestResult checkGetDfltBundle(PortletConfig config,
PortletRequest req) {
return doGenericLocaleRequiredFields(config, req, new Locale("dflt"));
}
*/
// Private Methods ---------------------------------------------------------
private TestResult doGenericLocaleRequiredFields(PortletConfig config,
PortletRequest request,
Locale locale) {
TestResult result = new TestResult();
result.setDescription("Retrieve the title and ensure it's set properly "
+ "under local " + locale);
// Retrieve title, short title and keywords from portlet resource bundle.
ResourceBundle bundle = config.getResourceBundle(locale);
if (bundle == null) {
result.setReturnCode(TestResult.WARNING);
result.setResultMessage("A function upon which this test depends "
+ "failed to execute as expected. "
+ "Check the other test results in this test suite.");
return result;
}
String title = bundle.getString(TITLE_KEY);
String shortTitle = bundle.getString(SHORT_TITLE_KEY);
String keywords = bundle.getString(KEYWORDS_KEY);
// Retrieve expected title, short title and keywords from test config.
String suffix = isBundleDeclared() ? ("_" + locale.getLanguage()) : "";
Map initParams = getInitParameters();
String expectedTitle = (String) initParams.get(
TITLE_PARAM + suffix);
String expectedShortTitle = (String) initParams.get(
SHORT_TITLE_PARAM + suffix);
String expectedKeywords = (String) initParams.get(
KEYWORDS_PARAM + suffix);
// Assert that values retrieved from resource bundler are expected.
boolean inconsistent = false;
StringBuffer buffer = new StringBuffer();
buffer.append("The following information is not correct: ");
if (title == null || expectedTitle == null
|| !title.trim().equals(expectedTitle.trim())) {
inconsistent = true;
buffer.append("Inconsistent title: '")
.append(title).append("' != '")
.append(expectedTitle).append("'; ");
}
if (shortTitle == null || expectedShortTitle == null
|| !shortTitle.trim().equals(expectedShortTitle.trim())) {
inconsistent = true;
buffer.append("Inconsistent short title: '")
.append(shortTitle).append("' != '")
.append(expectedShortTitle).append("'; ");
}
if (keywords == null || expectedKeywords == null
|| !keywords.trim().equals(expectedKeywords.trim())) {
inconsistent = true;
buffer.append("Inconsistent keywords: '")
.append(keywords).append("' != '")
.append(expectedKeywords).append("'; ");
}
if (!inconsistent) {
result.setReturnCode(TestResult.PASSED);
} else {
result.setReturnCode(TestResult.FAILED);
result.setResultMessage(buffer.toString());
}
return result;
}
private boolean isBundleDeclared() {
String bundleDeclared = (String) getInitParameters().get(
BUNDLE_DECLARED_PARAM);
if (Boolean.TRUE.toString().equalsIgnoreCase(bundleDeclared)) {
return true;
} else {
return false;
}
}
}