@@ -63,15 +63,31 @@ def test_read_gbq_not_found_tables(not_found_table_id):
6363 ],
6464)
6565def test_read_gbq_external_table_no_drive_access (api_name , query_or_table ):
66- bqclient = mock .create_autospec (google .cloud .bigquery .Client , instance = True )
67- bqclient .project = "test-project"
68- bqclient .get_table .side_effect = google .api_core .exceptions .Forbidden (
69- "Access Denied: BigQuery BigQuery: Permission denied while getting Drive credentials."
70- )
71- session = resources .create_bigquery_session (bqclient = bqclient )
66+ session = resources .create_bigquery_session ()
67+ session_query_mock = session .bqclient .query
68+
69+ def query_mock (query , * args , ** kwargs ):
70+ if query .lstrip ().startswith ("SELECT *" ):
71+ raise google .api_core .exceptions .Forbidden (
72+ "Access Denied: BigQuery BigQuery: Permission denied while getting Drive credentials."
73+ )
74+
75+ return session_query_mock (query , * args , ** kwargs )
76+
77+ session .bqclient .query = query_mock
78+
79+ def get_table_mock (dataset_ref ):
80+ dataset = google .cloud .bigquery .Dataset (dataset_ref )
81+ dataset .location = session ._location
82+ return dataset
83+
84+ session .bqclient .get_table = get_table_mock
7285
7386 api = getattr (session , api_name )
74- with pytest .raises (google .api_core .exceptions .Forbidden ):
87+ with pytest .raises (
88+ google .api_core .exceptions .Forbidden ,
89+ match = "Check https://cloud.google.com/bigquery/docs/query-drive-data#Google_Drive_permissions." ,
90+ ):
7591 api (query_or_table )
7692
7793
0 commit comments