Polish AopProxyUtilsTests

This commit is contained in:
Sam Brannen 2022-07-10 19:50:21 +02:00
parent b560c10d4c
commit 2a0b3c1af9
1 changed files with 25 additions and 50 deletions

View File

@ -17,8 +17,6 @@
package org.springframework.aop.framework;
import java.lang.reflect.Proxy;
import java.util.Arrays;
import java.util.List;
import org.junit.jupiter.api.Test;
@ -30,107 +28,84 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
/**
* Tests for {@link AopProxyUtils}.
*
* @author Rod Johnson
* @author Chris Beams
* @author Sam Brannen
*/
public class AopProxyUtilsTests {
class AopProxyUtilsTests {
@Test
public void testCompleteProxiedInterfacesWorksWithNull() {
void completeProxiedInterfacesWorksWithNull() {
AdvisedSupport as = new AdvisedSupport();
Class<?>[] completedInterfaces = AopProxyUtils.completeProxiedInterfaces(as);
assertThat(completedInterfaces.length).isEqualTo(2);
List<?> ifaces = Arrays.asList(completedInterfaces);
assertThat(ifaces.contains(Advised.class)).isTrue();
assertThat(ifaces.contains(SpringProxy.class)).isTrue();
assertThat(completedInterfaces).containsExactly(SpringProxy.class, Advised.class);
}
@Test
public void testCompleteProxiedInterfacesWorksWithNullOpaque() {
void completeProxiedInterfacesWorksWithNullOpaque() {
AdvisedSupport as = new AdvisedSupport();
as.setOpaque(true);
Class<?>[] completedInterfaces = AopProxyUtils.completeProxiedInterfaces(as);
assertThat(completedInterfaces.length).isEqualTo(1);
assertThat(completedInterfaces).containsExactly(SpringProxy.class);
}
@Test
public void testCompleteProxiedInterfacesAdvisedNotIncluded() {
void completeProxiedInterfacesAdvisedNotIncluded() {
AdvisedSupport as = new AdvisedSupport();
as.addInterface(ITestBean.class);
as.addInterface(Comparable.class);
Class<?>[] completedInterfaces = AopProxyUtils.completeProxiedInterfaces(as);
assertThat(completedInterfaces.length).isEqualTo(4);
// Can't assume ordering for others, so use a list
List<?> l = Arrays.asList(completedInterfaces);
assertThat(l.contains(Advised.class)).isTrue();
assertThat(l.contains(ITestBean.class)).isTrue();
assertThat(l.contains(Comparable.class)).isTrue();
assertThat(completedInterfaces).containsExactly(
ITestBean.class, Comparable.class, SpringProxy.class, Advised.class);
}
@Test
public void testCompleteProxiedInterfacesAdvisedIncluded() {
void completeProxiedInterfacesAdvisedIncluded() {
AdvisedSupport as = new AdvisedSupport();
as.addInterface(ITestBean.class);
as.addInterface(Comparable.class);
as.addInterface(Advised.class);
as.addInterface(ITestBean.class);
as.addInterface(Comparable.class);
Class<?>[] completedInterfaces = AopProxyUtils.completeProxiedInterfaces(as);
assertThat(completedInterfaces.length).isEqualTo(4);
// Can't assume ordering for others, so use a list
List<?> l = Arrays.asList(completedInterfaces);
assertThat(l.contains(Advised.class)).isTrue();
assertThat(l.contains(ITestBean.class)).isTrue();
assertThat(l.contains(Comparable.class)).isTrue();
assertThat(completedInterfaces).containsExactly(
Advised.class, ITestBean.class, Comparable.class, SpringProxy.class);
}
@Test
public void testCompleteProxiedInterfacesAdvisedNotIncludedOpaque() {
void completeProxiedInterfacesAdvisedNotIncludedOpaque() {
AdvisedSupport as = new AdvisedSupport();
as.setOpaque(true);
as.addInterface(ITestBean.class);
as.addInterface(Comparable.class);
Class<?>[] completedInterfaces = AopProxyUtils.completeProxiedInterfaces(as);
assertThat(completedInterfaces.length).isEqualTo(3);
// Can't assume ordering for others, so use a list
List<?> l = Arrays.asList(completedInterfaces);
assertThat(l.contains(Advised.class)).isFalse();
assertThat(l.contains(ITestBean.class)).isTrue();
assertThat(l.contains(Comparable.class)).isTrue();
assertThat(completedInterfaces).containsExactly(ITestBean.class, Comparable.class, SpringProxy.class);
}
@Test
public void testProxiedUserInterfacesWithSingleInterface() {
void proxiedUserInterfacesWithSingleInterface() {
ProxyFactory pf = new ProxyFactory();
pf.setTarget(new TestBean());
pf.addInterface(ITestBean.class);
Object proxy = pf.getProxy();
Class<?>[] userInterfaces = AopProxyUtils.proxiedUserInterfaces(proxy);
assertThat(userInterfaces.length).isEqualTo(1);
assertThat(userInterfaces[0]).isEqualTo(ITestBean.class);
Class<?>[] userInterfaces = AopProxyUtils.proxiedUserInterfaces(pf.getProxy());
assertThat(userInterfaces).containsExactly(ITestBean.class);
}
@Test
public void testProxiedUserInterfacesWithMultipleInterfaces() {
void proxiedUserInterfacesWithMultipleInterfaces() {
ProxyFactory pf = new ProxyFactory();
pf.setTarget(new TestBean());
pf.addInterface(ITestBean.class);
pf.addInterface(Comparable.class);
Object proxy = pf.getProxy();
Class<?>[] userInterfaces = AopProxyUtils.proxiedUserInterfaces(proxy);
assertThat(userInterfaces.length).isEqualTo(2);
assertThat(userInterfaces[0]).isEqualTo(ITestBean.class);
assertThat(userInterfaces[1]).isEqualTo(Comparable.class);
Class<?>[] userInterfaces = AopProxyUtils.proxiedUserInterfaces(pf.getProxy());
assertThat(userInterfaces).containsExactly(ITestBean.class, Comparable.class);
}
@Test
public void testProxiedUserInterfacesWithNoInterface() {
void proxiedUserInterfacesWithNoInterface() {
Object proxy = Proxy.newProxyInstance(getClass().getClassLoader(), new Class[0],
(proxy1, method, args) -> null);
assertThatIllegalArgumentException().isThrownBy(() ->
AopProxyUtils.proxiedUserInterfaces(proxy));
assertThatIllegalArgumentException().isThrownBy(() -> AopProxyUtils.proxiedUserInterfaces(proxy));
}
}