yaooqinn commented on code in PR #2623:
URL: https://github.com/apache/incubator-kyuubi/pull/2623#discussion_r880447942


##########
extensions/spark/kyuubi-spark-authz/src/test/scala/org/apache/kyuubi/plugin/spark/authz/ranger/AccessResourceSuite.scala:
##########
@@ -57,3 +59,95 @@ class AccessResourceSuite extends AnyFunSuite {
     assert(resource4.getColumns === Seq("my_col_1", "my_col_2"))
   }
 }
+// scalastyle:off
+abstract class AccessResourceWithSparkSessionSuite
+  extends AnyFunSuite
+  with SparkSessionProvider
+  with BeforeAndAfterAll
+  with BeforeAndAfterEach {
+  // scalastyle:on
+  override def afterAll(): Unit = {
+    spark.stop()
+    super.afterAll()
+  }
+
+  test("create AccessResource without database") {
+    val dbName = "AccessResource"
+    try {
+      val resource1 = AccessResource(ObjectType.COLUMN, null, "table", "col", 
spark)
+      assert(resource1.getDatabase equalsIgnoreCase "default")
+      val resource2 = AccessResource(ObjectType.COLUMN, "", "table", "col", 
spark)
+      assert(resource2.getDatabase equalsIgnoreCase "default")
+
+      sql(s"CREATE DATABASE $dbName")
+      sql(s"USE $dbName")
+      val resource3 = AccessResource(ObjectType.COLUMN, null, "table", "col", 
spark)
+      assert(resource3.getDatabase equalsIgnoreCase dbName)
+    } finally {
+      sql(s"DROP DATABASE IF EXISTS $dbName")
+    }
+
+  }
+
+  test("get database name from spark catalog when privilegeObject's dbname is 
null") {
+    val tableName = "table_to_describe"
+    val dbName = "database_for_describe"
+    if (isSparkV2) {
+      try {
+        sql(s"CREATE DATABASE $dbName")
+        sql(s"CREATE TABLE $dbName.$tableName (key int, value string) USING 
parquet")
+        sql(s"USE $dbName")
+        val plan = sql(s"DESC TABLE $tableName").queryExecution.analyzed
+        val operationType = OperationType(plan.nodeName)
+        val tuple = PrivilegesBuilder.build(plan)
+
+        val resourceWithoutSparkSession = AccessResource(tuple._1.head, 
operationType)
+        assert(resourceWithoutSparkSession.objectType === TABLE)
+        assert(resourceWithoutSparkSession.getDatabase === null)
+        assert(resourceWithoutSparkSession.getTable equalsIgnoreCase tableName)
+
+        val resourceWithSparkSession = AccessResource(tuple._1.head, 
operationType, spark = spark)
+        assert(resourceWithSparkSession.objectType === TABLE)
+        assert(resourceWithSparkSession.getDatabase === dbName)
+        assert(resourceWithSparkSession.getTable equalsIgnoreCase tableName)
+
+      } finally {
+        sql(s"DROP TABLE IF EXISTS $tableName")
+        sql(s"DROP DATABASE IF EXISTS $dbName")
+        sql(s"USE default")
+      }
+    } else {
+      try {
+        sql(s"CREATE DATABASE $dbName")
+        sql(s"CREATE TABLE $dbName.$tableName (key int, value string) USING 
parquet")
+        sql(s"USE $dbName")
+        val plan = sql(s"DESC TABLE $tableName").queryExecution.analyzed
+        val operationType = OperationType(plan.nodeName)
+        val tuple = PrivilegesBuilder.build(plan)
+
+        val resourceWithoutSparkSession = AccessResource(tuple._1.head, 
operationType)
+        assert(resourceWithoutSparkSession.objectType === TABLE)
+        assert(resourceWithoutSparkSession.getDatabase === dbName)
+        assert(resourceWithoutSparkSession.getTable equalsIgnoreCase tableName)
+
+        val resourceWithSparkSession = AccessResource(tuple._1.head, 
operationType, spark = spark)
+        assert(resourceWithSparkSession.objectType === TABLE)

Review Comment:
   try view without database?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to