You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2022/07/23 16:06:53 UTC
[shardingsphere] branch master updated: Fix18970 (#19027)
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 a28969c3d8b Fix18970 (#19027)
a28969c3d8b is described below
commit a28969c3d8bb9ec4f2f90ee3720c6b560daa980f
Author: Da Xiang Huang <lo...@foxmail.com>
AuthorDate: Sun Jul 24 00:06:47 2022 +0800
Fix18970 (#19027)
* add tests
* split assertGenerateSQLTokens method
---
...eryAndPlainInsertColumnsTokenGeneratorTest.java | 41 +++++++++++++++++-----
1 file changed, 33 insertions(+), 8 deletions(-)
diff --git a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/AssistQueryAndPlainInsertColumnsTokenGeneratorTest.java b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/AssistQueryAndPlainInsertColumnsTokenGeneratorTest.java
index 58907728fec..0f5117334fb 100644
--- a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/AssistQueryAndPlainInsertColumnsTokenGeneratorTest.java
+++ b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/AssistQueryAndPlainInsertColumnsTokenGeneratorTest.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.encrypt.rewrite.token;
+import java.util.Iterator;
import org.apache.shardingsphere.encrypt.rewrite.token.generator.AssistQueryAndPlainInsertColumnsTokenGenerator;
import org.apache.shardingsphere.encrypt.rule.EncryptRule;
import org.apache.shardingsphere.encrypt.rule.EncryptTable;
@@ -42,34 +43,58 @@ import static org.mockito.Mockito.when;
@RunWith(MockitoJUnitRunner.class)
public class AssistQueryAndPlainInsertColumnsTokenGeneratorTest {
-
+
@Test
public void assertIsNotGenerateSQLTokenWithNotInsertStatementContext() {
assertFalse(new AssistQueryAndPlainInsertColumnsTokenGenerator().isGenerateSQLToken(mock(SQLStatementContext.class)));
}
-
+
@Test
public void assertIsNotGenerateSQLTokenWithoutInsertColumns() {
InsertStatementContext insertStatementContext = mock(InsertStatementContext.class, RETURNS_DEEP_STUBS);
assertFalse(new AssistQueryAndPlainInsertColumnsTokenGenerator().isGenerateSQLToken(insertStatementContext));
}
-
+
@Test
public void assertIsGenerateSQLTokenWithInsertColumns() {
InsertStatementContext insertStatementContext = mock(InsertStatementContext.class, RETURNS_DEEP_STUBS);
when(insertStatementContext.containsInsertColumns()).thenReturn(true);
assertTrue(new AssistQueryAndPlainInsertColumnsTokenGenerator().isGenerateSQLToken(insertStatementContext));
}
-
+
+ @Test
+ public void assertGenerateSQLTokensNotContainColumns() {
+ AssistQueryAndPlainInsertColumnsTokenGenerator tokenGenerator = new AssistQueryAndPlainInsertColumnsTokenGenerator();
+ tokenGenerator.setEncryptRule(mockEncryptRule());
+ InsertStatementContext insertStatementContext = mock(InsertStatementContext.class, RETURNS_DEEP_STUBS);
+ when(insertStatementContext.getSqlStatement().getTable().getTableName().getIdentifier().getValue()).thenReturn("foo_tbl");
+ Collection<InsertColumnsToken> actual = tokenGenerator.generateSQLTokens(insertStatementContext);
+ assertTrue(actual.isEmpty());
+ }
+
@Test
- public void assertGenerateSQLTokens() {
+ public void assertGenerateSQLTokensNotExistColumns() {
+ AssistQueryAndPlainInsertColumnsTokenGenerator tokenGenerator = new AssistQueryAndPlainInsertColumnsTokenGenerator();
+ tokenGenerator.setEncryptRule(mockEncryptRule());
+ InsertStatementContext insertStatementContext = mockInsertStatementContext();
+ ColumnSegment columnSegment = mock(ColumnSegment.class, RETURNS_DEEP_STUBS);
+ when(columnSegment.getIdentifier().getValue()).thenReturn("bar_col");
+ when(insertStatementContext.getSqlStatement().getColumns()).thenReturn(Collections.singleton(columnSegment));
+ Collection<InsertColumnsToken> actual = tokenGenerator.generateSQLTokens(insertStatementContext);
+ assertTrue(actual.isEmpty());
+ }
+
+ @Test
+ public void assertGenerateSQLTokensExistColumns() {
AssistQueryAndPlainInsertColumnsTokenGenerator tokenGenerator = new AssistQueryAndPlainInsertColumnsTokenGenerator();
tokenGenerator.setEncryptRule(mockEncryptRule());
Collection<InsertColumnsToken> actual = tokenGenerator.generateSQLTokens(mockInsertStatementContext());
assertThat(actual.size(), is(1));
- // TODO add more assertions for actual value
+ Iterator<InsertColumnsToken> iterator = actual.iterator();
+ InsertColumnsToken insertColumnsToken = iterator.next();
+ assertThat(insertColumnsToken.getStartIndex(), is(1));
}
-
+
private EncryptRule mockEncryptRule() {
EncryptRule result = mock(EncryptRule.class);
EncryptTable encryptTable = mock(EncryptTable.class);
@@ -78,7 +103,7 @@ public class AssistQueryAndPlainInsertColumnsTokenGeneratorTest {
when(result.findEncryptTable("foo_tbl")).thenReturn(Optional.of(encryptTable));
return result;
}
-
+
private InsertStatementContext mockInsertStatementContext() {
InsertStatementContext result = mock(InsertStatementContext.class, RETURNS_DEEP_STUBS);
when(result.getSqlStatement().getTable().getTableName().getIdentifier().getValue()).thenReturn("foo_tbl");