@@ -452,6 +452,73 @@ def test_list_subscriptions_missing_key(self):
452452 % (PROJECT , TOPIC_NAME ))
453453 self .assertEqual (req ['query_params' ], {})
454454
455+ def test_get_iam_policy_w_bound_client (self ):
456+ OWNER1 = 'user:phred@example.com'
457+ OWNER2 = 'group:cloud-logs@google.com'
458+ WRITER1 = 'domain:google.com'
459+ WRITER2 = 'user:phred@example.com'
460+ READER1 = 'serviceAccount:1234-abcdef@service.example.com'
461+ READER2 = 'user:phred@example.com'
462+ POLICY = {
463+ 'etag' : 'DEADBEEF' ,
464+ 'version' : 17 ,
465+ 'bindings' : [
466+ {'role' : 'roles/owner' , 'members' : [OWNER1 , OWNER2 ]},
467+ {'role' : 'roles/writer' , 'members' : [WRITER1 , WRITER2 ]},
468+ {'role' : 'roles/reader' , 'members' : [READER1 , READER2 ]},
469+ ],
470+ }
471+ TOPIC_NAME = 'topic_name'
472+ PROJECT = 'PROJECT'
473+ TOPIC_NAME = 'topic_name'
474+ PATH = 'projects/%s/topics/%s:getIamPolicy' % (PROJECT , TOPIC_NAME )
475+
476+ conn = _Connection (POLICY )
477+ CLIENT = _Client (project = PROJECT , connection = conn )
478+ topic = self ._makeOne (TOPIC_NAME , client = CLIENT )
479+
480+ policy = topic .get_iam_policy ()
481+
482+ self .assertEqual (policy .etag , 'DEADBEEF' )
483+ self .assertEqual (policy .version , 17 )
484+ self .assertEqual (sorted (policy .owners ), [OWNER2 , OWNER1 ])
485+ self .assertEqual (sorted (policy .writers ), [WRITER1 , WRITER2 ])
486+ self .assertEqual (sorted (policy .readers ), [READER1 , READER2 ])
487+
488+ self .assertEqual (len (conn ._requested ), 1 )
489+ req = conn ._requested [0 ]
490+ self .assertEqual (req ['method' ], 'GET' )
491+ self .assertEqual (req ['path' ], '/%s' % PATH )
492+
493+ def test_get_iam_policy_w_alternate_client (self ):
494+ POLICY = {
495+ 'etag' : 'ACAB' ,
496+ }
497+ TOPIC_NAME = 'topic_name'
498+ PROJECT = 'PROJECT'
499+ TOPIC_NAME = 'topic_name'
500+ PATH = 'projects/%s/topics/%s:getIamPolicy' % (PROJECT , TOPIC_NAME )
501+
502+ conn1 = _Connection ()
503+ conn2 = _Connection (POLICY )
504+ CLIENT1 = _Client (project = PROJECT , connection = conn1 )
505+ CLIENT2 = _Client (project = PROJECT , connection = conn2 )
506+ topic = self ._makeOne (TOPIC_NAME , client = CLIENT1 )
507+
508+ policy = topic .get_iam_policy (client = CLIENT2 )
509+
510+ self .assertEqual (policy .etag , 'ACAB' )
511+ self .assertEqual (policy .version , None )
512+ self .assertEqual (sorted (policy .owners ), [])
513+ self .assertEqual (sorted (policy .writers ), [])
514+ self .assertEqual (sorted (policy .readers ), [])
515+
516+ self .assertEqual (len (conn1 ._requested ), 0 )
517+ self .assertEqual (len (conn2 ._requested ), 1 )
518+ req = conn2 ._requested [0 ]
519+ self .assertEqual (req ['method' ], 'GET' )
520+ self .assertEqual (req ['path' ], '/%s' % PATH )
521+
455522
456523class TestBatch (unittest2 .TestCase ):
457524
0 commit comments