17
17
import os
18
18
import uuid
19
19
20
- from google .oauth2 import service_account
20
+ import google .auth
21
21
from googleapiclient import errors
22
22
import googleapiclient .discovery
23
23
import pytest
30
30
31
31
32
32
def retry_if_conflict (exception ):
33
- return (isinstance (exception , errors .HttpError )
34
- and 'There were concurrent policy changes' in str (exception ))
33
+ return isinstance (
34
+ exception , errors .HttpError
35
+ ) and "There were concurrent policy changes" in str (exception )
35
36
36
37
37
38
@pytest .fixture (scope = "module" )
38
39
def test_member ():
39
40
# section to create service account to test policy updates.
40
41
# we use the first portion of uuid4 because full version is too long.
41
- name = f' test-{ uuid .uuid4 ().hex [:25 ]} '
42
+ name = f" test-{ uuid .uuid4 ().hex [:25 ]} "
42
43
email = name + "@" + GCLOUD_PROJECT + ".iam.gserviceaccount.com"
43
44
member = "serviceAccount:" + email
44
- create_service_account (
45
- GCLOUD_PROJECT , name , "Py Test Account"
46
- )
45
+ create_service_account (GCLOUD_PROJECT , name , "Py Test Account" )
47
46
48
47
yield member
49
48
@@ -54,47 +53,52 @@ def test_member():
54
53
def create_service_account (project_id , name , display_name ):
55
54
"""Creates a service account."""
56
55
57
- credentials = service_account . Credentials . from_service_account_file (
58
- filename = os . environ [ 'GOOGLE_APPLICATION_CREDENTIALS' ],
59
- scopes = [ 'https://www.googleapis.com/auth/cloud-platform' ] )
56
+ credentials , _ = google . auth . default (
57
+ scopes = [ "https://www.googleapis.com/auth/cloud-platform" ]
58
+ )
60
59
61
- service = googleapiclient .discovery .build (
62
- 'iam' , 'v1' , credentials = credentials )
60
+ service = googleapiclient .discovery .build ("iam" , "v1" , credentials = credentials )
63
61
64
- my_service_account = service .projects ().serviceAccounts ().create (
65
- name = 'projects/' + project_id ,
66
- body = {
67
- 'accountId' : name ,
68
- 'serviceAccount' : {
69
- 'displayName' : display_name
70
- }
71
- }).execute ()
62
+ my_service_account = (
63
+ service .projects ()
64
+ .serviceAccounts ()
65
+ .create (
66
+ name = "projects/" + project_id ,
67
+ body = {"accountId" : name , "serviceAccount" : {"displayName" : display_name }},
68
+ )
69
+ .execute ()
70
+ )
72
71
73
- print (' Created service account: ' + my_service_account [' email' ])
72
+ print (" Created service account: " + my_service_account [" email" ])
74
73
return my_service_account
75
74
76
75
77
76
def delete_service_account (email ):
78
77
"""Deletes a service account."""
79
78
80
- credentials = service_account . Credentials . from_service_account_file (
81
- filename = os . environ [ 'GOOGLE_APPLICATION_CREDENTIALS' ],
82
- scopes = [ 'https://www.googleapis.com/auth/cloud-platform' ] )
79
+ credentials , _ = google . auth . default (
80
+ scopes = [ "https://www.googleapis.com/auth/cloud-platform" ]
81
+ )
83
82
84
- service = googleapiclient .discovery .build (
85
- 'iam' , 'v1' , credentials = credentials )
83
+ service = googleapiclient .discovery .build ("iam" , "v1" , credentials = credentials )
86
84
87
85
service .projects ().serviceAccounts ().delete (
88
- name = 'projects/-/serviceAccounts/' + email ).execute ()
86
+ name = "projects/-/serviceAccounts/" + email
87
+ ).execute ()
89
88
90
- print (' Deleted service account: ' + email )
89
+ print (" Deleted service account: " + email )
91
90
92
91
93
92
def test_quickstart (test_member , capsys ):
94
- @retry (wait_exponential_multiplier = 1000 , wait_exponential_max = 10000 ,
95
- stop_max_attempt_number = 5 , retry_on_exception = retry_if_conflict )
93
+ @retry (
94
+ wait_exponential_multiplier = 1000 ,
95
+ wait_exponential_max = 10000 ,
96
+ stop_max_attempt_number = 5 ,
97
+ retry_on_exception = retry_if_conflict ,
98
+ )
96
99
def test_call ():
97
100
quickstart .quickstart (GCLOUD_PROJECT , test_member )
98
101
out , _ = capsys .readouterr ()
99
102
assert test_member in out
103
+
100
104
test_call ()
0 commit comments