Skip to content

Commit 20af073

Browse files
committed
JAMES-4163 Do not run PG RLS tests on top of non-domain-contextualised domains
1 parent f459d10 commit 20af073

12 files changed

Lines changed: 603 additions & 341 deletions

File tree

server/data/data-api/src/test/java/org/apache/james/vacation/api/VacationRepositoryContract.java

Lines changed: 44 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,13 @@ public interface VacationRepositoryContract {
4747

4848
VacationRepository vacationRepository();
4949

50+
default AccountId accountId() {
51+
return ACCOUNT_ID;
52+
}
53+
5054
@Test
5155
default void retrieveVacationShouldReturnDefaultValueByDefault() {
52-
assertThat(vacationRepository().retrieveVacation(ACCOUNT_ID).block()).isEqualTo(VacationRepository.DEFAULT_VACATION);
56+
assertThat(vacationRepository().retrieveVacation(accountId()).block()).isEqualTo(VacationRepository.DEFAULT_VACATION);
5357
}
5458

5559
@Test
@@ -58,9 +62,9 @@ default void modifyVacationShouldUpdateEnabled() {
5862
.isEnabled(true)
5963
.build();
6064

61-
vacationRepository().modifyVacation(ACCOUNT_ID, vacationPatch).block();
65+
vacationRepository().modifyVacation(accountId(), vacationPatch).block();
6266

63-
assertThat(vacationRepository().retrieveVacation(ACCOUNT_ID).block())
67+
assertThat(vacationRepository().retrieveVacation(accountId()).block())
6468
.isEqualTo(Vacation.builder()
6569
.enabled(true)
6670
.build());
@@ -72,9 +76,9 @@ default void modifyVacationShouldUpdateFromDate() {
7276
.fromDate(DATE_2014)
7377
.build();
7478

75-
vacationRepository().modifyVacation(ACCOUNT_ID, vacationPatch).block();
79+
vacationRepository().modifyVacation(accountId(), vacationPatch).block();
7680

77-
assertThat(vacationRepository().retrieveVacation(ACCOUNT_ID).block())
81+
assertThat(vacationRepository().retrieveVacation(accountId()).block())
7882
.isEqualTo(Vacation.builder()
7983
.fromDate(Optional.of(DATE_2014))
8084
.enabled(false)
@@ -87,9 +91,9 @@ default void modifyVacationShouldUpdateToDate() {
8791
.toDate(DATE_2017)
8892
.build();
8993

90-
vacationRepository().modifyVacation(ACCOUNT_ID, vacationPatch).block();
94+
vacationRepository().modifyVacation(accountId(), vacationPatch).block();
9195

92-
assertThat(vacationRepository().retrieveVacation(ACCOUNT_ID).block())
96+
assertThat(vacationRepository().retrieveVacation(accountId()).block())
9397
.isEqualTo(Vacation.builder()
9498
.toDate(Optional.of(DATE_2017))
9599
.enabled(false)
@@ -103,9 +107,9 @@ default void modifyVacationShouldUpdateSubject() {
103107
.subject(newSubject)
104108
.build();
105109

106-
vacationRepository().modifyVacation(ACCOUNT_ID, vacationPatch).block();
110+
vacationRepository().modifyVacation(accountId(), vacationPatch).block();
107111

108-
assertThat(vacationRepository().retrieveVacation(ACCOUNT_ID).block())
112+
assertThat(vacationRepository().retrieveVacation(accountId()).block())
109113
.isEqualTo(Vacation.builder()
110114
.subject(Optional.of(newSubject))
111115
.enabled(false)
@@ -119,9 +123,9 @@ default void modifyVacationShouldUpdateTextBody() {
119123
.textBody(newTextBody)
120124
.build();
121125

122-
vacationRepository().modifyVacation(ACCOUNT_ID, vacationPatch).block();
126+
vacationRepository().modifyVacation(accountId(), vacationPatch).block();
123127

124-
assertThat(vacationRepository().retrieveVacation(ACCOUNT_ID).block())
128+
assertThat(vacationRepository().retrieveVacation(accountId()).block())
125129
.isEqualTo(Vacation.builder()
126130
.textBody(newTextBody)
127131
.enabled(false)
@@ -135,9 +139,9 @@ default void modifyVacationShouldUpdateHtmlBody() {
135139
.htmlBody(newHtmlBody)
136140
.build();
137141

138-
vacationRepository().modifyVacation(ACCOUNT_ID, vacationPatch).block();
142+
vacationRepository().modifyVacation(accountId(), vacationPatch).block();
139143

140-
assertThat(vacationRepository().retrieveVacation(ACCOUNT_ID).block())
144+
assertThat(vacationRepository().retrieveVacation(accountId()).block())
141145
.isEqualTo(Vacation.builder()
142146
.enabled(false)
143147
.htmlBody(newHtmlBody)
@@ -149,9 +153,9 @@ default void modifyVacationShouldAllowToUpdateAllFieldsAtOnce() {
149153
VacationPatch vacationPatch = VacationPatch.builderFrom(VACATION)
150154
.build();
151155

152-
vacationRepository().modifyVacation(ACCOUNT_ID, vacationPatch).block();
156+
vacationRepository().modifyVacation(accountId(), vacationPatch).block();
153157

154-
assertThat(vacationRepository().retrieveVacation(ACCOUNT_ID).block())
158+
assertThat(vacationRepository().retrieveVacation(accountId()).block())
155159
.isEqualTo(VACATION);
156160
}
157161

@@ -160,46 +164,46 @@ default void modifyVacationShouldAllowEmptyUpdates() {
160164
VacationPatch vacationPatch = VacationPatch.builder()
161165
.build();
162166

163-
vacationRepository().modifyVacation(ACCOUNT_ID, vacationPatch).block();
167+
vacationRepository().modifyVacation(accountId(), vacationPatch).block();
164168

165-
assertThat(vacationRepository().retrieveVacation(ACCOUNT_ID).block())
169+
assertThat(vacationRepository().retrieveVacation(accountId()).block())
166170
.isEqualTo(VacationRepository.DEFAULT_VACATION);
167171
}
168172

169173
@Test
170174
default void emptyUpdatesShouldNotChangeExistingVacations() {
171175
// Given
172-
vacationRepository().modifyVacation(ACCOUNT_ID,
176+
vacationRepository().modifyVacation(accountId(),
173177
VacationPatch.builderFrom(VACATION)
174178
.build())
175179
.block();
176180

177181
// When
178-
vacationRepository().modifyVacation(ACCOUNT_ID, VacationPatch.builder()
182+
vacationRepository().modifyVacation(accountId(), VacationPatch.builder()
179183
.build())
180184
.block();
181185

182186
// Then
183-
assertThat(vacationRepository().retrieveVacation(ACCOUNT_ID).block())
187+
assertThat(vacationRepository().retrieveVacation(accountId()).block())
184188
.isEqualTo(VACATION);
185189
}
186190

187191
@Test
188192
default void nullUpdateShouldResetSubject() {
189193
// Given
190-
vacationRepository().modifyVacation(ACCOUNT_ID,
194+
vacationRepository().modifyVacation(accountId(),
191195
VacationPatch.builderFrom(VACATION)
192196
.build())
193197
.block();
194198

195199
// When
196-
vacationRepository().modifyVacation(ACCOUNT_ID, VacationPatch.builder()
200+
vacationRepository().modifyVacation(accountId(), VacationPatch.builder()
197201
.subject(ValuePatch.remove())
198202
.build())
199203
.block();
200204

201205
// Then
202-
Vacation vacation = vacationRepository().retrieveVacation(ACCOUNT_ID).block();
206+
Vacation vacation = vacationRepository().retrieveVacation(accountId()).block();
203207
assertThat(vacation.getSubject()).isEmpty();
204208
assertThat(vacation)
205209
.isEqualTo(Vacation.builder()
@@ -214,19 +218,19 @@ default void nullUpdateShouldResetSubject() {
214218
@Test
215219
default void nullUpdateShouldResetText() {
216220
// Given
217-
vacationRepository().modifyVacation(ACCOUNT_ID,
221+
vacationRepository().modifyVacation(accountId(),
218222
VacationPatch.builderFrom(VACATION)
219223
.build())
220224
.block();
221225

222226
// When
223-
vacationRepository().modifyVacation(ACCOUNT_ID, VacationPatch.builder()
227+
vacationRepository().modifyVacation(accountId(), VacationPatch.builder()
224228
.textBody(ValuePatch.remove())
225229
.build())
226230
.block();
227231

228232
// Then
229-
Vacation vacation = vacationRepository().retrieveVacation(ACCOUNT_ID).block();
233+
Vacation vacation = vacationRepository().retrieveVacation(accountId()).block();
230234
assertThat(vacation.getTextBody()).isEmpty();
231235
assertThat(vacation)
232236
.isEqualTo(Vacation.builder()
@@ -241,19 +245,19 @@ default void nullUpdateShouldResetText() {
241245
@Test
242246
default void nullUpdateShouldResetHtml() {
243247
// Given
244-
vacationRepository().modifyVacation(ACCOUNT_ID,
248+
vacationRepository().modifyVacation(accountId(),
245249
VacationPatch.builderFrom(VACATION)
246250
.build())
247251
.block();
248252

249253
// When
250-
vacationRepository().modifyVacation(ACCOUNT_ID, VacationPatch.builder()
254+
vacationRepository().modifyVacation(accountId(), VacationPatch.builder()
251255
.htmlBody(ValuePatch.remove())
252256
.build())
253257
.block();
254258

255259
// Then
256-
Vacation vacation = vacationRepository().retrieveVacation(ACCOUNT_ID).block();
260+
Vacation vacation = vacationRepository().retrieveVacation(accountId()).block();
257261
assertThat(vacation.getHtmlBody()).isEmpty();
258262
assertThat(vacation)
259263
.isEqualTo(Vacation.builder()
@@ -268,19 +272,19 @@ default void nullUpdateShouldResetHtml() {
268272
@Test
269273
default void nullUpdateShouldResetToDate() {
270274
// Given
271-
vacationRepository().modifyVacation(ACCOUNT_ID,
275+
vacationRepository().modifyVacation(accountId(),
272276
VacationPatch.builderFrom(VACATION)
273277
.build())
274278
.block();
275279

276280
// When
277-
vacationRepository().modifyVacation(ACCOUNT_ID, VacationPatch.builder()
281+
vacationRepository().modifyVacation(accountId(), VacationPatch.builder()
278282
.toDate(ValuePatch.remove())
279283
.build())
280284
.block();
281285

282286
// Then
283-
Vacation vacation = vacationRepository().retrieveVacation(ACCOUNT_ID).block();
287+
Vacation vacation = vacationRepository().retrieveVacation(accountId()).block();
284288
assertThat(vacation.getToDate()).isEmpty();
285289
assertThat(vacation)
286290
.isEqualTo(Vacation.builder()
@@ -295,19 +299,19 @@ default void nullUpdateShouldResetToDate() {
295299
@Test
296300
default void nullUpdateShouldResetFromDate() {
297301
// Given
298-
vacationRepository().modifyVacation(ACCOUNT_ID,
302+
vacationRepository().modifyVacation(accountId(),
299303
VacationPatch.builderFrom(VACATION)
300304
.build())
301305
.block();
302306

303307
// When
304-
vacationRepository().modifyVacation(ACCOUNT_ID, VacationPatch.builder()
308+
vacationRepository().modifyVacation(accountId(), VacationPatch.builder()
305309
.fromDate(ValuePatch.remove())
306310
.build())
307311
.block();
308312

309313
// Then
310-
Vacation vacation = vacationRepository().retrieveVacation(ACCOUNT_ID).block();
314+
Vacation vacation = vacationRepository().retrieveVacation(accountId()).block();
311315
assertThat(vacation.getFromDate()).isEmpty();
312316
assertThat(vacation)
313317
.isEqualTo(Vacation.builder()
@@ -333,31 +337,31 @@ default void modifyVacationShouldThrowOnNullAccountId() {
333337

334338
@Test
335339
default void modifyVacationShouldThrowOnNullVacation() {
336-
assertThatThrownBy(() -> vacationRepository().modifyVacation(ACCOUNT_ID, null))
340+
assertThatThrownBy(() -> vacationRepository().modifyVacation(accountId(), null))
337341
.isInstanceOf(NullPointerException.class);
338342
}
339343

340344
@Test
341345
default void retrieveVacationShouldIgnoreCase() {
342-
vacationRepository().modifyVacation(ACCOUNT_ID,
346+
vacationRepository().modifyVacation(accountId(),
343347
VacationPatch.builderFrom(VACATION)
344348
.build())
345349
.block();
346350

347-
AccountId upperCaseAccount = AccountId.fromString(ACCOUNT_ID.getIdentifier().toUpperCase());
351+
AccountId upperCaseAccount = AccountId.fromString(accountId().getIdentifier().toUpperCase());
348352
Vacation vacation = vacationRepository().retrieveVacation(upperCaseAccount).block();
349353
assertThat(vacation).isNotNull();
350354
}
351355

352356
@Test
353357
default void modifiyVacationShouldIgnoreCase() {
354-
AccountId upperCaseAccount = AccountId.fromString(ACCOUNT_ID.getIdentifier().toUpperCase());
358+
AccountId upperCaseAccount = AccountId.fromString(accountId().getIdentifier().toUpperCase());
355359
vacationRepository().modifyVacation(upperCaseAccount,
356360
VacationPatch.builderFrom(VACATION)
357361
.build())
358362
.block();
359363

360-
Vacation vacation = vacationRepository().retrieveVacation(ACCOUNT_ID).block();
364+
Vacation vacation = vacationRepository().retrieveVacation(accountId()).block();
361365
assertThat(vacation).isNotNull();
362366
}
363367
}

server/data/data-jmap-postgres/src/test/java/org/apache/james/jmap/postgres/change/PostgresEmailChangeRepositoryTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232

3333
public class PostgresEmailChangeRepositoryTest implements EmailChangeRepositoryContract {
3434
@RegisterExtension
35-
static PostgresExtension postgresExtension = PostgresExtension.withRowLevelSecurity(PostgresEmailChangeDataDefinition.MODULE);
35+
static PostgresExtension postgresExtension = PostgresExtension.withoutRowLevelSecurity(PostgresEmailChangeDataDefinition.MODULE);
3636

3737
PostgresEmailChangeRepository postgresEmailChangeRepository;
3838

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
/****************************************************************
2+
* Licensed to the Apache Software Foundation (ASF) under one *
3+
* or more contributor license agreements. See the NOTICE file *
4+
* distributed with this work for additional information *
5+
* regarding copyright ownership. The ASF licenses this file *
6+
* to you under the Apache License, Version 2.0 (the *
7+
* "License"); you may not use this file except in compliance *
8+
* with the License. You may obtain a copy of the License at *
9+
* *
10+
* http://www.apache.org/licenses/LICENSE-2.0 *
11+
* *
12+
* Unless required by applicable law or agreed to in writing, *
13+
* software distributed under the License is distributed on an *
14+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
15+
* KIND, either express or implied. See the License for the *
16+
* specific language governing permissions and limitations *
17+
* under the License. *
18+
****************************************************************/
19+
20+
package org.apache.james.jmap.postgres.change;
21+
22+
import java.util.UUID;
23+
24+
import org.apache.james.backends.postgres.PostgresExtension;
25+
import org.apache.james.core.Username;
26+
import org.apache.james.jmap.api.change.EmailChangeRepository;
27+
import org.apache.james.jmap.api.change.EmailChangeRepositoryContract;
28+
import org.apache.james.jmap.api.change.State;
29+
import org.apache.james.jmap.api.model.AccountId;
30+
import org.apache.james.mailbox.model.MessageId;
31+
import org.apache.james.mailbox.postgres.PostgresMessageId;
32+
import org.junit.jupiter.api.BeforeEach;
33+
import org.junit.jupiter.api.extension.RegisterExtension;
34+
35+
public class PostgresEmailChangeRepositoryWithLRSTest implements EmailChangeRepositoryContract {
36+
@RegisterExtension
37+
static PostgresExtension postgresExtension = PostgresExtension.withRowLevelSecurity(PostgresEmailChangeDataDefinition.MODULE);
38+
39+
PostgresEmailChangeRepository postgresEmailChangeRepository;
40+
41+
@BeforeEach
42+
public void setUp() {
43+
postgresEmailChangeRepository = new PostgresEmailChangeRepository(postgresExtension.getExecutorFactory(), DEFAULT_NUMBER_OF_CHANGES);
44+
}
45+
46+
@Override
47+
public EmailChangeRepository emailChangeRepository() {
48+
return postgresEmailChangeRepository;
49+
}
50+
51+
@Override
52+
public MessageId generateNewMessageId() {
53+
return PostgresMessageId.Factory.of(UUID.randomUUID());
54+
}
55+
56+
@Override
57+
public State generateNewState() {
58+
return new PostgresStateFactory().generate();
59+
}
60+
61+
@Override
62+
public AccountId accountId() {
63+
return AccountId.fromUsername(Username.of("bob@domain.tld"));
64+
}
65+
}

server/data/data-jmap-postgres/src/test/java/org/apache/james/jmap/postgres/change/PostgresMailboxChangeRepositoryTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232

3333
class PostgresMailboxChangeRepositoryTest implements MailboxChangeRepositoryContract {
3434
@RegisterExtension
35-
static PostgresExtension postgresExtension = PostgresExtension.withRowLevelSecurity(PostgresMailboxChangeDataDefinition.MODULE);
35+
static PostgresExtension postgresExtension = PostgresExtension.withoutRowLevelSecurity(PostgresMailboxChangeDataDefinition.MODULE);
3636

3737
PostgresMailboxChangeRepository postgresMailboxChangeRepository;
3838

0 commit comments

Comments
 (0)