Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
This repository was archived by the owner on Dec 3, 2023. It is now read-only.

Commit f45d913

Browse filesBrowse files
authored
fix: verify correctness of map -> list equality (#174)
* fix: verify correctness of map -> list equality * address comments * format
1 parent d28f885 commit f45d913
Copy full SHA for f45d913

2 files changed

+43-3Lines changed: 43 additions & 3 deletions

File tree

Expand file treeCollapse file tree
Open diff view settings
Filter options
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎google-cloud-core/src/main/java/com/google/cloud/Policy.java‎

Copy file name to clipboardExpand all lines: google-cloud-core/src/main/java/com/google/cloud/Policy.java
+13-3Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ public final Builder addIdentity(Role role, Identity first, Identity... others)
260260
Binding binding = bindingsList.get(i);
261261
if (binding.getRole().equals(role.getValue())) {
262262
Binding.Builder bindingBuilder = binding.toBuilder();
263-
ImmutableList.Builder<String> membersBuilder = ImmutableList.builder();
263+
ImmutableSet.Builder<String> membersBuilder = ImmutableSet.builder();
264264
membersBuilder.addAll(binding.getMembers());
265265
membersBuilder.add(first.strValue());
266266
for (Identity identity : others) {
@@ -273,7 +273,7 @@ public final Builder addIdentity(Role role, Identity first, Identity... others)
273273
}
274274
// Binding does not yet exist.
275275
Binding.Builder bindingBuilder = Binding.newBuilder().setRole(role.getValue());
276-
ImmutableList.Builder<String> membersBuilder = ImmutableList.builder();
276+
ImmutableSet.Builder<String> membersBuilder = ImmutableSet.builder();
277277
membersBuilder.add(first.strValue());
278278
for (Identity identity : others) {
279279
membersBuilder.add(identity.strValue());
@@ -432,9 +432,19 @@ public boolean equals(Object obj) {
432432
return false;
433433
}
434434
Policy other = (Policy) obj;
435-
if (!bindingsList.equals(other.getBindingsList())) {
435+
if (bindingsList == null && other.getBindingsList() == null) {
436+
return true;
437+
}
438+
if ((bindingsList == null && other.getBindingsList() != null)
439+
|| bindingsList != null && other.getBindingsList() == null
440+
|| bindingsList.size() != other.getBindingsList().size()) {
436441
return false;
437442
}
443+
for (Binding binding : bindingsList) {
444+
if (!other.getBindingsList().contains(binding)) {
445+
return false;
446+
}
447+
}
438448
return Objects.equals(etag, other.getEtag()) && version == other.getVersion();
439449
}
440450

Collapse file

‎google-cloud-core/src/test/java/com/google/cloud/PolicyTest.java‎

Copy file name to clipboardExpand all lines: google-cloud-core/src/test/java/com/google/cloud/PolicyTest.java
+30Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,36 @@ public void testBuilder() {
104104
assertEquals(0, policy.getVersion());
105105
}
106106

107+
@Test
108+
public void testPolicyOrderShouldNotMatter() {
109+
Role role1 = Role.of("role1");
110+
Identity identity1 = Identity.user("user1@example.com");
111+
Role role2 = Role.of("role2");
112+
Identity identity2 = Identity.user("user2@example.com");
113+
Policy policy1 =
114+
Policy.newBuilder().addIdentity(role1, identity1).addIdentity(role2, identity2).build();
115+
Policy policy2 =
116+
Policy.newBuilder().addIdentity(role2, identity2).addIdentity(role1, identity1).build();
117+
assertEquals(policy1, policy2);
118+
}
119+
120+
@Test
121+
public void testPolicyMultipleAddIdentitiesShouldNotMatter() {
122+
Role role1 = Role.of("role1");
123+
Identity identity1 = Identity.user("user1@example.com");
124+
Role role2 = Role.of("role2");
125+
Identity identity2 = Identity.user("user2@example.com");
126+
Policy policy1 =
127+
Policy.newBuilder()
128+
.addIdentity(role1, identity1)
129+
.addIdentity(role2, identity2)
130+
.addIdentity(role2, identity2)
131+
.build();
132+
Policy policy2 =
133+
Policy.newBuilder().addIdentity(role2, identity2).addIdentity(role1, identity1).build();
134+
assertEquals(policy1, policy2);
135+
}
136+
107137
@Test
108138
public void testIllegalPolicies() {
109139
try {

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.