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 <[email protected]>
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");