@@ -131,20 +131,22 @@ def topic_iam_policy(client, to_delete):
131131
132132 # [START topic_get_iam_policy]
133133 policy = topic .get_iam_policy () # API request
134+ # [END topic_get_iam_policy]
135+
134136 assert len (policy .viewers ) == 0
135137 assert len (policy .editors ) == 0
136138 assert len (policy .owners ) == 0
137- # [END topic_get_iam_policy]
138139
139140 # [START topic_set_iam_policy]
140141 ALL_USERS = policy .all_users ()
141142 policy .viewers .add (ALL_USERS )
142143 LOGS_GROUP = policy .group ('cloud-logs@google.com' )
143144 policy .editors .add (LOGS_GROUP )
144145 new_policy = topic .set_iam_policy (policy ) # API request
146+ # [END topic_set_iam_policy]
147+
145148 assert ALL_USERS in new_policy .viewers
146149 assert LOGS_GROUP in new_policy .editors
147- # [END topic_set_iam_policy]
148150
149151
150152# @snippet # Disabled due to #1687
@@ -363,6 +365,60 @@ def log_exception(_):
363365 (extras ,))
364366
365367
368+ @snippet
369+ def subscription_iam_policy (client , to_delete ):
370+ """Fetch / set a subscription's IAM policy."""
371+ TOPIC_NAME = 'subscription_iam_policy-%d' % (_millis (),)
372+ SUB_NAME = 'subscription_iam_policy-defaults-%d' % (_millis (),)
373+ topic = client .topic (TOPIC_NAME )
374+ topic .create ()
375+ to_delete .append (topic )
376+
377+ subscription = topic .subscription (SUB_NAME )
378+ subscription .create ()
379+ to_delete .append (subscription )
380+
381+ # [START subscription_get_iam_policy]
382+ policy = subscription .get_iam_policy () # API request
383+ # [END subscription_get_iam_policy]
384+
385+ assert len (policy .viewers ) == 0
386+ assert len (policy .editors ) == 0
387+ assert len (policy .owners ) == 0
388+
389+ # [START subscription_set_iam_policy]
390+ ALL_USERS = policy .all_users ()
391+ policy .viewers .add (ALL_USERS )
392+ LOGS_GROUP = policy .group ('cloud-logs@google.com' )
393+ policy .editors .add (LOGS_GROUP )
394+ new_policy = subscription .set_iam_policy (policy ) # API request
395+ # [END subscription_set_iam_policy]
396+
397+ assert ALL_USERS in new_policy .viewers
398+ assert LOGS_GROUP in new_policy .editors
399+
400+
401+ # @snippet # Disabled due to #1687
402+ def subscription_check_iam_permissions (client , to_delete ):
403+ """Check subscription IAM permissions."""
404+ TOPIC_NAME = 'subscription_check_iam_permissions-%d' % (_millis (),)
405+ SUB_NAME = 'subscription_check_iam_permissions-defaults-%d' % (_millis (),)
406+ topic = client .topic (TOPIC_NAME )
407+ topic .create ()
408+ to_delete .append (topic )
409+
410+ subscription = topic .subscription (SUB_NAME )
411+ subscription .create ()
412+ to_delete .append (subscription )
413+
414+ # [START subscription_check_iam_permissions]
415+ from gcloud .pubsub .iam import OWNER_ROLE , EDITOR_ROLE , VIEWER_ROLE
416+ TO_CHECK = [OWNER_ROLE , EDITOR_ROLE , VIEWER_ROLE ]
417+ ALLOWED = subscription .check_iam_permissions (TO_CHECK )
418+ assert set (ALLOWED ) == set (TO_CHECK )
419+ # [END subscription_check_iam_permissions]
420+
421+
366422def _find_examples ():
367423 funcs = [obj for obj in globals ().values ()
368424 if getattr (obj , '_snippet' , False )]
0 commit comments