| 13 | |
| 14 | |
| 15 | class CreateRole(Check): |
| 16 | def initialize(self) -> Testdrive: |
| 17 | return Testdrive(TESTDRIVE_NOP) |
| 18 | |
| 19 | def manipulate(self) -> list[Testdrive]: |
| 20 | return [ |
| 21 | Testdrive(dedent(s)) |
| 22 | for s in [ |
| 23 | """ |
| 24 | > CREATE ROLE create_role1; |
| 25 | > GRANT create_role1 TO materialize; |
| 26 | """, |
| 27 | """ |
| 28 | > CREATE ROLE create_role2; |
| 29 | > GRANT create_role2 TO materialize; |
| 30 | """, |
| 31 | ] |
| 32 | ] |
| 33 | |
| 34 | def validate(self) -> Testdrive: |
| 35 | return Testdrive(dedent(""" |
| 36 | > SELECT name FROM mz_roles WHERE name LIKE 'create_role%'; |
| 37 | create_role1 |
| 38 | create_role2 |
| 39 | # TODO(def-) Grantor information is currently not stable during |
| 40 | # upgrades due to https://github.com/MaterializeInc/materialize/pull/18780 |
| 41 | # Reenable on next release |
| 42 | > SELECT role.name, member.name from mz_role_members JOIN mz_roles role ON mz_role_members.role_id = role.id JOIN mz_roles member ON mz_role_members.member = member.id JOIN mz_roles grantor ON mz_role_members.grantor = grantor.id WHERE role.name LIKE 'create_role%'; |
| 43 | create_role1 materialize |
| 44 | create_role2 materialize |
| 45 | """)) |
| 46 | |
| 47 | |
| 48 | class DropRole(CreateRole): |
no outgoing calls
no test coverage detected