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 e4157a2  Add test case for EncryptColumnsMergedResult (#6873)
e4157a2 is described below

commit e4157a2e34eb9e085c6368ba18384d87021ec2c6
Author: yuzel <[email protected]>
AuthorDate: Sun Aug 16 14:29:14 2020 +0800

    Add test case for EncryptColumnsMergedResult (#6873)
    
    Co-authored-by: liuyuze <[email protected]>
---
 .../dal/MergedEncryptColumnsMergedResultTest.java  | 144 +++++++++++++++++++++
 1 file changed, 144 insertions(+)

diff --git 
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-merge/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/MergedEncryptColumnsMergedResultTest.java
 
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-merge/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/MergedEncryptColumnsMergedResultTest.java
new file mode 100644
index 0000000..d821f01
--- /dev/null
+++ 
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-merge/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/MergedEncryptColumnsMergedResultTest.java
@@ -0,0 +1,144 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.encrypt.merge.dal;
+
+import 
org.apache.shardingsphere.encrypt.merge.dal.impl.MergedEncryptColumnsMergedResult;
+import org.apache.shardingsphere.encrypt.metadata.EncryptColumnMetaData;
+import org.apache.shardingsphere.infra.executor.sql.QueryResult;
+import 
org.apache.shardingsphere.sql.parser.binder.metadata.schema.SchemaMetaData;
+import 
org.apache.shardingsphere.sql.parser.binder.metadata.table.TableMetaData;
+import 
org.apache.shardingsphere.sql.parser.binder.statement.dml.SelectStatementContext;
+import 
org.apache.shardingsphere.sql.parser.sql.segment.generic.table.SimpleTableSegment;
+import 
org.apache.shardingsphere.sql.parser.sql.segment.generic.table.TableNameSegment;
+import 
org.apache.shardingsphere.sql.parser.sql.value.identifier.IdentifierValue;
+import org.junit.Test;
+
+import java.sql.SQLException;
+import java.sql.Types;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public final class MergedEncryptColumnsMergedResultTest {
+    
+    @Test
+    public void assertNextWithTableEncryptColumnMetaDataListEmpty() throws 
SQLException {
+        QueryResult queryResult = mock(QueryResult.class);
+        when(queryResult.next()).thenReturn(true);
+        when(queryResult.getValue(1, String.class)).thenReturn("1");
+        TableMetaData tableMetaData = new 
TableMetaData(Collections.emptyList(), Collections.emptyList());
+        Map<String, TableMetaData> tables = new HashMap<>(1);
+        tables.put("test", tableMetaData);
+        SchemaMetaData schemaMetaData = new SchemaMetaData(tables);
+        MergedEncryptColumnsMergedResult mergedEncryptColumnsMergedResult = 
getMergedEncryptColumnsMergedResult(queryResult, schemaMetaData);
+        boolean actual = mergedEncryptColumnsMergedResult.next();
+        assertTrue(actual);
+    }
+    
+    @Test
+    public void assertNextWithHasNext() throws SQLException {
+        QueryResult queryResult = mock(QueryResult.class);
+        SchemaMetaData schemaMetaData = mock(SchemaMetaData.class);
+        MergedEncryptColumnsMergedResult mergedEncryptColumnsMergedResult = 
getMergedEncryptColumnsMergedResult(queryResult, schemaMetaData);
+        boolean actual = mergedEncryptColumnsMergedResult.next();
+        assertFalse(actual);
+    }
+    
+    @Test
+    public void assertNextWithAssistedQuery() throws SQLException {
+        QueryResult queryResult = mock(QueryResult.class);
+        when(queryResult.next()).thenReturn(true).thenReturn(false);
+        when(queryResult.getValue(1, 
String.class)).thenReturn("assistedQuery");
+        Map<String, TableMetaData> tables = new HashMap<>(1);
+        EncryptColumnMetaData encryptColumnMetaData = new 
EncryptColumnMetaData("id", Types.VARCHAR, "varchar", true, "cipher", "plain", 
"assistedQuery");
+        TableMetaData tableMetaData = new 
TableMetaData(Collections.singletonList(encryptColumnMetaData), 
Collections.emptyList());
+        tables.put("test", tableMetaData);
+        SchemaMetaData schemaMetaData = new SchemaMetaData(tables);
+        MergedEncryptColumnsMergedResult mergedEncryptColumnsMergedResult = 
getMergedEncryptColumnsMergedResult(queryResult, schemaMetaData);
+        boolean actual = mergedEncryptColumnsMergedResult.next();
+        assertFalse(actual);
+    }
+    
+    @Test
+    public void assertGetValueWithCipherColumn() throws SQLException {
+        QueryResult queryResult = mock(QueryResult.class);
+        when(queryResult.next()).thenReturn(true).thenReturn(false);
+        when(queryResult.getValue(1, String.class)).thenReturn("cipher");
+        Map<String, TableMetaData> tables = new HashMap<>(1);
+        EncryptColumnMetaData encryptColumnMetaData = new 
EncryptColumnMetaData("id", Types.VARCHAR, "varchar", true, "cipher", "plain", 
"assistedQuery");
+        TableMetaData tableMetaData = new 
TableMetaData(Collections.singletonList(encryptColumnMetaData), 
Collections.emptyList());
+        tables.put("test", tableMetaData);
+        SchemaMetaData schemaMetaData = new SchemaMetaData(tables);
+        MergedEncryptColumnsMergedResult mergedEncryptColumnsMergedResult = 
getMergedEncryptColumnsMergedResult(queryResult, schemaMetaData);
+        assertThat(mergedEncryptColumnsMergedResult.getValue(1, String.class), 
is("id"));
+    }
+    
+    @Test
+    public void assertGetValueWithOtherColumn() throws SQLException {
+        QueryResult queryResult = mock(QueryResult.class);
+        when(queryResult.next()).thenReturn(true).thenReturn(false);
+        when(queryResult.getValue(1, 
String.class)).thenReturn("assistedQuery");
+        Map<String, TableMetaData> tables = new HashMap<>(1);
+        EncryptColumnMetaData encryptColumnMetaData = new 
EncryptColumnMetaData("id", Types.VARCHAR, "varchar", true, "cipher", "plain", 
"assistedQuery");
+        TableMetaData tableMetaData = new 
TableMetaData(Collections.singletonList(encryptColumnMetaData), 
Collections.emptyList());
+        tables.put("test", tableMetaData);
+        SchemaMetaData schemaMetaData = new SchemaMetaData(tables);
+        MergedEncryptColumnsMergedResult mergedEncryptColumnsMergedResult = 
getMergedEncryptColumnsMergedResult(queryResult, schemaMetaData);
+        assertThat(mergedEncryptColumnsMergedResult.getValue(1, String.class), 
is("assistedQuery"));
+    }
+    
+    @Test
+    public void assertGetValueWithOtherIndex() throws SQLException {
+        QueryResult queryResult = mock(QueryResult.class);
+        when(queryResult.next()).thenReturn(true).thenReturn(false);
+        when(queryResult.getValue(2, String.class)).thenReturn("id");
+        Map<String, TableMetaData> tables = new HashMap<>(1);
+        EncryptColumnMetaData encryptColumnMetaData = new 
EncryptColumnMetaData("id", Types.VARCHAR, "varchar", true, "cipher", "plain", 
"assistedQuery");
+        TableMetaData tableMetaData = new 
TableMetaData(Collections.singletonList(encryptColumnMetaData), 
Collections.emptyList());
+        tables.put("test", tableMetaData);
+        SchemaMetaData schemaMetaData = new SchemaMetaData(tables);
+        MergedEncryptColumnsMergedResult mergedEncryptColumnsMergedResult = 
getMergedEncryptColumnsMergedResult(queryResult, schemaMetaData);
+        assertThat(mergedEncryptColumnsMergedResult.getValue(2, String.class), 
is("id"));
+    }
+    
+    @Test
+    public void assertWasNull() throws SQLException {
+        QueryResult queryResult = mock(QueryResult.class);
+        SchemaMetaData schemaMetaData = mock(SchemaMetaData.class);
+        MergedEncryptColumnsMergedResult mergedEncryptColumnsMergedResult = 
getMergedEncryptColumnsMergedResult(queryResult, schemaMetaData);
+        boolean actual = mergedEncryptColumnsMergedResult.wasNull();
+        assertFalse(actual);
+    }
+    
+    private MergedEncryptColumnsMergedResult 
getMergedEncryptColumnsMergedResult(final QueryResult queryResult, final 
SchemaMetaData schemaMetaData) {
+        SelectStatementContext sqlStatementContext = 
mock(SelectStatementContext.class);
+        IdentifierValue identifierValue = new IdentifierValue("test");
+        TableNameSegment tableNameSegment = new TableNameSegment(1, 4, 
identifierValue);
+        SimpleTableSegment simpleTableSegment = new 
SimpleTableSegment(tableNameSegment);
+        
when(sqlStatementContext.getAllTables()).thenReturn(Collections.singletonList(simpleTableSegment));
+        return new MergedEncryptColumnsMergedResult(queryResult, 
sqlStatementContext, schemaMetaData);
+    }
+    
+}

Reply via email to