28
28
import org .signal .libsignal .zkgroup .auth .AuthCredentialWithPni ;
29
29
30
30
class GroupsControllerBannedMembersTest extends BaseGroupsControllerTest {
31
+
31
32
@ Test
32
33
public void testGetGroupJoinInfoWhenBanned () {
33
34
final byte [] inviteLinkPassword = new byte [16 ];
34
35
new SecureRandom ().nextBytes (inviteLinkPassword );
35
36
final String inviteLinkPasswordString = Base64 .getUrlEncoder ().encodeToString (inviteLinkPassword );
36
37
37
38
final Group .Builder groupBuilder = group .toBuilder ();
38
-
39
39
setMockGroupState (groupBuilder );
40
- Response response = getGroupJoinInfoWithPassword (inviteLinkPasswordString );
41
- assertThat (response .getStatus ()).isEqualTo (403 );
42
- assertThat (response .hasEntity ()).isFalse ();
43
- assertThat (response .getStringHeaders ()).doesNotContainKey ("x-signal-forbidden-reason" );
44
40
45
- groupBuilder .setInviteLinkPassword (ByteString .copyFrom (inviteLinkPassword ));
41
+ try (Response response = getGroupJoinInfoWithPassword (inviteLinkPasswordString )) {
42
+ assertThat (response .getStatus ()).isEqualTo (403 );
43
+ assertThat (response .hasEntity ()).isFalse ();
44
+ assertThat (response .getStringHeaders ()).doesNotContainKey ("x-signal-forbidden-reason" );
45
+ }
46
46
47
+ groupBuilder .setInviteLinkPassword (ByteString .copyFrom (inviteLinkPassword ));
47
48
setMockGroupState (groupBuilder );
48
- response = getGroupJoinInfoWithPassword (inviteLinkPasswordString );
49
- assertThat (response .getStatus ()).isEqualTo (403 );
50
- assertThat (response .hasEntity ()).isFalse ();
51
- assertThat (response .getStringHeaders ()).doesNotContainKey ("x-signal-forbidden-reason" );
52
49
53
- groupBuilder .getAccessControlBuilder ().setAddFromInviteLink (AccessControl .AccessRequired .ANY );
50
+ try (Response response = getGroupJoinInfoWithPassword (inviteLinkPasswordString )) {
51
+ assertThat (response .getStatus ()).isEqualTo (403 );
52
+ assertThat (response .hasEntity ()).isFalse ();
53
+ assertThat (response .getStringHeaders ()).doesNotContainKey ("x-signal-forbidden-reason" );
54
+ }
54
55
56
+ groupBuilder .getAccessControlBuilder ().setAddFromInviteLink (AccessControl .AccessRequired .ANY );
55
57
setMockGroupState (groupBuilder );
56
- response = getGroupJoinInfoWithPassword (inviteLinkPasswordString );
57
- assertThat (response .getStatus ()).isEqualTo (200 );
58
- assertThat (response .hasEntity ()).isTrue ();
59
- assertThat (response .getStringHeaders ()).doesNotContainKey ("x-signal-forbidden-reason" );
60
58
61
- groupBuilder .addMembersBannedBuilder ().setUserId (ByteString .copyFrom (validUserFourPresentation .getUuidCiphertext ().serialize ())).setTimestamp (clock .millis ());
59
+ try (Response response = getGroupJoinInfoWithPassword (inviteLinkPasswordString )) {
60
+ assertThat (response .getStatus ()).isEqualTo (200 );
61
+ assertThat (response .hasEntity ()).isTrue ();
62
+ assertThat (response .getStringHeaders ()).doesNotContainKey ("x-signal-forbidden-reason" );
63
+ }
62
64
65
+ groupBuilder .addMembersBannedBuilder ().setUserId (ByteString .copyFrom (validUserFourPresentation .getUuidCiphertext ().serialize ())).setTimestamp (clock .millis ());
63
66
setMockGroupState (groupBuilder );
64
- response = getGroupJoinInfoWithPassword (inviteLinkPasswordString );
65
- assertThat (response .getStatus ()).isEqualTo (403 );
66
- assertThat (response .hasEntity ()).isFalse ();
67
- assertThat (response .getStringHeaders ()).containsEntry ("x-signal-forbidden-reason" , List .of ("banned" ));
67
+
68
+ try (Response response = getGroupJoinInfoWithPassword (inviteLinkPasswordString )) {
69
+ assertThat (response .getStatus ()).isEqualTo (403 );
70
+ assertThat (response .hasEntity ()).isFalse ();
71
+ assertThat (response .getStringHeaders ()).containsEntry ("x-signal-forbidden-reason" , List .of ("banned" ));
72
+ }
68
73
}
69
74
70
75
@ Test
@@ -74,37 +79,44 @@ public void testGetGroupLogsWhenBanned() {
74
79
setMockGroupState (groupBuilder );
75
80
when (groupsManager .getChangeRecords (eq (ByteString .copyFrom (groupPublicParams .getGroupIdentifier ().serialize ())), isA (Group .class ), any (), anyBoolean (), anyBoolean (), anyInt (), anyInt ()))
76
81
.thenReturn (CompletableFuture .completedFuture (List .of (GroupChangeState .newBuilder ().setGroupState (groupBuilder ).build ())));
77
- Response response = getGroupLogs (0 );
78
- assertThat (response .getStatus ()).isEqualTo (200 );
79
- assertThat (response .hasEntity ()).isTrue ();
82
+
83
+ try (Response response = getGroupLogs (0 )){
84
+ assertThat (response .getStatus ()).isEqualTo (200 );
85
+ assertThat (response .hasEntity ()).isTrue ();
86
+ }
80
87
81
88
groupBuilder .addMembersBannedBuilder ().setUserId (groupBuilder .getMembers (1 ).getUserId ()).setTimestamp (clock .millis ());
82
89
groupBuilder .removeMembers (1 );
83
90
84
91
setMockGroupState (groupBuilder );
85
92
when (groupsManager .getChangeRecords (eq (ByteString .copyFrom (groupPublicParams .getGroupIdentifier ().serialize ())), isA (Group .class ), any (), anyBoolean (), anyBoolean (), anyInt (), anyInt ()))
86
93
.thenReturn (CompletableFuture .completedFuture (List .of (GroupChangeState .newBuilder ().setGroupState (groupBuilder ).build ())));
87
- response = getGroupLogs (0 );
88
- assertThat (response .getStatus ()).isEqualTo (403 );
89
- assertThat (response .hasEntity ()).isFalse ();
94
+
95
+ try (Response response = getGroupLogs (0 )) {
96
+ assertThat (response .getStatus ()).isEqualTo (403 );
97
+ assertThat (response .hasEntity ()).isFalse ();
98
+ }
90
99
}
91
100
92
101
@ Test
93
102
public void testGetGroupWhenBanned () {
94
103
final Group .Builder groupBuilder = group .toBuilder ();
95
104
96
105
setMockGroupState (groupBuilder );
97
- Response response = getGroup ();
98
- assertThat (response .getStatus ()).isEqualTo (200 );
99
- assertThat (response .hasEntity ()).isTrue ();
106
+
107
+ try (Response response = getGroup ()) {
108
+ assertThat (response .getStatus ()).isEqualTo (200 );
109
+ assertThat (response .hasEntity ()).isTrue ();
110
+ }
100
111
101
112
groupBuilder .addMembersBannedBuilder ().setUserId (groupBuilder .getMembers (0 ).getUserId ()).setTimestamp (clock .millis ());
102
113
groupBuilder .removeMembers (0 );
103
-
104
114
setMockGroupState (groupBuilder );
105
- response = getGroup ();
106
- assertThat (response .getStatus ()).isEqualTo (403 );
107
- assertThat (response .hasEntity ()).isFalse ();
115
+
116
+ try (Response response = getGroup ()) {
117
+ assertThat (response .getStatus ()).isEqualTo (403 );
118
+ assertThat (response .hasEntity ()).isFalse ();
119
+ }
108
120
}
109
121
110
122
@ Test
@@ -119,13 +131,15 @@ public void testCreateGroupWithBannedMembers() {
119
131
groupBuilder .getMembersBuilder (0 ).setPresentation (ByteString .copyFrom (validUserPresentation .serialize ()));
120
132
groupBuilder .getMembersBuilder (1 ).setPresentation (ByteString .copyFrom (validUserTwoPresentation .serialize ()));
121
133
122
- Response response = createGroup (groupBuilder );
123
- assertThat (response .getStatus ()).isEqualTo (200 );
134
+ try (Response response = createGroup (groupBuilder )) {
135
+ assertThat (response .getStatus ()).isEqualTo (200 );
136
+ }
124
137
125
138
groupBuilder .addMembersBannedBuilder ().setUserId (ByteString .copyFrom (validUserFourPresentation .getUuidCiphertext ().serialize ())).setTimestamp (clock .millis ());
126
139
127
- response = createGroup (groupBuilder );
128
- assertThat (response .getStatus ()).isEqualTo (400 );
140
+ try (Response response = createGroup (groupBuilder )) {
141
+ assertThat (response .getStatus ()).isEqualTo (400 );
142
+ }
129
143
}
130
144
131
145
@ Test
@@ -138,13 +152,14 @@ public void testModifyGroupBanMember() throws Exception {
138
152
139
153
setMockGroupState (groupBuilder );
140
154
setupGroupsManagerForWrites ();
141
- Response response = modifyGroup (AuthHelper .VALID_USER_AUTH_CREDENTIAL , actionsBuilder );
142
155
143
- actionsBuilder .setGroupId (ByteString .copyFrom (groupPublicParams .getGroupIdentifier ().serialize ()));
144
- actionsBuilder .getAddMembersBannedBuilder (0 ).getAddedBuilder ().setTimestamp (clock .millis ());
145
- groupBuilder .setVersion (1 ).addMembersBannedBuilder ().setUserId (validUserThreeId ).setTimestamp (clock .millis ());
146
- assertThat (response .getStatus ()).isEqualTo (200 );
147
- verifyGroupModification (groupBuilder , actionsBuilder , 4 , response , validUserId );
156
+ try (Response response = modifyGroup (AuthHelper .VALID_USER_AUTH_CREDENTIAL , actionsBuilder )) {
157
+ actionsBuilder .setGroupId (ByteString .copyFrom (groupPublicParams .getGroupIdentifier ().serialize ()));
158
+ actionsBuilder .getAddMembersBannedBuilder (0 ).getAddedBuilder ().setTimestamp (clock .millis ());
159
+ groupBuilder .setVersion (1 ).addMembersBannedBuilder ().setUserId (validUserThreeId ).setTimestamp (clock .millis ());
160
+ assertThat (response .getStatus ()).isEqualTo (200 );
161
+ verifyGroupModification (groupBuilder , actionsBuilder , 4 , response , validUserId );
162
+ }
148
163
}
149
164
150
165
@ Test
@@ -157,10 +172,11 @@ public void testModifyGroupBanMemberAsNonAdmin() {
157
172
158
173
setMockGroupState (groupBuilder );
159
174
setupGroupsManagerForWrites ();
160
- Response response = modifyGroup (AuthHelper .VALID_USER_TWO_AUTH_CREDENTIAL , actionsBuilder );
161
175
162
- assertThat (response .getStatus ()).isEqualTo (403 );
163
- verifyNoGroupWrites ();
176
+ try (Response response = modifyGroup (AuthHelper .VALID_USER_TWO_AUTH_CREDENTIAL , actionsBuilder )) {
177
+ assertThat (response .getStatus ()).isEqualTo (403 );
178
+ verifyNoGroupWrites ();
179
+ }
164
180
}
165
181
166
182
@ Test
@@ -174,12 +190,13 @@ public void testModifyGroupUnbanMember() throws Exception {
174
190
175
191
setMockGroupState (groupBuilder );
176
192
setupGroupsManagerForWrites ();
177
- Response response = modifyGroup (AuthHelper .VALID_USER_AUTH_CREDENTIAL , actionsBuilder );
178
193
179
- actionsBuilder .setGroupId (ByteString .copyFrom (groupPublicParams .getGroupIdentifier ().serialize ()));
180
- groupBuilder .setVersion (1 ).clearMembersBanned ();
181
- assertThat (response .getStatus ()).isEqualTo (200 );
182
- verifyGroupModification (groupBuilder , actionsBuilder , 4 , response , validUserId );
194
+ try (Response response = modifyGroup (AuthHelper .VALID_USER_AUTH_CREDENTIAL , actionsBuilder )) {
195
+ actionsBuilder .setGroupId (ByteString .copyFrom (groupPublicParams .getGroupIdentifier ().serialize ()));
196
+ groupBuilder .setVersion (1 ).clearMembersBanned ();
197
+ assertThat (response .getStatus ()).isEqualTo (200 );
198
+ verifyGroupModification (groupBuilder , actionsBuilder , 4 , response , validUserId );
199
+ }
183
200
}
184
201
185
202
@ Test
@@ -194,10 +211,11 @@ public void testModifyGroupUnbanMemberAsNonAdmin() {
194
211
195
212
setMockGroupState (groupBuilder );
196
213
setupGroupsManagerForWrites ();
197
- Response response = modifyGroup (AuthHelper .VALID_USER_TWO_AUTH_CREDENTIAL , actionsBuilder );
198
214
199
- assertThat (response .getStatus ()).isEqualTo (403 );
200
- verifyNoGroupWrites ();
215
+ try (Response response = modifyGroup (AuthHelper .VALID_USER_TWO_AUTH_CREDENTIAL , actionsBuilder )) {
216
+ assertThat (response .getStatus ()).isEqualTo (403 );
217
+ verifyNoGroupWrites ();
218
+ }
201
219
}
202
220
203
221
@ Test
@@ -211,12 +229,13 @@ public void testModifyGroupUnbanMemberAsNonAdminWithOpenGroup() throws Exception
211
229
212
230
setMockGroupState (groupBuilder );
213
231
setupGroupsManagerForWrites ();
214
- Response response = modifyGroup (AuthHelper .VALID_USER_TWO_AUTH_CREDENTIAL , actionsBuilder );
215
232
216
- actionsBuilder .setGroupId (ByteString .copyFrom (groupPublicParams .getGroupIdentifier ().serialize ()));
217
- groupBuilder .setVersion (1 ).clearMembersBanned ();
218
- assertThat (response .getStatus ()).isEqualTo (200 );
219
- verifyGroupModification (groupBuilder , actionsBuilder , 4 , response , validUserTwoId );
233
+ try (Response response = modifyGroup (AuthHelper .VALID_USER_TWO_AUTH_CREDENTIAL , actionsBuilder )) {
234
+ actionsBuilder .setGroupId (ByteString .copyFrom (groupPublicParams .getGroupIdentifier ().serialize ()));
235
+ groupBuilder .setVersion (1 ).clearMembersBanned ();
236
+ assertThat (response .getStatus ()).isEqualTo (200 );
237
+ verifyGroupModification (groupBuilder , actionsBuilder , 4 , response , validUserTwoId );
238
+ }
220
239
}
221
240
222
241
@ Test
@@ -229,9 +248,11 @@ public void testModifyGroupBanMemberWithoutRemoval() {
229
248
230
249
setMockGroupState (groupBuilder );
231
250
setupGroupsManagerForWrites ();
232
- Response response = modifyGroup (AuthHelper .VALID_USER_AUTH_CREDENTIAL , actionsBuilder );
233
- assertThat (response .getStatus ()).isEqualTo (400 );
234
- verifyNoGroupWrites ();
251
+
252
+ try (Response response = modifyGroup (AuthHelper .VALID_USER_AUTH_CREDENTIAL , actionsBuilder )) {
253
+ assertThat (response .getStatus ()).isEqualTo (400 );
254
+ verifyNoGroupWrites ();
255
+ }
235
256
}
236
257
237
258
@ Test
@@ -245,9 +266,11 @@ public void testModifyGroupBanMemberPendingProfileKeyWithoutRemoval() {
245
266
246
267
setMockGroupState (groupBuilder );
247
268
setupGroupsManagerForWrites ();
248
- Response response = modifyGroup (AuthHelper .VALID_USER_AUTH_CREDENTIAL , actionsBuilder );
249
- assertThat (response .getStatus ()).isEqualTo (400 );
250
- verifyNoGroupWrites ();
269
+
270
+ try (Response response = modifyGroup (AuthHelper .VALID_USER_AUTH_CREDENTIAL , actionsBuilder )) {
271
+ assertThat (response .getStatus ()).isEqualTo (400 );
272
+ verifyNoGroupWrites ();
273
+ }
251
274
}
252
275
253
276
@ Test
@@ -261,9 +284,11 @@ public void testModifyGroupBanMemberPendingAdminApprovalWithoutRemoval() {
261
284
262
285
setMockGroupState (groupBuilder );
263
286
setupGroupsManagerForWrites ();
264
- Response response = modifyGroup (AuthHelper .VALID_USER_AUTH_CREDENTIAL , actionsBuilder );
265
- assertThat (response .getStatus ()).isEqualTo (400 );
266
- verifyNoGroupWrites ();
287
+
288
+ try (Response response = modifyGroup (AuthHelper .VALID_USER_AUTH_CREDENTIAL , actionsBuilder )) {
289
+ assertThat (response .getStatus ()).isEqualTo (400 );
290
+ verifyNoGroupWrites ();
291
+ }
267
292
}
268
293
269
294
@ Test
@@ -280,11 +305,12 @@ public void testModifyGroupBanMemberAddAndDeleteInSameChange() {
280
305
actionsBuilder .setVersion (1 );
281
306
282
307
setupGroupsManagerForWrites ();
283
- Response response = modifyGroup (AuthHelper .VALID_USER_AUTH_CREDENTIAL , actionsBuilder );
284
308
285
- actionsBuilder .setGroupId (ByteString .copyFrom (groupPublicParams .getGroupIdentifier ().serialize ()));
286
- assertThat (response .getStatus ()).isEqualTo (400 );
287
- verifyNoGroupWrites ();
309
+ try (Response response = modifyGroup (AuthHelper .VALID_USER_AUTH_CREDENTIAL , actionsBuilder )) {
310
+ actionsBuilder .setGroupId (ByteString .copyFrom (groupPublicParams .getGroupIdentifier ().serialize ()));
311
+ assertThat (response .getStatus ()).isEqualTo (400 );
312
+ verifyNoGroupWrites ();
313
+ }
288
314
}
289
315
290
316
private Response createGroup (Group .Builder groupBuilder ) {
0 commit comments