From d507590abfbd1a42b750e70892c235c12a49a9fb Mon Sep 17 00:00:00 2001 From: Enrico Freni Date: Mon, 2 Oct 2023 13:11:01 +0200 Subject: [PATCH] Add missing unit tests for SimpleAliasRegistry Closes gh-31348 --- .../core/SimpleAliasRegistryTests.java | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/spring-core/src/test/java/org/springframework/core/SimpleAliasRegistryTests.java b/spring-core/src/test/java/org/springframework/core/SimpleAliasRegistryTests.java index 5d5dc9dd57..597afe6096 100644 --- a/spring-core/src/test/java/org/springframework/core/SimpleAliasRegistryTests.java +++ b/spring-core/src/test/java/org/springframework/core/SimpleAliasRegistryTests.java @@ -18,7 +18,13 @@ package org.springframework.core; import org.junit.jupiter.api.Test; +import org.springframework.util.StringValueResolver; + import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException; +import static org.assertj.core.api.Assertions.assertThatIllegalStateException; +import static org.mockito.BDDMockito.given; +import static org.mockito.BDDMockito.mock; /** * Unit tests for {@link SimpleAliasRegistry}. @@ -43,6 +49,7 @@ class SimpleAliasRegistryTests { assertThat(registry.canonicalName("testAlias")).isEqualTo("test"); assertThat(registry.canonicalName("testAlias2")).isEqualTo("test"); assertThat(registry.canonicalName("testAlias3")).isEqualTo("test"); + } @Test // SPR-17191 @@ -95,4 +102,52 @@ class SimpleAliasRegistryTests { assertThat(registry.getAliases("testAlias3")).isEmpty(); } + @Test + void testCheckForAliasCircle() { + String name = "testName"; + String alias = "testAlias"; + registry.checkForAliasCircle(name, alias); + registry.registerAlias(name, alias); + assertThatIllegalStateException() + .isThrownBy(() -> registry.checkForAliasCircle(alias, name)); + } + + @Test + void testResolveAliases() { + assertThatIllegalArgumentException() + .isThrownBy(() -> registry.resolveAliases(null)); + + StringValueResolver mock = mock(); + + registry.registerAlias("testName1", "testAlias1"); + registry.registerAlias("testName2", "testAlias2"); + given(mock.resolveStringValue("testAlias2")).willReturn("anotherAlias2"); + given(mock.resolveStringValue("testName2")).willReturn("anotherName2"); + registry.resolveAliases(mock); + assertThat(registry.getAliases("anotherName2")).containsExactly("anotherAlias2"); + + registry.registerAlias("testName3", "testAlias3"); + registry.registerAlias("testName4", "testAlias4"); + registry.registerAlias("testName5", "testAlias5"); + given(mock.resolveStringValue("testName5")).willReturn("testName5"); + given(mock.resolveStringValue("testAlias5")).willReturn("testAlias5"); + given(mock.resolveStringValue("testName3")).willReturn("testName4"); + given(mock.resolveStringValue("testAlias3")).willReturn("testAlias4"); + given(mock.resolveStringValue("testName4")).willReturn("testName4"); + given(mock.resolveStringValue("testAlias4")).willReturn("testAlias5"); + assertThatIllegalStateException() + .isThrownBy(() -> registry.resolveAliases(mock)); + + given(mock.resolveStringValue("testName4")).willReturn("testName5"); + given(mock.resolveStringValue("testAlias4")).willReturn("testAlias4"); + assertThatIllegalStateException() + .isThrownBy(() -> registry.resolveAliases(mock)); + + given(mock.resolveStringValue("testName4")).willReturn("testName4"); + given(mock.resolveStringValue("testAlias4")).willReturn("testAlias5"); + registry.resolveAliases(mock); + assertThat(registry.getAliases("testName4")).containsExactly("testAlias4"); + assertThat(registry.getAliases("testName5")).containsExactly("testAlias5"); + } + }