This is an automated email from the ASF dual-hosted git repository.

duanzhengqiang 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 df7221a228e Fix show create table for encrypt. (#21890)
df7221a228e is described below

commit df7221a228ee9ec627dfbcc7bb070c31d9e24796
Author: Chuxin Chen <[email protected]>
AuthorDate: Tue Nov 1 20:44:22 2022 +0800

    Fix show create table for encrypt. (#21890)
---
 .../show/EncryptShowCreateTableMergedResult.java   | 29 ++++++------
 ...atedEncryptShowCreateTableMergedResultTest.java | 53 ++++++++++++++--------
 ...rgedEncryptShowCreateTableMergedResultTest.java | 30 ++++++------
 3 files changed, 64 insertions(+), 48 deletions(-)

diff --git 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowCreateTableMergedResult.java
 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowCreateTableMergedResult.java
index 6555980741b..d0e14cce8ea 100644
--- 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowCreateTableMergedResult.java
+++ 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowCreateTableMergedResult.java
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.encrypt.merge.dal.show;
 
 import com.google.common.base.Preconditions;
 import com.google.common.base.Splitter;
-import org.apache.shardingsphere.encrypt.rule.EncryptColumn;
 import org.apache.shardingsphere.encrypt.rule.EncryptRule;
 import org.apache.shardingsphere.encrypt.rule.EncryptTable;
 import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
@@ -30,8 +29,10 @@ import java.io.InputStream;
 import java.sql.SQLException;
 import java.sql.SQLFeatureNotSupportedException;
 import java.util.Calendar;
+import java.util.Collection;
 import java.util.List;
 import java.util.Optional;
+import java.util.stream.Collectors;
 
 /**
  * Encrypt show create table merged result.
@@ -68,9 +69,7 @@ public abstract class EncryptShowCreateTableMergedResult 
implements MergedResult
             StringBuilder builder = new StringBuilder(result.substring(0, 
result.indexOf("(") + 1));
             List<String> columnDefinitions = 
Splitter.on(COMMA).splitToList(result.substring(result.indexOf("(") + 1, 
result.lastIndexOf(")")));
             for (String each : columnDefinitions) {
-                for (String logicColumn : 
encryptTable.get().getLogicColumns()) {
-                    findLogicColumnDefinition(each, logicColumn, 
encryptTable.get()).ifPresent(optional -> 
builder.append(optional).append(COMMA));
-                }
+                findLogicColumnDefinition(each, 
encryptTable.get()).ifPresent(optional -> 
builder.append(optional).append(COMMA));
             }
             builder.deleteCharAt(builder.length() - 
1).append(result.substring(result.lastIndexOf(")")));
             return builder.toString();
@@ -78,21 +77,21 @@ public abstract class EncryptShowCreateTableMergedResult 
implements MergedResult
         return getOriginalValue(columnIndex, type);
     }
     
-    private Optional<String> findLogicColumnDefinition(final String 
columnDefinition, final String logicColumn, final EncryptTable encryptTable) {
-        Optional<EncryptColumn> encryptColumn = 
encryptTable.findEncryptColumn(logicColumn);
-        if (!encryptColumn.isPresent()) {
-            return Optional.of(columnDefinition);
+    private Optional<String> findLogicColumnDefinition(final String 
columnDefinition, final EncryptTable encryptTable) {
+        Collection<String> cipherColumns = 
encryptTable.getLogicColumns().stream().map(encryptTable::getCipherColumn).collect(Collectors.toList());
+        for (String each : cipherColumns) {
+            if (columnDefinition.contains(each)) {
+                return Optional.of(columnDefinition.replace(each, 
encryptTable.getLogicColumnByCipherColumn(each)));
+            }
         }
-        Optional<String> assistedQueryColumn = 
encryptColumn.get().getAssistedQueryColumn();
-        if (assistedQueryColumn.isPresent() && 
columnDefinition.contains(assistedQueryColumn.get())) {
+        if 
(encryptTable.getPlainColumns().stream().anyMatch(columnDefinition::contains)) {
             return Optional.empty();
         }
-        Optional<String> plainColumn = encryptColumn.get().getPlainColumn();
-        if (columnDefinition.contains(encryptColumn.get().getCipherColumn())) {
-            return plainColumn.isPresent() ? Optional.empty() : 
Optional.of(columnDefinition.replace(encryptColumn.get().getCipherColumn(), 
logicColumn));
+        if 
(encryptTable.getAssistedQueryColumns().stream().anyMatch(columnDefinition::contains))
 {
+            return Optional.empty();
         }
-        if (plainColumn.isPresent() && 
columnDefinition.contains(plainColumn.get())) {
-            return Optional.of(columnDefinition.replace(plainColumn.get(), 
logicColumn));
+        if 
(encryptTable.getFuzzyQueryColumns().stream().anyMatch(columnDefinition::contains))
 {
+            return Optional.empty();
         }
         return Optional.of(columnDefinition);
     }
diff --git 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/DecoratedEncryptShowCreateTableMergedResultTest.java
 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/DecoratedEncryptShowCreateTableMergedResultTest.java
index 454b6fefb8f..c2ac1ab2be6 100644
--- 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/DecoratedEncryptShowCreateTableMergedResultTest.java
+++ 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/DecoratedEncryptShowCreateTableMergedResultTest.java
@@ -17,7 +17,8 @@
 
 package org.apache.shardingsphere.encrypt.merge.dal.show;
 
-import org.apache.shardingsphere.encrypt.rule.EncryptColumn;
+import 
org.apache.shardingsphere.encrypt.api.config.rule.EncryptColumnRuleConfiguration;
+import 
org.apache.shardingsphere.encrypt.api.config.rule.EncryptTableRuleConfiguration;
 import org.apache.shardingsphere.encrypt.rule.EncryptRule;
 import org.apache.shardingsphere.encrypt.rule.EncryptTable;
 import 
org.apache.shardingsphere.infra.binder.statement.dal.ShowCreateTableStatementContext;
@@ -31,12 +32,14 @@ import org.mockito.Mock;
 import org.mockito.junit.MockitoJUnitRunner;
 
 import java.sql.SQLException;
+import java.util.Collection;
 import java.util.Collections;
+import java.util.LinkedList;
 import java.util.Optional;
 
 import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertFalse;
 import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
@@ -64,8 +67,8 @@ public final class 
DecoratedEncryptShowCreateTableMergedResultTest {
         when(mergedResult.getValue(2, String.class)).thenReturn(
                 "CREATE TABLE `t_encrypt` (`id` INT NOT NULL, `user_id_cipher` 
VARCHAR(100) NOT NULL, "
                         + "`user_id` VARCHAR(100) NOT NULL, `order_id` 
VARCHAR(30) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT 
CHARSET=utf8mb4;");
-        DecoratedEncryptShowCreateTableMergedResult actual =
-                
createDecoratedEncryptShowCreateTableMergedResult(mergedResult, 
mockEncryptRule(new EncryptColumn("user_id_cipher", null, null, "user_id", 
null, false)));
+        DecoratedEncryptShowCreateTableMergedResult actual = 
createDecoratedEncryptShowCreateTableMergedResult(mergedResult,
+                mockEncryptRule(Collections.singletonList(new 
EncryptColumnRuleConfiguration("user_id", "user_id_cipher", null, "user_id", 
null, false))));
         assertTrue(actual.next());
         assertThat(actual.getValue(2, String.class),
                 is("CREATE TABLE `t_encrypt` (`id` INT NOT NULL, `user_id` 
VARCHAR(100) NOT NULL, `order_id` VARCHAR(30) NOT NULL, PRIMARY KEY (`id`)) 
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"));
@@ -77,8 +80,8 @@ public final class 
DecoratedEncryptShowCreateTableMergedResultTest {
         when(mergedResult.getValue(2, String.class)).thenReturn(
                 "CREATE TABLE `t_encrypt` (`id` INT NOT NULL, `user_id_cipher` 
VARCHAR(100) NOT NULL, "
                         + "`user_id_assisted` VARCHAR(100) NOT NULL, 
`order_id` VARCHAR(30) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT 
CHARSET=utf8mb4;");
-        DecoratedEncryptShowCreateTableMergedResult actual =
-                
createDecoratedEncryptShowCreateTableMergedResult(mergedResult, 
mockEncryptRule(new EncryptColumn("user_id_cipher", "user_id_assisted", "", 
null, null, false)));
+        DecoratedEncryptShowCreateTableMergedResult actual = 
createDecoratedEncryptShowCreateTableMergedResult(mergedResult,
+                mockEncryptRule(Collections.singletonList(new 
EncryptColumnRuleConfiguration("user_id", "user_id_cipher", "user_id_assisted", 
null, null, false))));
         assertTrue(actual.next());
         assertThat(actual.getValue(2, String.class),
                 is("CREATE TABLE `t_encrypt` (`id` INT NOT NULL, `user_id` 
VARCHAR(100) NOT NULL, `order_id` VARCHAR(30) NOT NULL, PRIMARY KEY (`id`)) 
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"));
@@ -90,11 +93,11 @@ public final class 
DecoratedEncryptShowCreateTableMergedResultTest {
         when(mergedResult.getValue(2, String.class)).thenReturn(
                 "CREATE TABLE `t_encrypt` (`id` INT NOT NULL, `user_id_cipher` 
VARCHAR(100) NOT NULL, "
                         + "`user_id_fuzzy` VARCHAR(100) NOT NULL, `order_id` 
VARCHAR(30) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT 
CHARSET=utf8mb4;");
-        DecoratedEncryptShowCreateTableMergedResult actual =
-                
createDecoratedEncryptShowCreateTableMergedResult(mergedResult, 
mockEncryptRule(new EncryptColumn("user_id_cipher", "", "user_id_fuzzy", null, 
null, false)));
+        DecoratedEncryptShowCreateTableMergedResult actual = 
createDecoratedEncryptShowCreateTableMergedResult(mergedResult,
+                mockEncryptRule(Collections.singletonList(new 
EncryptColumnRuleConfiguration("user_id", "user_id_cipher", "", 
"user_id_fuzzy", null, null, null, null, false))));
         assertTrue(actual.next());
         assertThat(actual.getValue(2, String.class),
-                is("CREATE TABLE `t_encrypt` (`id` INT NOT NULL, `user_id` 
VARCHAR(100) NOT NULL, `user_id_fuzzy` VARCHAR(100) NOT NULL, `order_id` 
VARCHAR(30) NOT NULL,"
+                is("CREATE TABLE `t_encrypt` (`id` INT NOT NULL, `user_id` 
VARCHAR(100) NOT NULL, `order_id` VARCHAR(30) NOT NULL,"
                         + " PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT 
CHARSET=utf8mb4;"));
     }
     
@@ -104,8 +107,8 @@ public final class 
DecoratedEncryptShowCreateTableMergedResultTest {
         when(mergedResult.getValue(2, String.class)).thenReturn(
                 "CREATE TABLE `t_encrypt` (`id` INT NOT NULL, `user_id_cipher` 
VARCHAR(100) NOT NULL, `user_id` VARCHAR(100) NOT NULL, "
                         + "`user_id_assisted` VARCHAR(100) NOT NULL, 
`order_id` VARCHAR(30) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT 
CHARSET=utf8mb4;");
-        DecoratedEncryptShowCreateTableMergedResult actual =
-                
createDecoratedEncryptShowCreateTableMergedResult(mergedResult, 
mockEncryptRule(new EncryptColumn("user_id_cipher", "user_id_assisted", "", 
"user_id", null, false)));
+        DecoratedEncryptShowCreateTableMergedResult actual = 
createDecoratedEncryptShowCreateTableMergedResult(mergedResult,
+                mockEncryptRule(Collections.singletonList(new 
EncryptColumnRuleConfiguration("user_id", "user_id_cipher", "user_id_assisted", 
"", "user_id", null, null, null, false))));
         assertTrue(actual.next());
         assertThat(actual.getValue(2, String.class),
                 is("CREATE TABLE `t_encrypt` (`id` INT NOT NULL, `user_id` 
VARCHAR(100) NOT NULL, `order_id` VARCHAR(30) NOT NULL, PRIMARY KEY (`id`)) 
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"));
@@ -117,23 +120,37 @@ public final class 
DecoratedEncryptShowCreateTableMergedResultTest {
         when(mergedResult.getValue(2, String.class)).thenReturn(
                 "CREATE TABLE `t_encrypt` (`id` INT NOT NULL, `user_id_cipher` 
VARCHAR(100) NOT NULL, `user_id` VARCHAR(100) NOT NULL, "
                         + "`user_id_fuzzy` VARCHAR(100) NOT NULL, `order_id` 
VARCHAR(30) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT 
CHARSET=utf8mb4;");
-        DecoratedEncryptShowCreateTableMergedResult actual =
-                
createDecoratedEncryptShowCreateTableMergedResult(mergedResult, 
mockEncryptRule(new EncryptColumn("user_id_cipher", "", "user_id_fuzzy", 
"user_id", null, false)));
+        DecoratedEncryptShowCreateTableMergedResult actual = 
createDecoratedEncryptShowCreateTableMergedResult(mergedResult,
+                mockEncryptRule(Collections.singletonList(new 
EncryptColumnRuleConfiguration("user_id", "user_id_cipher", "", 
"user_id_fuzzy", "user_id", null, null, null, false))));
         assertTrue(actual.next());
         assertThat(actual.getValue(2, String.class),
-                is("CREATE TABLE `t_encrypt` (`id` INT NOT NULL, `user_id` 
VARCHAR(100) NOT NULL, `user_id_fuzzy` VARCHAR(100) NOT NULL, `order_id` 
VARCHAR(30) NOT NULL,"
+                is("CREATE TABLE `t_encrypt` (`id` INT NOT NULL, `user_id` 
VARCHAR(100) NOT NULL, `order_id` VARCHAR(30) NOT NULL,"
                         + " PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT 
CHARSET=utf8mb4;"));
     }
     
-    private EncryptRule mockEncryptRule(final EncryptColumn encryptColumn) {
+    private EncryptRule mockEncryptRule(final 
Collection<EncryptColumnRuleConfiguration> encryptColumnRuleConfigurations) {
         EncryptRule result = mock(EncryptRule.class);
-        EncryptTable encryptTable = mock(EncryptTable.class);
+        EncryptTable encryptTable = new EncryptTable(new 
EncryptTableRuleConfiguration("t_encrypt", encryptColumnRuleConfigurations, 
false));
         
when(result.findEncryptTable("t_encrypt")).thenReturn(Optional.of(encryptTable));
-        
when(encryptTable.getLogicColumns()).thenReturn(Collections.singleton("user_id"));
-        
when(encryptTable.findEncryptColumn("user_id")).thenReturn(Optional.of(encryptColumn));
         return result;
     }
     
+    @Test
+    public void assertGetValueWhenConfigMultiColumn() throws SQLException {
+        when(mergedResult.next()).thenReturn(true).thenReturn(false);
+        when(mergedResult.getValue(2, String.class)).thenReturn(
+                "CREATE TABLE `t_encrypt` (`id` INT NOT NULL, `user_id_cipher` 
VARCHAR(100) NOT NULL, `user_id` VARCHAR(100) NOT NULL, `user_id_fuzzy` 
VARCHAR(100) NOT NULL, "
+                        + "`order_id_cipher` VARCHAR(30) NOT NULL, 
`order_id_fuzzy` VARCHAR(30) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB 
DEFAULT CHARSET=utf8mb4;");
+        Collection<EncryptColumnRuleConfiguration> columns = new 
LinkedList<>();
+        columns.add(new EncryptColumnRuleConfiguration("user_id", 
"user_id_cipher", "", "user_id_fuzzy", "user_id", null, null, null, false));
+        columns.add(new EncryptColumnRuleConfiguration("order_id", 
"order_id_cipher", "", "order_id_fuzzy", "user_id", null, null, null, false));
+        DecoratedEncryptShowCreateTableMergedResult actual = 
createDecoratedEncryptShowCreateTableMergedResult(mergedResult, 
mockEncryptRule(columns));
+        assertTrue(actual.next());
+        assertThat(actual.getValue(2, String.class),
+                is("CREATE TABLE `t_encrypt` (`id` INT NOT NULL, `user_id` 
VARCHAR(100) NOT NULL, `order_id` VARCHAR(30) NOT NULL,"
+                        + " PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT 
CHARSET=utf8mb4;"));
+    }
+    
     @Test
     public void assertWasNull() throws SQLException {
         
assertFalse(createDecoratedEncryptShowCreateTableMergedResult(mergedResult, 
mock(EncryptRule.class)).wasNull());
diff --git 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/MergedEncryptShowCreateTableMergedResultTest.java
 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/MergedEncryptShowCreateTableMergedResultTest.java
index 785c93e3ccd..6478beab066 100644
--- 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/MergedEncryptShowCreateTableMergedResultTest.java
+++ 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/MergedEncryptShowCreateTableMergedResultTest.java
@@ -17,7 +17,8 @@
 
 package org.apache.shardingsphere.encrypt.merge.dal.show;
 
-import org.apache.shardingsphere.encrypt.rule.EncryptColumn;
+import 
org.apache.shardingsphere.encrypt.api.config.rule.EncryptColumnRuleConfiguration;
+import 
org.apache.shardingsphere.encrypt.api.config.rule.EncryptTableRuleConfiguration;
 import org.apache.shardingsphere.encrypt.rule.EncryptRule;
 import org.apache.shardingsphere.encrypt.rule.EncryptTable;
 import 
org.apache.shardingsphere.infra.binder.statement.dal.ShowCreateTableStatementContext;
@@ -31,12 +32,13 @@ import org.mockito.Mock;
 import org.mockito.junit.MockitoJUnitRunner;
 
 import java.sql.SQLException;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.Optional;
 
 import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertFalse;
 import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
@@ -64,8 +66,8 @@ public final class 
MergedEncryptShowCreateTableMergedResultTest {
         when(queryResult.getValue(2, String.class)).thenReturn(
                 "CREATE TABLE `t_encrypt` (`id` INT NOT NULL, `user_id_cipher` 
VARCHAR(100) NOT NULL, "
                         + "`user_id` VARCHAR(100) NOT NULL, `order_id` 
VARCHAR(30) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT 
CHARSET=utf8mb4;");
-        MergedEncryptShowCreateTableMergedResult actual =
-                createMergedEncryptShowCreateTableMergedResult(queryResult, 
mockEncryptRule(new EncryptColumn("user_id_cipher", null, null, "user_id", 
null, false)));
+        MergedEncryptShowCreateTableMergedResult actual = 
createMergedEncryptShowCreateTableMergedResult(queryResult,
+                mockEncryptRule(Collections.singletonList(new 
EncryptColumnRuleConfiguration("user_id", "user_id_cipher", null, "user_id", 
null, false))));
         assertTrue(actual.next());
         assertThat(actual.getValue(2, String.class),
                 is("CREATE TABLE `t_encrypt` (`id` INT NOT NULL, `user_id` 
VARCHAR(100) NOT NULL, `order_id` VARCHAR(30) NOT NULL, PRIMARY KEY (`id`)) 
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"));
@@ -77,8 +79,8 @@ public final class 
MergedEncryptShowCreateTableMergedResultTest {
         when(queryResult.getValue(2, String.class)).thenReturn(
                 "CREATE TABLE `t_encrypt` (`id` INT NOT NULL, `user_id_cipher` 
VARCHAR(100) NOT NULL, "
                         + "`user_id_assisted` VARCHAR(100) NOT NULL, 
`order_id` VARCHAR(30) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT 
CHARSET=utf8mb4;");
-        MergedEncryptShowCreateTableMergedResult actual =
-                createMergedEncryptShowCreateTableMergedResult(queryResult, 
mockEncryptRule(new EncryptColumn("user_id_cipher", "user_id_assisted", null, 
null, null, false)));
+        MergedEncryptShowCreateTableMergedResult actual = 
createMergedEncryptShowCreateTableMergedResult(queryResult,
+                mockEncryptRule(Collections.singletonList(new 
EncryptColumnRuleConfiguration("user_id", "user_id_cipher", "user_id_assisted", 
"", null, false))));
         assertTrue(actual.next());
         assertThat(actual.getValue(2, String.class),
                 is("CREATE TABLE `t_encrypt` (`id` INT NOT NULL, `user_id` 
VARCHAR(100) NOT NULL, `order_id` VARCHAR(30) NOT NULL, PRIMARY KEY (`id`)) 
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"));
@@ -90,11 +92,11 @@ public final class 
MergedEncryptShowCreateTableMergedResultTest {
         when(queryResult.getValue(2, String.class)).thenReturn(
                 "CREATE TABLE `t_encrypt` (`id` INT NOT NULL, `user_id_cipher` 
VARCHAR(100) NOT NULL, "
                         + "`user_id_fuzzy` VARCHAR(100) NOT NULL, `order_id` 
VARCHAR(30) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT 
CHARSET=utf8mb4;");
-        MergedEncryptShowCreateTableMergedResult actual =
-                createMergedEncryptShowCreateTableMergedResult(queryResult, 
mockEncryptRule(new EncryptColumn("user_id_cipher", null, "user_id_fuzzy", 
null, null, false)));
+        MergedEncryptShowCreateTableMergedResult actual = 
createMergedEncryptShowCreateTableMergedResult(queryResult,
+                mockEncryptRule(Collections.singletonList(new 
EncryptColumnRuleConfiguration("user_id", "user_id_cipher", "", 
"user_id_fuzzy", "", "", "", null, false))));
         assertTrue(actual.next());
         assertThat(actual.getValue(2, String.class),
-                is("CREATE TABLE `t_encrypt` (`id` INT NOT NULL, `user_id` 
VARCHAR(100) NOT NULL, `user_id_fuzzy` VARCHAR(100) NOT NULL, `order_id` 
VARCHAR(30) NOT NULL,"
+                is("CREATE TABLE `t_encrypt` (`id` INT NOT NULL, `user_id` 
VARCHAR(100) NOT NULL, `order_id` VARCHAR(30) NOT NULL,"
                         + " PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT 
CHARSET=utf8mb4;"));
     }
     
@@ -104,19 +106,17 @@ public final class 
MergedEncryptShowCreateTableMergedResultTest {
         when(queryResult.getValue(2, String.class)).thenReturn(
                 "CREATE TABLE `t_encrypt` (`id` INT NOT NULL, `user_id_cipher` 
VARCHAR(100) NOT NULL, `user_id` VARCHAR(100) NOT NULL, "
                         + "`user_id_assisted` VARCHAR(100) NOT NULL, 
`order_id` VARCHAR(30) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT 
CHARSET=utf8mb4;");
-        MergedEncryptShowCreateTableMergedResult actual =
-                createMergedEncryptShowCreateTableMergedResult(queryResult, 
mockEncryptRule(new EncryptColumn("user_id_cipher", "user_id_assisted", null, 
"user_id", null, false)));
+        MergedEncryptShowCreateTableMergedResult actual = 
createMergedEncryptShowCreateTableMergedResult(queryResult,
+                mockEncryptRule(Collections.singletonList(new 
EncryptColumnRuleConfiguration("user_id", "user_id_cipher", "user_id_assisted", 
"user_id", null, false))));
         assertTrue(actual.next());
         assertThat(actual.getValue(2, String.class),
                 is("CREATE TABLE `t_encrypt` (`id` INT NOT NULL, `user_id` 
VARCHAR(100) NOT NULL, `order_id` VARCHAR(30) NOT NULL, PRIMARY KEY (`id`)) 
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"));
     }
     
-    private EncryptRule mockEncryptRule(final EncryptColumn encryptColumn) {
+    private EncryptRule mockEncryptRule(final 
Collection<EncryptColumnRuleConfiguration> columnRuleConfigurations) {
         EncryptRule result = mock(EncryptRule.class);
-        EncryptTable encryptTable = mock(EncryptTable.class);
+        EncryptTable encryptTable = new EncryptTable(new 
EncryptTableRuleConfiguration("t_encrypt", columnRuleConfigurations, false));
         
when(result.findEncryptTable("t_encrypt")).thenReturn(Optional.of(encryptTable));
-        
when(encryptTable.getLogicColumns()).thenReturn(Collections.singleton("user_id"));
-        
when(encryptTable.findEncryptColumn("user_id")).thenReturn(Optional.of(encryptColumn));
         return result;
     }
     

Reply via email to