Skip to content

Commit 2196802

Browse files
committed
Return frozensets from named Policy properties.
Updating them in place never actually worked (they were sets created on the fly), but at least we give an appropriate error now if the user tries.
1 parent 38f8976 commit 2196802

4 files changed

Lines changed: 13 additions & 5 deletions

File tree

core/google/cloud/iam.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ def owners(self):
6262
for role in self._OWNER_ROLES:
6363
for member in self.bindings.get(role, ()):
6464
result.add(member)
65-
return result
65+
return frozenset(result)
6666

6767
@owners.setter
6868
def owners(self, value):
@@ -76,7 +76,7 @@ def editors(self):
7676
for role in self._EDITOR_ROLES:
7777
for member in self.bindings.get(role, ()):
7878
result.add(member)
79-
return result
79+
return frozenset(result)
8080

8181
@editors.setter
8282
def editors(self, value):
@@ -90,7 +90,7 @@ def viewers(self):
9090
for role in self._VIEWER_ROLES:
9191
for member in self.bindings.get(role, ()):
9292
result.add(member)
93-
return result
93+
return frozenset(result)
9494

9595
@viewers.setter
9696
def viewers(self, value):

core/tests/unit/test_iam.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,11 @@ def test_ctor_defaults(self):
3030
policy = self._make_one()
3131
self.assertIsNone(policy.etag)
3232
self.assertIsNone(policy.version)
33+
self.assertIsInstance(policy.owners, frozenset)
3334
self.assertEqual(list(policy.owners), [])
35+
self.assertIsInstance(policy.editors, frozenset)
3436
self.assertEqual(list(policy.editors), [])
37+
self.assertIsInstance(policy.viewers, frozenset)
3538
self.assertEqual(list(policy.viewers), [])
3639
self.assertEqual(dict(policy.bindings), {})
3740

pubsub/google/cloud/pubsub/iam.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ class Policy(_BasePolicy):
109109
@property
110110
def publishers(self):
111111
"""Legacy access to owner role."""
112-
return self.bindings.get(PUBSUB_PUBLISHER_ROLE, ())
112+
return frozenset(self.bindings.get(PUBSUB_PUBLISHER_ROLE, ()))
113113

114114
@publishers.setter
115115
def publishers(self, value):
@@ -119,7 +119,7 @@ def publishers(self, value):
119119
@property
120120
def subscribers(self):
121121
"""Legacy access to owner role."""
122-
return self.bindings.get(PUBSUB_SUBSCRIBER_ROLE, ())
122+
return frozenset(self.bindings.get(PUBSUB_SUBSCRIBER_ROLE, ()))
123123

124124
@subscribers.setter
125125
def subscribers(self, value):

pubsub/tests/unit/test_iam.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,15 @@ def test_ctor_defaults(self):
3030
policy = self._make_one()
3131
self.assertIsNone(policy.etag)
3232
self.assertIsNone(policy.version)
33+
self.assertIsInstance(policy.owners, frozenset)
3334
self.assertEqual(list(policy.owners), [])
35+
self.assertIsInstance(policy.editors, frozenset)
3436
self.assertEqual(list(policy.editors), [])
37+
self.assertIsInstance(policy.viewers, frozenset)
3538
self.assertEqual(list(policy.viewers), [])
39+
self.assertIsInstance(policy.publishers, frozenset)
3640
self.assertEqual(list(policy.publishers), [])
41+
self.assertIsInstance(policy.subscribers, frozenset)
3742
self.assertEqual(list(policy.subscribers), [])
3843

3944
def test_ctor_explicit(self):

0 commit comments

Comments
 (0)