ignore self-representative relation in ImportOfficeData
This commit is contained in:
parent
cbd8c3e4ff
commit
7559b8ced3
@ -659,30 +659,6 @@ begin
|
|||||||
on conflict do nothing; -- allow granting multiple times
|
on conflict do nothing; -- allow granting multiple times
|
||||||
end; $$;
|
end; $$;
|
||||||
|
|
||||||
create or replace procedure grantRoleToRoleIfNotNull(subRole RbacRoleDescriptor, superRole RbacRoleDescriptor, doAssume bool = true)
|
|
||||||
language plpgsql as $$
|
|
||||||
declare
|
|
||||||
superRoleId uuid;
|
|
||||||
subRoleId uuid;
|
|
||||||
begin
|
|
||||||
if ( superRoleId is null ) then return; end if;
|
|
||||||
superRoleId := findRoleId(superRole);
|
|
||||||
if ( subRoleId is null ) then return; end if;
|
|
||||||
subRoleId := findRoleId(subRole);
|
|
||||||
|
|
||||||
perform assertReferenceType('superRoleId (ascendant)', superRoleId, 'RbacRole');
|
|
||||||
perform assertReferenceType('subRoleId (descendant)', subRoleId, 'RbacRole');
|
|
||||||
|
|
||||||
if isGranted(subRoleId, superRoleId) then
|
|
||||||
call raiseDuplicateRoleGrantException(subRoleId, superRoleId);
|
|
||||||
end if;
|
|
||||||
|
|
||||||
insert
|
|
||||||
into RbacGrants (grantedByTriggerOf, ascendantuuid, descendantUuid, assumed)
|
|
||||||
values (currentTriggerObjectUuid(), superRoleId, subRoleId, doAssume)
|
|
||||||
on conflict do nothing; -- allow granting multiple times
|
|
||||||
end; $$;
|
|
||||||
|
|
||||||
create or replace procedure revokeRoleFromRole(subRole RbacRoleDescriptor, superRole RbacRoleDescriptor)
|
create or replace procedure revokeRoleFromRole(subRole RbacRoleDescriptor, superRole RbacRoleDescriptor)
|
||||||
language plpgsql as $$
|
language plpgsql as $$
|
||||||
declare
|
declare
|
||||||
|
@ -421,14 +421,33 @@ public class ImportOfficeData extends ContextBasedTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Order(2009)
|
@Order(3001)
|
||||||
|
void removeSelfRepresentativeRelations() {
|
||||||
|
assumeThatWeAreImportingControlledTestData();
|
||||||
|
|
||||||
|
// this happens if a natural person is marked as 'contractual' for itself
|
||||||
|
final var idsToRemove = new HashSet<Integer>();
|
||||||
|
relations.forEach( (id, r) -> {
|
||||||
|
if (r.getHolder() == r.getAnchor() ) {
|
||||||
|
idsToRemove.add(id);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// remove self-representatives
|
||||||
|
idsToRemove.forEach(id -> {
|
||||||
|
System.out.println("removing self representative relation: " + relations.get(id).toString());
|
||||||
|
relations.remove(id);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Order(3002)
|
||||||
void removeEmptyRelations() {
|
void removeEmptyRelations() {
|
||||||
assumeThatWeAreImportingControlledTestData();
|
assumeThatWeAreImportingControlledTestData();
|
||||||
|
|
||||||
// avoid a error when persisting the deliberately invalid partner entry #99
|
// avoid a error when persisting the deliberately invalid partner entry #99
|
||||||
final var idsToRemove = new HashSet<Integer>();
|
final var idsToRemove = new HashSet<Integer>();
|
||||||
relations.forEach( (id, r) -> {
|
relations.forEach( (id, r) -> {
|
||||||
// such a record
|
|
||||||
if (r.getContact() == null || r.getContact().getLabel() == null ||
|
if (r.getContact() == null || r.getContact().getLabel() == null ||
|
||||||
r.getHolder() == null || r.getHolder().getPersonType() == null ) {
|
r.getHolder() == null || r.getHolder().getPersonType() == null ) {
|
||||||
idsToRemove.add(id);
|
idsToRemove.add(id);
|
||||||
@ -443,7 +462,7 @@ public class ImportOfficeData extends ContextBasedTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Order(2002)
|
@Order(3003)
|
||||||
void removeEmptyPartners() {
|
void removeEmptyPartners() {
|
||||||
assumeThatWeAreImportingControlledTestData();
|
assumeThatWeAreImportingControlledTestData();
|
||||||
|
|
||||||
@ -467,7 +486,7 @@ public class ImportOfficeData extends ContextBasedTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Order(2003)
|
@Order(3004)
|
||||||
void removeEmptyDebitors() {
|
void removeEmptyDebitors() {
|
||||||
assumeThatWeAreImportingControlledTestData();
|
assumeThatWeAreImportingControlledTestData();
|
||||||
|
|
||||||
@ -486,7 +505,7 @@ public class ImportOfficeData extends ContextBasedTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Order(3000)
|
@Order(9000)
|
||||||
@Commit
|
@Commit
|
||||||
void persistEntities() {
|
void persistEntities() {
|
||||||
|
|
||||||
@ -512,6 +531,7 @@ public class ImportOfficeData extends ContextBasedTest {
|
|||||||
relations.forEach(this::persist);
|
relations.forEach(this::persist);
|
||||||
}).assertSuccessful();
|
}).assertSuccessful();
|
||||||
|
|
||||||
|
System.out.println("persisting " + partners.size() + " partners");
|
||||||
jpaAttempt.transacted(() -> {
|
jpaAttempt.transacted(() -> {
|
||||||
context(rbacSuperuser);
|
context(rbacSuperuser);
|
||||||
partners.forEach((id, partner) -> {
|
partners.forEach((id, partner) -> {
|
||||||
@ -529,7 +549,7 @@ public class ImportOfficeData extends ContextBasedTest {
|
|||||||
context(rbacSuperuser);
|
context(rbacSuperuser);
|
||||||
debitors.forEach((id, debitor) -> {
|
debitors.forEach((id, debitor) -> {
|
||||||
debitor.setDebitorRel(em.merge(debitor.getDebitorRel()));
|
debitor.setDebitorRel(em.merge(debitor.getDebitorRel()));
|
||||||
em.persist(debitor);
|
persist(id, debitor);
|
||||||
});
|
});
|
||||||
}).assertSuccessful();
|
}).assertSuccessful();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user