This is an automated email from the ASF dual-hosted git repository. zhangliang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push: new a8c0b3d0f53 Refactor test cases on AlterMaskRuleExecutorTest (#33110) a8c0b3d0f53 is described below commit a8c0b3d0f53b1f0a736518f1d5fffaac9d35a605 Author: Liang Zhang <zhangli...@apache.org> AuthorDate: Thu Oct 3 23:36:18 2024 +0800 Refactor test cases on AlterMaskRuleExecutorTest (#33110) --- .../update/AlterEncryptRuleExecutorTest.java | 2 +- .../handler/update/AlterMaskRuleExecutorTest.java | 85 +++++++++++----------- 2 files changed, 43 insertions(+), 44 deletions(-) diff --git a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleExecutorTest.java b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleExecutorTest.java index 77ecc7b99a1..ae485ffb488 100644 --- a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleExecutorTest.java +++ b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleExecutorTest.java @@ -100,8 +100,8 @@ class AlterEncryptRuleExecutorTest { when(rule.getAllTableNames()).thenReturn(Collections.singleton("t_encrypt")); when(rule.getConfiguration()).thenReturn(createCurrentRuleConfiguration()); ContextManager contextManager = mockContextManager(rule); - MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); new DistSQLUpdateExecuteEngine(createSQLStatementWithoutAssistQueryAndLikeColumns(), "foo_db", contextManager).executeUpdate(); + MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); metaDataManagerPersistService.removeRuleConfigurationItem(eq("foo_db"), ArgumentMatchers.argThat(this::assertToBeDroppedRuleConfiguration)); metaDataManagerPersistService.alterRuleConfiguration(eq("foo_db"), ArgumentMatchers.argThat(this::assertToBeAlteredRuleConfiguration)); } diff --git a/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/AlterMaskRuleExecutorTest.java b/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/AlterMaskRuleExecutorTest.java index c5a10bd1008..36d1068dcde 100644 --- a/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/AlterMaskRuleExecutorTest.java +++ b/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/AlterMaskRuleExecutorTest.java @@ -17,18 +17,23 @@ package org.apache.shardingsphere.mask.distsql.handler.update; +import org.apache.shardingsphere.distsql.handler.engine.update.DistSQLUpdateExecuteEngine; import org.apache.shardingsphere.distsql.segment.AlgorithmSegment; import org.apache.shardingsphere.infra.exception.kernel.metadata.rule.MissingRequiredRuleException; import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase; +import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData; import org.apache.shardingsphere.mask.config.MaskRuleConfiguration; import org.apache.shardingsphere.mask.config.rule.MaskTableRuleConfiguration; import org.apache.shardingsphere.mask.distsql.segment.MaskColumnSegment; import org.apache.shardingsphere.mask.distsql.segment.MaskRuleSegment; import org.apache.shardingsphere.mask.distsql.statement.AlterMaskRuleStatement; import org.apache.shardingsphere.mask.rule.MaskRule; -import org.junit.jupiter.api.BeforeEach; +import org.apache.shardingsphere.mode.manager.ContextManager; +import org.apache.shardingsphere.mode.persist.service.MetaDataManagerPersistService; import org.junit.jupiter.api.Test; +import org.mockito.ArgumentMatchers; +import java.sql.SQLException; import java.util.Collection; import java.util.Collections; import java.util.LinkedList; @@ -38,67 +43,52 @@ import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.RETURNS_DEEP_STUBS; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; class AlterMaskRuleExecutorTest { - private final AlterMaskRuleExecutor executor = new AlterMaskRuleExecutor(); - - @BeforeEach - void setUp() { - executor.setDatabase(mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS)); - } - @Test - void assertCheckBeforeUpdateWithoutToBeAlteredRules() { + void assertExecuteUpdateWithoutToBeAlteredRules() { MaskRule rule = mock(MaskRule.class); when(rule.getConfiguration()).thenReturn(new MaskRuleConfiguration(Collections.emptyList(), Collections.emptyMap())); - executor.setRule(rule); - assertThrows(MissingRequiredRuleException.class, () -> executor.checkBeforeUpdate(createSQLStatement("MD5"))); - } - - @Test - void assertCheckBeforeUpdateWithoutToBeAlteredAlgorithm() { - MaskRule rule = mock(MaskRule.class); - when(rule.getConfiguration()).thenReturn(createCurrentRuleConfiguration()); - executor.setRule(rule); - assertThrows(MissingRequiredRuleException.class, () -> executor.checkBeforeUpdate(createSQLStatement("INVALID_TYPE"))); - } - - @Test - void assertCheckBeforeUpdateWithIncompleteDataType() { - MaskColumnSegment columnSegment = new MaskColumnSegment("user_id", new AlgorithmSegment("test", new Properties())); - MaskRuleSegment ruleSegment = new MaskRuleSegment("t_mask", Collections.singleton(columnSegment)); - AlterMaskRuleStatement statement = new AlterMaskRuleStatement(Collections.singleton(ruleSegment)); - MaskRule rule = mock(MaskRule.class); - when(rule.getConfiguration()).thenReturn(createCurrentRuleConfiguration()); - executor.setRule(rule); - assertThrows(MissingRequiredRuleException.class, () -> executor.checkBeforeUpdate(statement)); + assertThrows(MissingRequiredRuleException.class, () -> new DistSQLUpdateExecuteEngine(createSQLStatement(), "foo_db", mockContextManager(rule)).executeUpdate()); } @Test - void assertUpdate() { + void assertExecuteUpdate() throws SQLException { MaskRuleConfiguration currentRuleConfig = createCurrentRuleConfiguration(); - MaskColumnSegment columnSegment = new MaskColumnSegment("order_id", - new AlgorithmSegment("MD5", new Properties())); + MaskColumnSegment columnSegment = new MaskColumnSegment("order_id", new AlgorithmSegment("MD5", new Properties())); MaskRuleSegment ruleSegment = new MaskRuleSegment("t_order", Collections.singleton(columnSegment)); AlterMaskRuleStatement sqlStatement = new AlterMaskRuleStatement(Collections.singleton(ruleSegment)); MaskRule rule = mock(MaskRule.class); when(rule.getConfiguration()).thenReturn(currentRuleConfig); - executor.setRule(rule); - MaskRuleConfiguration toBeAlteredRuleConfig = executor.buildToBeAlteredRuleConfiguration(sqlStatement); - assertThat(toBeAlteredRuleConfig.getTables().size(), is(1)); - assertThat(toBeAlteredRuleConfig.getTables().iterator().next().getName(), is("t_order")); - assertThat(toBeAlteredRuleConfig.getTables().iterator().next().getColumns().iterator().next().getLogicColumn(), is("order_id")); - assertThat(toBeAlteredRuleConfig.getMaskAlgorithms().size(), is(1)); - assertTrue(toBeAlteredRuleConfig.getMaskAlgorithms().containsKey("t_order_order_id_md5")); + ContextManager contextManager = mockContextManager(rule); + new DistSQLUpdateExecuteEngine(sqlStatement, "foo_db", contextManager).executeUpdate(); + MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getMetaDataManagerPersistService(); + metaDataManagerPersistService.removeRuleConfigurationItem(eq("foo_db"), ArgumentMatchers.argThat(this::assertToBeDroppedRuleConfiguration)); + metaDataManagerPersistService.alterRuleConfiguration(eq("foo_db"), ArgumentMatchers.argThat(this::assertToBeAlteredRuleConfiguration)); + } + + private boolean assertToBeDroppedRuleConfiguration(final MaskRuleConfiguration actual) { + assertTrue(actual.getTables().isEmpty()); + assertTrue(actual.getMaskAlgorithms().isEmpty()); + return true; } - private AlterMaskRuleStatement createSQLStatement(final String algorithmName) { - MaskColumnSegment columnSegment = new MaskColumnSegment("user_id", - new AlgorithmSegment(algorithmName, new Properties())); + private boolean assertToBeAlteredRuleConfiguration(final MaskRuleConfiguration actual) { + assertThat(actual.getTables().size(), is(1)); + assertThat(actual.getTables().iterator().next().getName(), is("t_order")); + assertThat(actual.getTables().iterator().next().getColumns().iterator().next().getLogicColumn(), is("order_id")); + assertThat(actual.getMaskAlgorithms().size(), is(1)); + assertTrue(actual.getMaskAlgorithms().containsKey("t_order_order_id_md5")); + return true; + } + + private AlterMaskRuleStatement createSQLStatement() { + MaskColumnSegment columnSegment = new MaskColumnSegment("user_id", new AlgorithmSegment("MD5", new Properties())); MaskRuleSegment ruleSegment = new MaskRuleSegment("t_mask", Collections.singleton(columnSegment)); return new AlterMaskRuleStatement(Collections.singleton(ruleSegment)); } @@ -108,4 +98,13 @@ class AlterMaskRuleExecutorTest { tableRuleConfigs.add(new MaskTableRuleConfiguration("t_order", Collections.emptyList())); return new MaskRuleConfiguration(tableRuleConfigs, Collections.emptyMap()); } + + private ContextManager mockContextManager(final MaskRule rule) { + ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS); + when(database.getName()).thenReturn("foo_db"); + when(database.getRuleMetaData()).thenReturn(new RuleMetaData(Collections.singleton(rule))); + ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS); + when(result.getDatabase("foo_db")).thenReturn(database); + return result; + } }