Skip to content

Commit 3386874

Browse files
committed
feat(postgresql/role): set ADMIN option when creating a role
1 parent c9415a7 commit 3386874

File tree

3 files changed

+10
-8
lines changed

3 files changed

+10
-8
lines changed

internal/controller/postgresrole_controller_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ var _ = Describe("PostgresRole Controller", func() {
198198
"rolbypassrls",
199199
}).
200200
AddRow(
201-
"myrole",
201+
"operator",
202202
true,
203203
true,
204204
true,
@@ -209,7 +209,7 @@ var _ = Describe("PostgresRole Controller", func() {
209209
),
210210
)
211211

212-
pgpoolsMock["default"].ExpectExec(fmt.Sprintf("^%s '.*'$", regexp.QuoteMeta(`CREATE ROLE "myrole" WITH CREATEROLE CREATEDB PASSWORD`))).
212+
pgpoolsMock["default"].ExpectExec(fmt.Sprintf("^%s '.*' ADMIN \"operator\"$", regexp.QuoteMeta(`CREATE ROLE "myrole" WITH CREATEROLE CREATEDB PASSWORD`))).
213213
WillReturnResult(pgxmock.NewResult("CREATE ROLE", 1))
214214
pgpoolsMock["default"].ExpectQuery(fmt.Sprintf("^%s$", regexp.QuoteMeta(postgresql.GetRoleMembershipStatement))).
215215
WithArgs("myrole").
@@ -373,7 +373,7 @@ var _ = Describe("PostgresRole Controller", func() {
373373
"rolbypassrls",
374374
}).
375375
AddRow(
376-
"myrole",
376+
"operator",
377377
true,
378378
true,
379379
true,
@@ -384,7 +384,7 @@ var _ = Describe("PostgresRole Controller", func() {
384384
),
385385
)
386386

387-
pgpoolsMock["default"].ExpectExec(fmt.Sprintf("^%s$", regexp.QuoteMeta(`CREATE ROLE "myrole" WITH CREATEROLE CREATEDB PASSWORD 'mypassword'`))).
387+
pgpoolsMock["default"].ExpectExec(fmt.Sprintf("^%s$", regexp.QuoteMeta(`CREATE ROLE "myrole" WITH CREATEROLE CREATEDB PASSWORD 'mypassword' ADMIN "operator"`))).
388388
WillReturnResult(pgxmock.NewResult("CREATE ROLE", 1))
389389
pgpoolsMock["default"].ExpectQuery(fmt.Sprintf("^%s$", regexp.QuoteMeta(postgresql.GetRoleMembershipStatement))).
390390
WithArgs("myrole").

internal/postgresql/role.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ func CreateRole(pgpool PGPoolInterface, operatorRole, role *Role) (err error) {
5858
return err
5959
}
6060

61+
options += fmt.Sprintf("ADMIN %s", pgx.Identifier{operatorRole.Name}.Sanitize())
62+
6163
_, err = pgpool.Exec(context.Background(), fmt.Sprintf("CREATE ROLE %s %s", sanitizedName, options))
6264
if err != nil {
6365
err = fmt.Errorf("pg exec failed: %s", err)

internal/postgresql/role_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ var _ = Describe("PostgreSQL Role", func() {
206206

207207
Context("Calling CreateRole", func() {
208208
It("should create a role with the defined options and return no error", func() {
209-
pgpoolMock.ExpectExec(fmt.Sprintf("^%s$", regexp.QuoteMeta(`CREATE ROLE "foo" WITH SUPERUSER CREATEROLE BYPASSRLS PASSWORD 'password'`))).
209+
pgpoolMock.ExpectExec(fmt.Sprintf("^%s$", regexp.QuoteMeta(`CREATE ROLE "foo" WITH SUPERUSER CREATEROLE BYPASSRLS PASSWORD 'password' ADMIN "operator"`))).
210210
WillReturnResult(pgxmock.NewResult("foo", 1))
211211

212212
role := Role{
@@ -219,7 +219,7 @@ var _ = Describe("PostgreSQL Role", func() {
219219
}
220220

221221
operatorRole := Role{
222-
Name: "postgres",
222+
Name: "operator",
223223
SuperUser: true,
224224
Inherit: true,
225225
CreateRole: true,
@@ -238,7 +238,7 @@ var _ = Describe("PostgreSQL Role", func() {
238238
})
239239

240240
It("should return an error if the PostgreSQL request failed", func() {
241-
pgpoolMock.ExpectExec(fmt.Sprintf("^%s$", regexp.QuoteMeta(`CREATE ROLE "foo" WITH INHERIT CREATEDB LOGIN REPLICATION`))).
241+
pgpoolMock.ExpectExec(fmt.Sprintf("^%s$", regexp.QuoteMeta(`CREATE ROLE "foo" WITH INHERIT CREATEDB LOGIN REPLICATION ADMIN "operator"`))).
242242
WillReturnError(fmt.Errorf("fake error from PostgreSQL"))
243243

244244
role := Role{
@@ -250,7 +250,7 @@ var _ = Describe("PostgreSQL Role", func() {
250250
}
251251

252252
operatorRole := Role{
253-
Name: "postgres",
253+
Name: "operator",
254254
SuperUser: true,
255255
Inherit: true,
256256
CreateRole: true,

0 commit comments

Comments
 (0)