@@ -27,34 +27,41 @@ def test_all_grants_in_databases(runtime_ctx, sql_backend, make_group):
2727 empty_schema = runtime_ctx .make_schema ()
2828 table_a = runtime_ctx .make_table (schema_name = schema_a .name )
2929 table_b = runtime_ctx .make_table (schema_name = schema_b .name )
30+ table_c = runtime_ctx .make_table (schema_name = schema_c .name )
3031 view_c = runtime_ctx .make_table (schema_name = schema_a .name , view = True , ctas = "SELECT id FROM range(10)" )
3132 view_d = runtime_ctx .make_table (schema_name = schema_a .name , view = True , ctas = "SELECT id FROM range(10)" )
33+ view_e = runtime_ctx .make_table (schema_name = schema_c .name , view = True , ctas = "SELECT id FROM range(10)" )
3234 table_e = runtime_ctx .make_table (schema_name = schema_c .name )
3335
3436 sql_backend .execute (f"GRANT USAGE ON SCHEMA { schema_c .name } TO `{ group_a .display_name } `" )
3537 sql_backend .execute (f"GRANT USAGE ON SCHEMA { schema_c .name } TO `{ group_b .display_name } `" )
3638 sql_backend .execute (f"GRANT MODIFY ON TABLE { table_e .full_name } TO `{ group_b .display_name } `" )
3739 sql_backend .execute (f"GRANT SELECT ON TABLE { table_a .full_name } TO `{ group_a .display_name } `" )
3840 sql_backend .execute (f"GRANT SELECT ON TABLE { table_b .full_name } TO `{ group_b .display_name } `" )
41+ sql_backend .execute (f"GRANT READ_METADATA ON TABLE { table_c .full_name } TO `{ group_b .display_name } `" )
3942 sql_backend .execute (f"GRANT MODIFY ON SCHEMA { schema_b .full_name } TO `{ group_b .display_name } `" )
40- sql_backend .execute (f"GRANT MODIFY ON SCHEMA { empty_schema .full_name } TO `{ group_b .display_name } `" )
43+ sql_backend .execute (f"GRANT READ_METADATA ON SCHEMA { empty_schema .full_name } TO `{ group_b .display_name } `" )
4144 sql_backend .execute (f"GRANT MODIFY ON VIEW { view_c .full_name } TO `{ group_b .display_name } `" )
45+ sql_backend .execute (f"GRANT READ_METADATA ON VIEW { view_e .full_name } TO `{ group_b .display_name } `" )
4246 sql_backend .execute (f"DENY MODIFY ON TABLE { view_d .full_name } TO `{ group_b .display_name } `" )
4347
4448 all_grants = {}
4549 for grant in list (runtime_ctx .grants_crawler .snapshot ()):
4650 logging .info (f"grant:\n { grant } \n hive: { grant .hive_grant_sql ()} \n uc: { grant .uc_grant_sql ()} " )
47- object_type , object_key = grant .this_type_and_key ()
48- all_grants [f"{ grant .principal } .{ object_type } .{ object_key } " ] = grant .action_type
51+ all_grants [f"{ grant .principal } .{ grant .this_type_and_key ()[0 ]} .{ grant .this_type_and_key ()[1 ]} " ] = (
52+ grant .action_type
53+ )
4954
50- assert len (all_grants ) >= 9 , "must have at least nine grants"
55+ assert len (all_grants ) >= 12 , "must have at least twelve grants"
5156 assert all_grants [f"{ group_a .display_name } .DATABASE.hive_metastore.{ schema_c .name } " ] == "USAGE"
5257 assert all_grants [f"{ group_b .display_name } .DATABASE.hive_metastore.{ schema_c .name } " ] == "USAGE"
5358 assert all_grants [f"{ group_a .display_name } .TABLE.{ table_a .full_name } " ] == "SELECT"
5459 assert all_grants [f"{ group_b .display_name } .TABLE.{ table_b .full_name } " ] == "SELECT"
60+ assert all_grants [f"{ group_b .display_name } .TABLE.{ table_c .full_name } " ] == "READ_METADATA"
5561 assert all_grants [f"{ group_b .display_name } .DATABASE.{ schema_b .full_name } " ] == "MODIFY"
56- assert all_grants [f"{ group_b .display_name } .DATABASE.{ empty_schema .full_name } " ] == "MODIFY "
62+ assert all_grants [f"{ group_b .display_name } .DATABASE.{ empty_schema .full_name } " ] == "READ_METADATA "
5763 assert all_grants [f"{ group_b .display_name } .VIEW.{ view_c .full_name } " ] == "MODIFY"
64+ assert all_grants [f"{ group_b .display_name } .VIEW.{ view_e .full_name } " ] == "READ_METADATA"
5865 assert all_grants [f"{ group_b .display_name } .VIEW.{ view_d .full_name } " ] == "DENIED_MODIFY"
5966 assert all_grants [f"{ group_b .display_name } .TABLE.{ table_e .full_name } " ] == "MODIFY"
6067
0 commit comments