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");