You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2022/11/01 12:44:29 UTC
[shardingsphere] branch master updated: Fix show create table for encrypt. (#21890)
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 <ch...@qq.com>
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;
}