1
0

introduce currentTask and ContextBasedTest

This commit is contained in:
Michael Hoennig
2022-08-24 11:32:51 +02:00
parent 81cfbc62e4
commit cb641eb8c6
14 changed files with 131 additions and 120 deletions

View File

@ -14,6 +14,16 @@ public class Context {
@PersistenceContext
private EntityManager em;
@Transactional(propagation = MANDATORY)
public void setCurrentTask(final String task) {
em.createNativeQuery(
String.format(
"set local hsadminng.currentTask = '%s';",
task
)
).executeUpdate();
}
@Transactional(propagation = MANDATORY)
public void setCurrentUser(final String userName) {
em.createNativeQuery(

View File

@ -66,6 +66,7 @@ public class RbacGrantController implements RbacgrantsApi {
final String assumedRoles,
final RbacGrantResource body) {
context.setCurrentTask("granting role to user");
context.setCurrentUser(currentUser);
if (assumedRoles != null && !assumedRoles.isBlank()) {
context.assumeRoles(assumedRoles);
@ -89,6 +90,7 @@ public class RbacGrantController implements RbacgrantsApi {
final UUID grantedRoleUuid,
final UUID granteeUserUuid) {
context.setCurrentTask("revoking role from user");
context.setCurrentUser(currentUser);
if (assumedRoles != null && !assumedRoles.isBlank()) {
context.assumeRoles(assumedRoles);

View File

@ -34,6 +34,8 @@ public class RbacUserController implements RbacusersApi {
public ResponseEntity<RbacUserResource> createUser(
@RequestBody final RbacUserResource body
) {
context.setCurrentTask("creating new user: " + body.getName());
if (body.getUuid() == null) {
body.setUuid(UUID.randomUUID());
}
@ -52,7 +54,7 @@ public class RbacUserController implements RbacusersApi {
final String currentUser,
final String assumedRoles,
final String userName) {
return null;
return null; // TODO implement getUserById
}
@Override

View File

@ -21,6 +21,8 @@ grant select on global to restricted;
/**
A single row to be referenced as a global object.
*/
set local hsadminng.currentUser to 'init';
set local hsadminng.currentTask to 'initializing table "global"';
insert
into RbacObject (objecttable) values ('global');
insert
@ -91,6 +93,9 @@ create or replace function hostsharingAdmin()
language sql as $$
select 'global', (select uuid from RbacObject where objectTable = 'global'), 'admin'::RbacRoleType;
$$;
set local hsadminng.currentUser to 'init';
set local hsadminng.currentTask to 'creating Hostsharing admin role';
select createRole(hostsharingAdmin());
-- ============================================================================
@ -103,6 +108,9 @@ do language plpgsql $$
declare
admins uuid ;
begin
set local hsadminng.currentUser to 'init';
set local hsadminng.currentTask to 'creating fake Hostsharing admin users';
admins = findRoleId(hostsharingAdmin());
call grantRoleToUserUnchecked(admins, admins, createRbacUser('mike@hostsharing.net'));
call grantRoleToUserUnchecked(admins, admins, createRbacUser('sven@hostsharing.net'));

View File

@ -206,6 +206,9 @@ do language plpgsql $$
hostsharingObjectUuid uuid;
hsAdminRoleUuid uuid ;
begin
set local hsadminng.currentUser to 'init';
set local hsadminng.currentTask to 'granting global add-customer permission to Hostsharing admin role';
hsAdminRoleUuid := findRoleId(hostsharingAdmin());
hostsharingObjectUuid := (select uuid from global);
addCustomerPermissions := createPermissions(hostsharingObjectUuid, array ['add-customer']);

View File

@ -31,9 +31,9 @@ begin
currentTask = 'creating RBAC test unixuser #' || t || ' for package ' || pac.name || ' #' || pac.uuid;
raise notice 'task: %', currentTask;
pacAdmin = 'admin@' || pac.name || '.example.com';
set local hsadminng.currentUser to 'mike@hostsharing.net'; -- TODO: use a package-admin
execute format('set local hsadminng.currentTask to %L', currentTask);
execute format('set local hsadminng.currentUser to %L', pacAdmin);
set local hsadminng.assumedRoles = '';
set local hsadminng.currentTask to currentTask;
insert
into unixuser (name, packageUuid)