WW-5326 test(ognl): update tests for StrutsContext migration

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Lukasz Lenart
2026-04-06 19:17:10 +02:00
parent cda38c79db
commit 1dda92ed23
9 changed files with 44 additions and 47 deletions
@@ -42,7 +42,7 @@ import org.apache.struts2.ognl.accessor.RootAccessor;
import org.apache.struts2.util.ValueStack;
import org.apache.struts2.util.ValueStackFactory;
import org.apache.struts2.util.reflection.ReflectionContextState;
import ognl.OgnlContext;
import org.apache.struts2.ognl.StrutsContext;
import org.apache.struts2.action.NoParameters;
import org.apache.struts2.action.ParameterNameAware;
import org.apache.struts2.action.ParameterValueAware;
@@ -353,7 +353,7 @@ public class ParametersInterceptorTest extends XWorkTestCase {
//then
assertEquals("This is blah", ((SimpleAction) proxy.getAction()).getBlah());
Field field = ReflectionContextState.class.getField("DENY_METHOD_EXECUTION");
boolean allowStaticFieldAccess = ((OgnlContext) stack.getContext()).getMemberAccess().isAccessible((OgnlContext) stack.getContext(), ReflectionContextState.class, field, "");
boolean allowStaticFieldAccess = ((StrutsContext) stack.getContext()).getMemberAccess().isAccessible((StrutsContext) stack.getContext(), ReflectionContextState.class, field, "");
assertFalse(allowStaticFieldAccess);
}
@@ -23,7 +23,6 @@ import ognl.MethodFailedException;
import ognl.NoSuchPropertyException;
import ognl.NullHandler;
import ognl.Ognl;
import ognl.OgnlContext;
import ognl.OgnlException;
import ognl.OgnlRuntime;
import ognl.SimpleNode;
@@ -90,12 +89,12 @@ public class OgnlUtilTest extends XWorkTestCase {
public void testCanSetADependentObject() {
String dogName = "fido";
OgnlRuntime.setNullHandler(Owner.class, new NullHandler() {
public Object nullMethodResult(OgnlContext context, Object o, String s, Object[] objects) {
OgnlRuntime.setNullHandler(Owner.class, new NullHandler<StrutsContext>() {
public Object nullMethodResult(StrutsContext context, Object o, String s, Object[] objects) {
return null;
}
public Object nullPropertyValue(OgnlContext context, Object o, Object o1) {
public Object nullPropertyValue(StrutsContext context, Object o, Object o1) {
String methodName = o1.toString();
String getter = "set" + methodName.substring(0, 1).toUpperCase() + methodName.substring(1);
Method[] methods = o.getClass().getDeclaredMethods();
@@ -199,7 +198,7 @@ public class OgnlUtilTest extends XWorkTestCase {
public void testExpressionIsCachedIrrespectiveOfItsExecutionStatus() {
Foo foo = new Foo();
OgnlContext context = ognlUtil.createDefaultContext(foo);
StrutsContext context = ognlUtil.createDefaultContext(foo);
// Expression which executes with success
try {
@@ -223,7 +222,7 @@ public class OgnlUtilTest extends XWorkTestCase {
ognlUtil.setContainer(container); // Must be explicitly set as the generated OgnlUtil instance has no container
ognlUtil.setEnableExpressionCache("true");
Foo foo = new Foo();
OgnlContext context = ognlUtil.createDefaultContext(foo);
StrutsContext context = ognlUtil.createDefaultContext(foo);
// Expression which executes with success
try {
@@ -243,7 +242,7 @@ public class OgnlUtilTest extends XWorkTestCase {
public void testMethodExpressionIsCachedIrrespectiveOfItsExecutionStatus() {
Foo foo = new Foo();
OgnlContext context = ognlUtil.createDefaultContext(foo);
StrutsContext context = ognlUtil.createDefaultContext(foo);
// Method expression which executes with success
try {
@@ -846,7 +845,7 @@ public class OgnlUtilTest extends XWorkTestCase {
ChainingInterceptor foo = new ChainingInterceptor();
ChainingInterceptor foo2 = new ChainingInterceptor();
OgnlContext context = ognlUtil.createDefaultContext(null);
StrutsContext context = ognlUtil.createDefaultContext(null);
SimpleNode expression = (SimpleNode) Ognl.parseExpression("{'a','ruby','b','tom'}");
Ognl.getValue(expression, context, "aksdj");
@@ -903,7 +902,7 @@ public class OgnlUtilTest extends XWorkTestCase {
public void testBeanMapExpressions() throws OgnlException, NoSuchMethodException {
Foo foo = new Foo();
OgnlContext context = ognlUtil.createDefaultContext(foo);
StrutsContext context = ognlUtil.createDefaultContext(foo);
SecurityMemberAccess sma = (SecurityMemberAccess) context.getMemberAccess();
sma.useExcludedPackageNames("org.apache.struts2.ognl");
@@ -19,7 +19,6 @@
package org.apache.struts2.ognl;
import ognl.MemberAccess;
import ognl.OgnlContext;
import org.apache.commons.lang3.reflect.FieldUtils;
import org.apache.struts2.TestBean;
import org.apache.struts2.config.ConfigurationException;
@@ -55,7 +54,7 @@ import static org.mockito.Mockito.when;
public class SecurityMemberAccessTest {
private OgnlContext context;
private StrutsContext context;
private FooBar target;
protected SecurityMemberAccess sma;
protected ProviderAllowlist mockedProviderAllowlist;
@@ -64,12 +63,12 @@ public class SecurityMemberAccessTest {
@Before
public void setUp() {
context = ognl.Ognl.createDefaultContext(null);
target = new FooBar();
mockedProviderAllowlist = mock(ProviderAllowlist.class);
mockedThreadAllowlist = mock(ThreadAllowlist.class);
proxyService = new StrutsProxyService(new StrutsProxyCacheFactory<>("1000", "basic"));
assignNewSma(true);
context = new StrutsContext(sma);
}
protected void assignNewSma(boolean allowStaticFieldAccess) {
@@ -37,7 +37,6 @@ import org.apache.struts2.util.ValueStack;
import org.apache.struts2.util.location.LocatableProperties;
import org.apache.struts2.util.reflection.ReflectionContextState;
import ognl.Ognl;
import ognl.OgnlContext;
import java.util.ArrayList;
import java.util.Collection;
@@ -57,7 +56,8 @@ public class SetPropertiesTest extends XWorkTestCase {
public void testOgnlUtilEmptyStringAsLong() {
Bar bar = new Bar();
OgnlContext context = Ognl.createDefaultContext(bar, new SecurityMemberAccess(null, null));
StrutsContext context = new StrutsContext(new SecurityMemberAccess(null, null));
context.withRoot(bar);
context.put(XWorkConverter.REPORT_CONVERSION_ERRORS, Boolean.TRUE);
bar.setId(null);
@@ -81,7 +81,7 @@ public class SetPropertiesTest extends XWorkTestCase {
ValueStack vs = ActionContext.getContext().getValueStack();
vs.getContext().put(XWorkConverter.REPORT_CONVERSION_ERRORS, Boolean.TRUE);
XWorkConverter c = (XWorkConverter) ((OgnlTypeConverterWrapper) Ognl.getTypeConverter((OgnlContext) vs.getContext())).getTarget();
XWorkConverter c = (XWorkConverter) ((OgnlTypeConverterWrapper) ((StrutsContext) vs.getContext()).getTypeConverter()).getTarget();
c.registerConverter(Cat.class.getName(), new FooBarConverter());
vs.push(foo);
@@ -97,7 +97,7 @@ public class SetPropertiesTest extends XWorkTestCase {
ValueStack vs = ActionContext.getContext().getValueStack();
vs.getContext().put(XWorkConverter.REPORT_CONVERSION_ERRORS, Boolean.TRUE);
XWorkConverter c = (XWorkConverter) ((OgnlTypeConverterWrapper) Ognl.getTypeConverter((OgnlContext) vs.getContext())).getTarget();
XWorkConverter c = (XWorkConverter) ((OgnlTypeConverterWrapper) ((StrutsContext) vs.getContext()).getTypeConverter()).getTarget();
c.registerConverter(Cat.class.getName(), new FooBarConverter());
vs.push(foo);
@@ -3,7 +3,7 @@ package org.apache.struts2.ognl;
import ognl.ClassResolver;
import ognl.MemberAccess;
import ognl.TypeConverter;
import org.junit.jupiter.api.Test;
import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
@@ -19,8 +19,8 @@
package org.apache.struts2.util;
import org.apache.struts2.ognl.SecurityMemberAccess;
import org.apache.struts2.ognl.StrutsContext;
import jakarta.servlet.jsp.tagext.TagSupport;
import ognl.OgnlContext;
import org.apache.struts2.StrutsInternalTestCase;
import org.apache.struts2.views.jsp.ActionTag;
@@ -28,12 +28,12 @@ import java.lang.reflect.Member;
public class SecurityMemberAccessInServletsTest extends StrutsInternalTestCase {
private OgnlContext context;
private StrutsContext context;
@Override
public void setUp() throws Exception {
super.setUp();
context = ognl.Ognl.createDefaultContext(null);
context = new StrutsContext(new SecurityMemberAccess(null, null));
}
public void testJavaxServletPackageAccess() throws Exception {
@@ -28,7 +28,7 @@ import org.junit.Before;
import org.junit.Test;
import org.springframework.aop.MethodBeforeAdvice;
import org.springframework.aop.framework.ProxyFactory;
import ognl.OgnlContext;
import org.apache.struts2.ognl.StrutsContext;
import java.lang.reflect.Member;
import java.lang.reflect.Method;
@@ -43,7 +43,7 @@ public class SecurityMemberAccessProxyTest extends XWorkJUnit4TestCase {
private static final String PROXY_MEMBER_METHOD = "isExposeProxy";
private static final String TEST_SUB_BEAN_CLASS_METHOD = "getIssueId";
private OgnlContext context;
private StrutsContext context;
private ActionProxy proxy;
private SecurityMemberAccess sma;
private ProxyService proxyService;
@@ -57,14 +57,13 @@ public class SecurityMemberAccessProxyTest extends XWorkJUnit4TestCase {
XmlConfigurationProvider provider = new StrutsXmlConfigurationProvider("org/apache/struts2/spring/actionContext-xwork.xml");
loadConfigurationProviders(provider);
context = ognl.Ognl.createDefaultContext(null);
proxy = actionProxyFactory.createActionProxy(null, "chaintoAOPedTestSubBeanAction", null, context);
proxyObjectProxyMember = proxy.getAction().getClass().getMethod(PROXY_MEMBER_METHOD);
proxyObjectNonProxyMember = proxy.getAction().getClass().getMethod(TEST_SUB_BEAN_CLASS_METHOD);
proxyService = new StrutsProxyService(new StrutsProxyCacheFactory<>("1000", "basic"));
sma = new SecurityMemberAccess(null, null);
sma.setProxyService(proxyService);
context = new StrutsContext(sma);
proxy = actionProxyFactory.createActionProxy(null, "chaintoAOPedTestSubBeanAction", null, context);
proxyObjectProxyMember = proxy.getAction().getClass().getMethod(PROXY_MEMBER_METHOD);
proxyObjectNonProxyMember = proxy.getAction().getClass().getMethod(TEST_SUB_BEAN_CLASS_METHOD);
}
/**
@@ -19,9 +19,9 @@
package org.apache.tiles.ognl;
import ognl.OgnlContext;
import ognl.OgnlException;
import ognl.PropertyAccessor;
import org.apache.struts2.ognl.StrutsContext;
import org.junit.Test;
import static org.easymock.EasyMock.createMock;
@@ -36,7 +36,7 @@ import static org.junit.Assert.assertEquals;
public class DelegatePropertyAccessorTest {
/**
* Test method for {@link DelegatePropertyAccessor#getProperty(OgnlContext, Object, Object)}.
* Test method for {@link DelegatePropertyAccessor#getProperty(StrutsContext, Object, Object)}.
*
* @throws OgnlException If something goes wrong.
*/
@@ -44,7 +44,7 @@ public class DelegatePropertyAccessorTest {
public void testGetProperty() throws OgnlException {
PropertyAccessorDelegateFactory<Integer> factory = createMock(PropertyAccessorDelegateFactory.class);
PropertyAccessor mockAccessor = createMock(PropertyAccessor.class);
OgnlContext context = createMock(OgnlContext.class);
StrutsContext context = createMock(StrutsContext.class);
expect(factory.getPropertyAccessor("property", 1)).andReturn(mockAccessor);
expect(mockAccessor.getProperty(context, 1, "property")).andReturn("value");
@@ -55,7 +55,7 @@ public class DelegatePropertyAccessorTest {
}
/**
* Test method for {@link DelegatePropertyAccessor#setProperty(OgnlContext, Object, Object, Object)}.
* Test method for {@link DelegatePropertyAccessor#setProperty(StrutsContext, Object, Object, Object)}.
*
* @throws OgnlException If something goes wrong.
*/
@@ -63,7 +63,7 @@ public class DelegatePropertyAccessorTest {
public void testSetProperty() throws OgnlException {
PropertyAccessorDelegateFactory<Integer> factory = createMock(PropertyAccessorDelegateFactory.class);
PropertyAccessor mockAccessor = createMock(PropertyAccessor.class);
OgnlContext context = createMock(OgnlContext.class);
StrutsContext context = createMock(StrutsContext.class);
expect(factory.getPropertyAccessor("property", 1)).andReturn(mockAccessor);
mockAccessor.setProperty(context, 1, "property", "value");
@@ -74,13 +74,13 @@ public class DelegatePropertyAccessorTest {
}
/**
* Test method for {@link DelegatePropertyAccessor#getSourceAccessor(OgnlContext, Object, Object)}.
* Test method for {@link DelegatePropertyAccessor#getSourceAccessor(StrutsContext, Object, Object)}.
*/
@Test
public void testGetSourceAccessor() {
PropertyAccessorDelegateFactory<Integer> factory = createMock(PropertyAccessorDelegateFactory.class);
PropertyAccessor mockAccessor = createMock(PropertyAccessor.class);
OgnlContext context = createMock(OgnlContext.class);
StrutsContext context = createMock(StrutsContext.class);
expect(factory.getPropertyAccessor("property", 1)).andReturn(mockAccessor);
expect(mockAccessor.getSourceAccessor(context, 1, "property")).andReturn("method");
@@ -91,13 +91,13 @@ public class DelegatePropertyAccessorTest {
}
/**
* Test method for {@link DelegatePropertyAccessor#getSourceSetter(OgnlContext, Object, Object)}.
* Test method for {@link DelegatePropertyAccessor#getSourceSetter(StrutsContext, Object, Object)}.
*/
@Test
public void testGetSourceSetter() {
PropertyAccessorDelegateFactory<Integer> factory = createMock(PropertyAccessorDelegateFactory.class);
PropertyAccessor mockAccessor = createMock(PropertyAccessor.class);
OgnlContext context = createMock(OgnlContext.class);
StrutsContext context = createMock(StrutsContext.class);
expect(factory.getPropertyAccessor("property", 1)).andReturn(mockAccessor);
expect(mockAccessor.getSourceSetter(context, 1, "property")).andReturn("method");
@@ -18,9 +18,9 @@
*/
package org.apache.tiles.ognl;
import ognl.OgnlContext;
import ognl.OgnlException;
import ognl.PropertyAccessor;
import org.apache.struts2.ognl.StrutsContext;
import org.junit.Test;
import static org.easymock.EasyMock.*;
@@ -32,7 +32,7 @@ import static org.junit.Assert.assertEquals;
public class NestedObjectDelegatePropertyAccessorTest {
/**
* Test method for {@link NestedObjectDelegatePropertyAccessor#getProperty(OgnlContext, Object, Object)}.
* Test method for {@link NestedObjectDelegatePropertyAccessor#getProperty(StrutsContext, Object, Object)}.
*
* @throws OgnlException If something goes wrong.
*/
@@ -40,7 +40,7 @@ public class NestedObjectDelegatePropertyAccessorTest {
public void testGetProperty() throws OgnlException {
NestedObjectExtractor<Integer> nestedObjectExtractor = createMock(NestedObjectExtractor.class);
PropertyAccessor propertyAccessor = createMock(PropertyAccessor.class);
OgnlContext context = createMock(OgnlContext.class);
StrutsContext context = createMock(StrutsContext.class);
expect(propertyAccessor.getProperty(context, "nested", "property")).andReturn("value");
expect(nestedObjectExtractor.getNestedObject(1)).andReturn("nested");
@@ -51,7 +51,7 @@ public class NestedObjectDelegatePropertyAccessorTest {
}
/**
* Test method for {@link NestedObjectDelegatePropertyAccessor#setProperty(OgnlContext, Object, Object, Object)}.
* Test method for {@link NestedObjectDelegatePropertyAccessor#setProperty(StrutsContext, Object, Object, Object)}.
*
* @throws OgnlException If something goes wrong.
*/
@@ -59,7 +59,7 @@ public class NestedObjectDelegatePropertyAccessorTest {
public void testSetProperty() throws OgnlException {
NestedObjectExtractor<Integer> nestedObjectExtractor = createMock(NestedObjectExtractor.class);
PropertyAccessor propertyAccessor = createMock(PropertyAccessor.class);
OgnlContext context = createMock(OgnlContext.class);
StrutsContext context = createMock(StrutsContext.class);
propertyAccessor.setProperty(context, "nested", "property", "value");
expect(nestedObjectExtractor.getNestedObject(1)).andReturn("nested");
@@ -70,13 +70,13 @@ public class NestedObjectDelegatePropertyAccessorTest {
}
/**
* Test method for {@link NestedObjectDelegatePropertyAccessor#getSourceAccessor(OgnlContext, Object, Object)}.
* Test method for {@link NestedObjectDelegatePropertyAccessor#getSourceAccessor(StrutsContext, Object, Object)}.
*/
@Test
public void testGetSourceAccessor() {
NestedObjectExtractor<Integer> nestedObjectExtractor = createMock(NestedObjectExtractor.class);
PropertyAccessor propertyAccessor = createMock(PropertyAccessor.class);
OgnlContext context = createMock(OgnlContext.class);
StrutsContext context = createMock(StrutsContext.class);
expect(propertyAccessor.getSourceAccessor(context, "nested", "property")).andReturn("method");
expect(nestedObjectExtractor.getNestedObject(1)).andReturn("nested");
@@ -87,13 +87,13 @@ public class NestedObjectDelegatePropertyAccessorTest {
}
/**
* Test method for {@link NestedObjectDelegatePropertyAccessor#getSourceSetter(OgnlContext, Object, Object)}.
* Test method for {@link NestedObjectDelegatePropertyAccessor#getSourceSetter(StrutsContext, Object, Object)}.
*/
@Test
public void testGetSourceSetter() {
NestedObjectExtractor<Integer> nestedObjectExtractor = createMock(NestedObjectExtractor.class);
PropertyAccessor propertyAccessor = createMock(PropertyAccessor.class);
OgnlContext context = createMock(OgnlContext.class);
StrutsContext context = createMock(StrutsContext.class);
expect(propertyAccessor.getSourceSetter(context, "nested", "property")).andReturn("method");
expect(nestedObjectExtractor.getNestedObject(1)).andReturn("nested");