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;
+    }
 }

Reply via email to