/*
* Copyright 2002-2006,2009 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 com.opensymphony.xwork2;
import com.opensymphony.xwork2.util.ValueStack;
import com.opensymphony.xwork2.util.ValueStackFactory;
import org.apache.struts2.dispatcher.HttpParameters;
import java.util.HashMap;
import java.util.Map;
/**
* Unit test for {@link ActionContext}.
*
* @author Jason Carreira
*/
public class ActionContextTest extends XWorkTestCase {
private static final String APPLICATION_KEY = "com.opensymphony.xwork2.ActionContextTest.application";
private static final String SESSION_KEY = "com.opensymphony.xwork2.ActionContextTest.session";
private static final String PARAMETERS_KEY = "com.opensymphony.xwork2.ActionContextTest.params";
private static final String ACTION_NAME = "com.opensymphony.xwork2.ActionContextTest.actionName";
private ActionContext context;
@Override public void setUp() throws Exception {
super.setUp();
ValueStack valueStack = container.getInstance(ValueStackFactory.class).createValueStack();
Map<String, Object> extraContext = valueStack.getContext();
Map<String, Object> application = new HashMap<>();
application.put(APPLICATION_KEY, APPLICATION_KEY);
Map<String, Object> session = new HashMap<>();
session.put(SESSION_KEY, SESSION_KEY);
Map<String, Object> params = new HashMap<>();
params.put(PARAMETERS_KEY, PARAMETERS_KEY);
extraContext.put(ActionContext.APPLICATION, application);
extraContext.put(ActionContext.SESSION, session);
extraContext.put(ActionContext.PARAMETERS, HttpParameters.create(params).build());
extraContext.put(ActionContext.ACTION_NAME, ACTION_NAME);
context = new ActionContext(extraContext);
ActionContext.setContext(context);
}
public void testContextParams() {
assertTrue(ActionContext.getContext().getApplication().containsKey(APPLICATION_KEY));
assertTrue(ActionContext.getContext().getSession().containsKey(SESSION_KEY));
assertTrue(ActionContext.getContext().getParameters().contains(PARAMETERS_KEY));
assertEquals(ActionContext.getContext().getName(), ACTION_NAME);
}
public void testGetContext() {
ActionContext threadContext = ActionContext.getContext();
assertEquals(context, threadContext);
}
public void testNewActionContextCanFindDefaultTexts() {
ValueStack valueStack = context.getValueStack();
String actionErrorMessage = (String) valueStack.findValue("getText('xwork.error.action.execution')");
assertNotNull(actionErrorMessage);
assertEquals("Error during Action invocation", actionErrorMessage);
}
public void testApplication() {
Map<String, Object> app = new HashMap<>();
context.setApplication(app);
assertEquals(app, context.getApplication());
}
public void testContextMap() {
Map<String, Object> map = new HashMap<>();
context.setContextMap(map);
assertEquals(map, context.getContextMap());
}
public void testParameters() {
context.setParameters(HttpParameters.create().build());
assertEquals(0, context.getParameters().keySet().size());
}
public void testConversionErrors() {
Map<String, Object> errors = context.getConversionErrors();
assertNotNull(errors);
assertEquals(0, errors.size());
Map<String, Object> errors2 = new HashMap<>();
context.setConversionErrors(errors);
assertEquals(errors2, context.getConversionErrors());
}
public void testStaticMethods() {
assertEquals(context, ActionContext.getContext());
ActionContext context2 = new ActionContext(null);
ActionContext.setContext(context2);
assertEquals(context2, ActionContext.getContext());
}
}