Skip to content

Commit 1998fe4

Browse files
authored
BigQuery: Add sample for explicitly creating client from service acco… [(#2312)](GoogleCloudPlatform/python-docs-samples#2312)
* BigQuery: Add sample for explicitly creating client from service account credentials. * Flake8 * Move imports to improve indentation. * Combine auth and client functions. * flake8
1 parent d4f004d commit 1998fe4

File tree

2 files changed

+76
-0
lines changed

2 files changed

+76
-0
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# Copyright 2019 Google LLC
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# https://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
import os
16+
17+
18+
def main():
19+
key_path = os.environ.get("GOOGLE_APPLICATION_CREDENTIALS")
20+
21+
# [START bigquery_client_json_credentials]
22+
from google.cloud import bigquery
23+
from google.oauth2 import service_account
24+
25+
# TODO(developer): Set key_path to the path to the service account key
26+
# file.
27+
# key_path = "path/to/service_account.json"
28+
29+
credentials = service_account.Credentials.from_service_account_file(
30+
key_path,
31+
scopes=["https://www.googleapis.com/auth/cloud-platform"],
32+
)
33+
34+
client = bigquery.Client(
35+
credentials=credentials,
36+
project=credentials.project_id,
37+
)
38+
# [END bigquery_client_json_credentials]
39+
return client
40+
41+
42+
if __name__ == "__main__":
43+
main()
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Copyright 2019 Google LLC
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# https://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
import google.auth
16+
17+
import authenticate_service_account
18+
19+
20+
def mock_credentials(*args, **kwargs):
21+
credentials, _ = google.auth.default(
22+
["https://www.googleapis.com/auth/cloud-platform"]
23+
)
24+
return credentials
25+
26+
27+
def test_main(monkeypatch):
28+
monkeypatch.setattr(
29+
'google.oauth2.service_account.Credentials.from_service_account_file',
30+
mock_credentials,
31+
)
32+
client = authenticate_service_account.main()
33+
assert client is not None

0 commit comments

Comments
 (0)