Skip to content

Commit 7e11c98

Browse files
committed
test the connection limit
1 parent 69fcdfa commit 7e11c98

2 files changed

Lines changed: 68 additions & 8 deletions

File tree

src/main/java/it/aboutbits/postgresql/crd/role/RoleUtil.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ private static Query buildCreateRole(
201201
options.add(joinWithComma(
202202
flags.getInRole()
203203
.stream()
204-
.map(DSL::name)
204+
.map(DSL::role)
205205
.toList()
206206
));
207207
}
@@ -210,7 +210,7 @@ private static Query buildCreateRole(
210210
options.add(joinWithComma(
211211
flags.getRole()
212212
.stream()
213-
.map(DSL::name)
213+
.map(DSL::role)
214214
.toList()
215215
));
216216
}
@@ -277,10 +277,10 @@ private static Query buildAlterRole(
277277
? RoleFlags.BYPASSRLS.flag()
278278
: RoleFlags.NO_BYPASSRLS.flag()
279279
));
280-
if (flags.getConnectionLimit() >= 0) {
281-
options.add(keyword(RoleFlags.CONNECTION_LIMIT.flag()));
282-
options.add(val(flags.getConnectionLimit()));
283-
}
280+
281+
options.add(keyword(RoleFlags.CONNECTION_LIMIT.flag()));
282+
options.add(val(flags.getConnectionLimit()));
283+
284284
if (flags.getValidUntil() != null) {
285285
options.add(keyword(RoleFlags.VALID_UNTIL.flag()));
286286
options.add(val(flags.getValidUntil()));

src/test/java/it/aboutbits/postgresql/crd/role/RoleReconcilerTest.java

Lines changed: 62 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -365,10 +365,70 @@ void roleFlag_togglesCorrectly(
365365
).isFalse();
366366
}
367367

368-
private Boolean getRoleFlagValue(
368+
@Test
369+
@DisplayName("When the CONNECTION LIMIT is changed, it should be updated in the database")
370+
void connectionLimit_updatesCorrectly() throws SQLException {
371+
// given
372+
var clusterConnection = given.one()
373+
.clusterConnection()
374+
.withName("test-role-conn-limit")
375+
.returnFirst();
376+
377+
var dsl = postgreSQLContextFactory.getDSLContext(clusterConnection);
378+
379+
var roleName = "test-role-conn-limit";
380+
381+
var role = buildRole(
382+
roleName,
383+
clusterConnection.getMetadata().getName(),
384+
/*login*/ false
385+
);
386+
387+
// 1. Set a connection limit
388+
role.getSpec().getFlags().setConnectionLimit(10);
389+
390+
// when
391+
var reconciled = applyRole(role);
392+
var initialGeneration = reconciled.getStatus().getObservedGeneration();
393+
394+
// then
395+
assertThat(
396+
getRoleFlagValue(dsl, roleName, PG_AUTHID.ROLCONNLIMIT)
397+
).isEqualTo(10);
398+
399+
// 2. Change connection limit
400+
role.getSpec().getFlags().setConnectionLimit(20);
401+
402+
// when
403+
applyRole(
404+
role,
405+
r -> r.getStatus().getObservedGeneration() == initialGeneration + 1
406+
);
407+
408+
// then
409+
assertThat(
410+
getRoleFlagValue(dsl, roleName, PG_AUTHID.ROLCONNLIMIT)
411+
).isEqualTo(20);
412+
413+
// 3. Reset connection limit to -1
414+
role.getSpec().getFlags().setConnectionLimit(-1);
415+
416+
// when
417+
applyRole(
418+
role,
419+
r -> r.getStatus().getObservedGeneration() == initialGeneration + 2
420+
);
421+
422+
// then
423+
assertThat(
424+
getRoleFlagValue(dsl, roleName, PG_AUTHID.ROLCONNLIMIT)
425+
).isEqualTo(-1);
426+
}
427+
428+
private <T> T getRoleFlagValue(
369429
DSLContext dsl,
370430
String roleName,
371-
Field<Boolean> field
431+
Field<T> field
372432
) {
373433
return dsl.select(field)
374434
.from(PG_AUTHID)

0 commit comments

Comments
 (0)