From 06784e03f4af483c4cea982dda101d75cb02e158 Mon Sep 17 00:00:00 2001 From: Michael Hoennig Date: Thu, 15 Aug 2024 14:05:16 +0200 Subject: [PATCH] properly split up HsBookingProjectEntity into HsBookingProjectReal+RbacEntity extending HsBookingProject --- .../hs/booking/item/HsBookingItemEntity.java | 17 ++-- ...ojectEntity.java => HsBookingProject.java} | 20 ++--- .../project/HsBookingProjectController.java | 6 +- .../HsBookingProjectEntityPatcher.java | 4 +- .../project/HsBookingProjectRbacEntity.java | 86 ++++++++++++++++++ .../HsBookingProjectRbacRepository.java | 21 +++++ .../project/HsBookingProjectRealEntity.java | 19 ++++ .../HsBookingProjectRealRepository.java | 21 +++++ .../project/HsBookingProjectRepository.java | 21 ----- .../hs/hosting/asset/HsHostingAsset.java | 4 +- ...HsBookingItemControllerAcceptanceTest.java | 10 +-- .../item/HsBookingItemControllerRestTest.java | 14 +-- .../HsBookingItemEntityPatcherUnitTest.java | 4 +- .../item/HsBookingItemEntityUnitTest.java | 4 +- ...sBookingItemRepositoryIntegrationTest.java | 14 +-- .../hs/booking/item/TestHsBookingItem.java | 6 +- .../HsBookingItemEntityValidatorUnitTest.java | 6 +- ...oudServerBookingItemValidatorUnitTest.java | 4 +- ...gedServerBookingItemValidatorUnitTest.java | 7 +- ...dWebspaceBookingItemValidatorUnitTest.java | 4 +- ...vateCloudBookingItemValidatorUnitTest.java | 8 +- ...ookingProjectControllerAcceptanceTest.java | 25 +++--- ...HsBookingProjectEntityPatcherUnitTest.java | 15 ++-- .../HsBookingProjectEntityUnitTest.java | 14 ++- ...ProjectRbacRepositoryIntegrationTest.java} | 87 ++++++++++--------- .../booking/project/TestHsBookingProject.java | 3 +- ...sHostingAssetControllerAcceptanceTest.java | 10 +-- ...ingAssetRbacRepositoryIntegrationTest.java | 4 +- ...WebspaceHostingAssetValidatorUnitTest.java | 6 +- .../hs/migration/ImportHostingAssets.java | 8 +- .../test/ContextBasedTestWithCleanup.java | 15 ++++ .../hsadminng/rbac/test/JpaAttempt.java | 8 +- 32 files changed, 315 insertions(+), 180 deletions(-) rename src/main/java/net/hostsharing/hsadminng/hs/booking/project/{HsBookingProjectEntity.java => HsBookingProject.java} (88%) create mode 100644 src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRbacEntity.java create mode 100644 src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRbacRepository.java create mode 100644 src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRealEntity.java create mode 100644 src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRealRepository.java delete mode 100644 src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRepository.java rename src/test/java/net/hostsharing/hsadminng/hs/booking/project/{HsBookingProjectRepositoryIntegrationTest.java => HsBookingProjectRbacRepositoryIntegrationTest.java} (78%) diff --git a/src/main/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemEntity.java b/src/main/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemEntity.java index 957ba171..e6d10154 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemEntity.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemEntity.java @@ -9,8 +9,9 @@ import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; -import net.hostsharing.hsadminng.hs.booking.project.HsBookingProjectEntity; -import net.hostsharing.hsadminng.hs.hosting.asset.HsHostingAssetRbacEntity; +import net.hostsharing.hsadminng.hs.booking.project.HsBookingProject; +import net.hostsharing.hsadminng.hs.booking.project.HsBookingProjectRealEntity; +import net.hostsharing.hsadminng.hs.hosting.asset.HsHostingAssetRealEntity; import net.hostsharing.hsadminng.hs.validation.PropertiesProvider; import net.hostsharing.hsadminng.mapper.PatchableMapWrapper; import net.hostsharing.hsadminng.rbac.rbacdef.RbacView; @@ -90,7 +91,7 @@ public class HsBookingItemEntity implements Stringifyable, BaseEntity subBookingItems; @OneToOne(mappedBy="bookingItem") - private HsHostingAssetRbacEntity relatedHostingAsset; + private HsHostingAssetRealEntity relatedHostingAsset; @Transient private PatchableMapWrapper resourcesWrapper; @@ -181,18 +182,18 @@ public class HsBookingItemEntity implements Stringifyable, BaseEntity { +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor(access = AccessLevel.PROTECTED) +@SuperBuilder(builderMethodName = "baseBuilder", toBuilder = true) +public class HsBookingProject implements Stringifyable, BaseEntity { - private static Stringify stringify = stringify(HsBookingProjectEntity.class) - .withProp(HsBookingProjectEntity::getDebitor) - .withProp(HsBookingProjectEntity::getCaption) + private static Stringify stringify = stringify(HsBookingProject.class) + .withProp(HsBookingProject::getDebitor) + .withProp(HsBookingProject::getCaption) .quotedValues(false); @Id @@ -67,7 +67,7 @@ public class HsBookingProjectEntity implements Stringifyable, BaseEntity RESOURCE_TO_ENTITY_POSTMAPPER = (resource, entity) -> { + final BiConsumer RESOURCE_TO_ENTITY_POSTMAPPER = (resource, entity) -> { if (resource.getDebitorUuid() != null) { entity.setDebitor(debitorRepo.findByUuid(resource.getDebitorUuid()) .orElseThrow(() -> new EntityNotFoundException("ERROR: [400] debitorUuid %s not found".formatted( diff --git a/src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectEntityPatcher.java b/src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectEntityPatcher.java index 239fb075..e6ddcc6e 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectEntityPatcher.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectEntityPatcher.java @@ -8,9 +8,9 @@ import net.hostsharing.hsadminng.mapper.OptionalFromJson; public class HsBookingProjectEntityPatcher implements EntityPatcher { - private final HsBookingProjectEntity entity; + private final HsBookingProject entity; - public HsBookingProjectEntityPatcher(final HsBookingProjectEntity entity) { + public HsBookingProjectEntityPatcher(final HsBookingProject entity) { this.entity = entity; } diff --git a/src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRbacEntity.java b/src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRbacEntity.java new file mode 100644 index 00000000..50ba366a --- /dev/null +++ b/src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRbacEntity.java @@ -0,0 +1,86 @@ +package net.hostsharing.hsadminng.hs.booking.project; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.experimental.SuperBuilder; +import net.hostsharing.hsadminng.hs.office.debitor.HsOfficeDebitorEntity; +import net.hostsharing.hsadminng.hs.office.relation.HsOfficeRelationRbacEntity; +import net.hostsharing.hsadminng.rbac.rbacdef.RbacView; +import net.hostsharing.hsadminng.rbac.rbacdef.RbacView.SQL; + +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import java.io.IOException; + +import static net.hostsharing.hsadminng.hs.office.relation.HsOfficeRelationType.DEBITOR; +import static net.hostsharing.hsadminng.rbac.rbacdef.RbacView.Column.dependsOnColumn; +import static net.hostsharing.hsadminng.rbac.rbacdef.RbacView.ColumnValue.usingCase; +import static net.hostsharing.hsadminng.rbac.rbacdef.RbacView.ColumnValue.usingDefaultCase; +import static net.hostsharing.hsadminng.rbac.rbacdef.RbacView.Nullable.NOT_NULL; +import static net.hostsharing.hsadminng.rbac.rbacdef.RbacView.Permission.DELETE; +import static net.hostsharing.hsadminng.rbac.rbacdef.RbacView.Permission.INSERT; +import static net.hostsharing.hsadminng.rbac.rbacdef.RbacView.Permission.SELECT; +import static net.hostsharing.hsadminng.rbac.rbacdef.RbacView.Permission.UPDATE; +import static net.hostsharing.hsadminng.rbac.rbacdef.RbacView.Role.ADMIN; +import static net.hostsharing.hsadminng.rbac.rbacdef.RbacView.Role.AGENT; +import static net.hostsharing.hsadminng.rbac.rbacdef.RbacView.Role.OWNER; +import static net.hostsharing.hsadminng.rbac.rbacdef.RbacView.Role.TENANT; +import static net.hostsharing.hsadminng.rbac.rbacdef.RbacView.SQL.directlyFetchedByDependsOnColumn; +import static net.hostsharing.hsadminng.rbac.rbacdef.RbacView.SQL.fetchedBySql; +import static net.hostsharing.hsadminng.rbac.rbacdef.RbacView.rbacViewFor; + +@Entity +@Table(name = "hs_booking_project_rv") +@SuperBuilder(toBuilder = true) +@Getter +@Setter +@NoArgsConstructor +public class HsBookingProjectRbacEntity extends HsBookingProject { + + public static RbacView rbac() { + return rbacViewFor("project", HsBookingProjectRbacEntity.class) + .withIdentityView(SQL.query(""" + SELECT bookingProject.uuid as uuid, debitorIV.idName || '-' || cleanIdentifier(bookingProject.caption) as idName + FROM hs_booking_project bookingProject + JOIN hs_office_debitor_iv debitorIV ON debitorIV.uuid = bookingProject.debitorUuid + """)) + .withRestrictedViewOrderBy(SQL.expression("caption")) + .withUpdatableColumns("version", "caption") + + .importEntityAlias("debitor", HsOfficeDebitorEntity.class, usingDefaultCase(), + dependsOnColumn("debitorUuid"), + directlyFetchedByDependsOnColumn(), + NOT_NULL) + + .importEntityAlias("debitorRel", HsOfficeRelationRbacEntity.class, usingCase(DEBITOR), + dependsOnColumn("debitorUuid"), + fetchedBySql(""" + SELECT ${columns} + FROM hs_office_relation debitorRel + JOIN hs_office_debitor debitor ON debitor.debitorRelUuid = debitorRel.uuid + WHERE debitor.uuid = ${REF}.debitorUuid + """), + NOT_NULL) + .toRole("debitorRel", ADMIN).grantPermission(INSERT) + .toRole("global", ADMIN).grantPermission(DELETE) + + .createRole(OWNER, (with) -> { + with.incomingSuperRole("debitorRel", AGENT).unassumed(); + }) + .createSubRole(ADMIN, (with) -> { + with.permission(UPDATE); + }) + .createSubRole(AGENT) + .createSubRole(TENANT, (with) -> { + with.outgoingSubRole("debitorRel", TENANT); + with.permission(SELECT); + }) + + .limitDiagramTo("project", "debitorRel", "global"); + } + + public static void main(String[] args) throws IOException { + rbac().generateWithBaseFileName("6-hs-booking/620-booking-project/6203-hs-booking-project-rbac"); + } +} diff --git a/src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRbacRepository.java b/src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRbacRepository.java new file mode 100644 index 00000000..cb8a27d3 --- /dev/null +++ b/src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRbacRepository.java @@ -0,0 +1,21 @@ +package net.hostsharing.hsadminng.hs.booking.project; + +import org.springframework.data.repository.Repository; + +import java.util.List; +import java.util.Optional; +import java.util.UUID; + +public interface HsBookingProjectRbacRepository extends Repository { + + Optional findByUuid(final UUID bookingProjectUuid); + List findByCaption(final String projectCaption); + + List findAllByDebitorUuid(final UUID bookingProjectUuid); + + HsBookingProjectRbacEntity save(HsBookingProjectRbacEntity current); + + int deleteByUuid(final UUID uuid); + + long count(); +} diff --git a/src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRealEntity.java b/src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRealEntity.java new file mode 100644 index 00000000..e561c0b6 --- /dev/null +++ b/src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRealEntity.java @@ -0,0 +1,19 @@ +package net.hostsharing.hsadminng.hs.booking.project; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.experimental.SuperBuilder; + +import jakarta.persistence.Entity; +import jakarta.persistence.Table; + + +@Entity +@Table(name = "hs_booking_project") +@SuperBuilder(toBuilder = true) +@Getter +@Setter +@NoArgsConstructor +public class HsBookingProjectRealEntity extends HsBookingProject { +} diff --git a/src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRealRepository.java b/src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRealRepository.java new file mode 100644 index 00000000..ca8df609 --- /dev/null +++ b/src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRealRepository.java @@ -0,0 +1,21 @@ +package net.hostsharing.hsadminng.hs.booking.project; + +import org.springframework.data.repository.Repository; + +import java.util.List; +import java.util.Optional; +import java.util.UUID; + +public interface HsBookingProjectRealRepository extends Repository { + + Optional findByUuid(final UUID bookingProjectUuid); + List findByCaption(final String projectCaption); + + List findAllByDebitorUuid(final UUID bookingProjectUuid); + + HsBookingProjectRealEntity save(HsBookingProjectRealEntity current); + + int deleteByUuid(final UUID uuid); + + long count(); +} diff --git a/src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRepository.java b/src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRepository.java deleted file mode 100644 index f8a171b4..00000000 --- a/src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRepository.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.hostsharing.hsadminng.hs.booking.project; - -import org.springframework.data.repository.Repository; - -import java.util.List; -import java.util.Optional; -import java.util.UUID; - -public interface HsBookingProjectRepository extends Repository { - - Optional findByUuid(final UUID bookingProjectUuid); - List findByCaption(final String projectCaption); - - List findAllByDebitorUuid(final UUID bookingProjectUuid); - - HsBookingProjectEntity save(HsBookingProjectEntity current); - - int deleteByUuid(final UUID uuid); - - long count(); -} diff --git a/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAsset.java b/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAsset.java index efcba66f..4e76adb7 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAsset.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAsset.java @@ -9,7 +9,7 @@ import lombok.Setter; import lombok.Getter; import lombok.experimental.SuperBuilder; import net.hostsharing.hsadminng.hs.booking.item.HsBookingItemEntity; -import net.hostsharing.hsadminng.hs.booking.project.HsBookingProjectEntity; +import net.hostsharing.hsadminng.hs.booking.project.HsBookingProject; import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactRealEntity; import net.hostsharing.hsadminng.hs.validation.PropertiesProvider; import net.hostsharing.hsadminng.mapper.PatchableMapWrapper; @@ -127,7 +127,7 @@ public class HsHostingAsset implements Stringifyable, BaseEntity return getConfig(); } - public HsBookingProjectEntity getRelatedProject() { + public HsBookingProject getRelatedProject() { return Optional.ofNullable(getBookingItem()) .map(HsBookingItemEntity::getRelatedProject) .orElseGet(() -> Optional.ofNullable(getParentAsset()) diff --git a/src/test/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemControllerAcceptanceTest.java b/src/test/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemControllerAcceptanceTest.java index b28e3e4e..00a868ef 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemControllerAcceptanceTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemControllerAcceptanceTest.java @@ -4,7 +4,7 @@ import io.hypersistence.utils.hibernate.type.range.Range; import io.restassured.RestAssured; import io.restassured.http.ContentType; import net.hostsharing.hsadminng.HsadminNgApplication; -import net.hostsharing.hsadminng.hs.booking.project.HsBookingProjectRepository; +import net.hostsharing.hsadminng.hs.booking.project.HsBookingProjectRealRepository; import net.hostsharing.hsadminng.hs.office.debitor.HsOfficeDebitorRepository; import net.hostsharing.hsadminng.rbac.test.ContextBasedTestWithCleanup; import net.hostsharing.hsadminng.rbac.test.JpaAttempt; @@ -47,7 +47,7 @@ class HsBookingItemControllerAcceptanceTest extends ContextBasedTestWithCleanup HsBookingItemRepository bookingItemRepo; @Autowired - HsBookingProjectRepository projectRepo; + HsBookingProjectRealRepository realProjectRepo; @Autowired HsOfficeDebitorRepository debitorRepo; @@ -65,7 +65,7 @@ class HsBookingItemControllerAcceptanceTest extends ContextBasedTestWithCleanup // given context("superuser-alex@hostsharing.net"); final var givenProject = debitorRepo.findDebitorByDebitorNumber(1000111).stream() - .map(d -> projectRepo.findAllByDebitorUuid(d.getUuid())) + .map(d -> realProjectRepo.findAllByDebitorUuid(d.getUuid())) .flatMap(List::stream) .findFirst() .orElseThrow(); @@ -133,7 +133,7 @@ class HsBookingItemControllerAcceptanceTest extends ContextBasedTestWithCleanup context.define("superuser-alex@hostsharing.net"); final var givenProject = debitorRepo.findDebitorByDebitorNumber(1000111).stream() - .map(d -> projectRepo.findAllByDebitorUuid(d.getUuid())) + .map(d -> realProjectRepo.findAllByDebitorUuid(d.getUuid())) .flatMap(List::stream) .findFirst() .orElseThrow(); @@ -386,7 +386,7 @@ class HsBookingItemControllerAcceptanceTest extends ContextBasedTestWithCleanup final HsBookingItemType hsBookingItemType, final Map.Entry... resources) { return jpaAttempt.transacted(() -> { context.define("superuser-alex@hostsharing.net"); - final var givenProject = projectRepo.findByCaption(projectCaption).stream() + final var givenProject = realProjectRepo.findByCaption(projectCaption).stream() .findAny().orElseThrow(); final var newBookingItem = HsBookingItemEntity.builder() .uuid(UUID.randomUUID()) diff --git a/src/test/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemControllerRestTest.java b/src/test/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemControllerRestTest.java index 4a50cb19..d3578bbd 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemControllerRestTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemControllerRestTest.java @@ -1,8 +1,8 @@ package net.hostsharing.hsadminng.hs.booking.item; import net.hostsharing.hsadminng.context.Context; -import net.hostsharing.hsadminng.hs.booking.project.HsBookingProjectEntity; -import net.hostsharing.hsadminng.hs.booking.project.HsBookingProjectRepository; +import net.hostsharing.hsadminng.hs.booking.project.HsBookingProjectRealEntity; +import net.hostsharing.hsadminng.hs.booking.project.HsBookingProjectRealRepository; import net.hostsharing.hsadminng.mapper.Mapper; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; @@ -51,7 +51,7 @@ class HsBookingItemControllerRestTest { EntityManagerFactory emf; @MockBean - HsBookingProjectRepository bookingProjectRepo; + HsBookingProjectRealRepository realProjectRepo; @MockBean HsBookingItemRepository bookingItemRepo; @@ -73,8 +73,8 @@ class HsBookingItemControllerRestTest { final var givenProjectUuid = UUID.randomUUID(); // given - when(em.find(HsBookingProjectEntity.class, givenProjectUuid)).thenAnswer(invocation -> - HsBookingProjectEntity.builder() + when(em.find(HsBookingProjectRealEntity.class, givenProjectUuid)).thenAnswer(invocation -> + HsBookingProjectRealEntity.builder() .uuid(invocation.getArgument(1)) .build() ); @@ -123,8 +123,8 @@ class HsBookingItemControllerRestTest { final var givenProjectUuid = UUID.randomUUID(); // given - when(em.find(HsBookingProjectEntity.class, givenProjectUuid)).thenAnswer(invocation -> - HsBookingProjectEntity.builder() + when(em.find(HsBookingProjectRealEntity.class, givenProjectUuid)).thenAnswer(invocation -> + HsBookingProjectRealEntity.builder() .uuid(invocation.getArgument(1)) .build() ); diff --git a/src/test/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemEntityPatcherUnitTest.java b/src/test/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemEntityPatcherUnitTest.java index ca179fc3..40b45884 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemEntityPatcherUnitTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemEntityPatcherUnitTest.java @@ -17,7 +17,7 @@ import java.util.Map; import java.util.UUID; import java.util.stream.Stream; -import static net.hostsharing.hsadminng.hs.booking.project.TestHsBookingProject.TEST_PROJECT; +import static net.hostsharing.hsadminng.hs.booking.project.TestHsBookingProject.PROJECT_TEST_ENTITY; import static net.hostsharing.hsadminng.mapper.PatchMap.entry; import static net.hostsharing.hsadminng.mapper.PatchMap.patchMap; import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_CLASS; @@ -70,7 +70,7 @@ class HsBookingItemEntityPatcherUnitTest extends PatchUnitTestBase< protected HsBookingItemEntity newInitialEntity() { final var entity = new HsBookingItemEntity(); entity.setUuid(INITIAL_BOOKING_ITEM_UUID); - entity.setProject(TEST_PROJECT); + entity.setProject(PROJECT_TEST_ENTITY); entity.getResources().putAll(KeyValueMap.from(INITIAL_RESOURCES)); entity.setCaption(INITIAL_CAPTION); entity.setValidity(Range.closedInfinite(GIVEN_VALID_FROM)); diff --git a/src/test/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemEntityUnitTest.java b/src/test/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemEntityUnitTest.java index 23e0307f..8085bbca 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemEntityUnitTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemEntityUnitTest.java @@ -10,7 +10,7 @@ import java.time.Month; import java.util.Map; import static java.util.Map.entry; -import static net.hostsharing.hsadminng.hs.booking.project.TestHsBookingProject.TEST_PROJECT; +import static net.hostsharing.hsadminng.hs.booking.project.TestHsBookingProject.PROJECT_TEST_ENTITY; import static net.hostsharing.hsadminng.mapper.PostgresDateRange.toPostgresDateRange; import static org.assertj.core.api.Assertions.assertThat; @@ -21,7 +21,7 @@ class HsBookingItemEntityUnitTest { private MockedStatic localDateMockedStatic = Mockito.mockStatic(LocalDate.class, Mockito.CALLS_REAL_METHODS); final HsBookingItemEntity givenBookingItem = HsBookingItemEntity.builder() - .project(TEST_PROJECT) + .project(PROJECT_TEST_ENTITY) .type(HsBookingItemType.CLOUD_SERVER) .caption("some caption") .resources(Map.ofEntries( diff --git a/src/test/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemRepositoryIntegrationTest.java b/src/test/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemRepositoryIntegrationTest.java index 9c1c04d0..e91cdd95 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemRepositoryIntegrationTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemRepositoryIntegrationTest.java @@ -2,7 +2,7 @@ package net.hostsharing.hsadminng.hs.booking.item; import io.hypersistence.utils.hibernate.type.range.Range; import net.hostsharing.hsadminng.context.Context; -import net.hostsharing.hsadminng.hs.booking.project.HsBookingProjectRepository; +import net.hostsharing.hsadminng.hs.booking.project.HsBookingProjectRealRepository; import net.hostsharing.hsadminng.hs.office.debitor.HsOfficeDebitorRepository; import net.hostsharing.hsadminng.rbac.rbacgrant.RawRbacGrantRepository; import net.hostsharing.hsadminng.rbac.rbacrole.RawRbacRoleRepository; @@ -42,7 +42,7 @@ class HsBookingItemRepositoryIntegrationTest extends ContextBasedTestWithCleanup HsBookingItemRepository bookingItemRepo; @Autowired - HsBookingProjectRepository projectRepo; + HsBookingProjectRealRepository realProjectRepo; @Autowired HsOfficeDebitorRepository debitorRepo; @@ -71,7 +71,7 @@ class HsBookingItemRepositoryIntegrationTest extends ContextBasedTestWithCleanup context("superuser-alex@hostsharing.net"); final var count = bookingItemRepo.count(); final var givenDebitor = debitorRepo.findDebitorByOptionalNameLike("First").get(0); - final var givenProject = projectRepo.findAllByDebitorUuid(givenDebitor.getUuid()).get(0); + final var givenProject = realProjectRepo.findAllByDebitorUuid(givenDebitor.getUuid()).get(0); // when final var result = attempt(em, () -> { @@ -102,7 +102,7 @@ class HsBookingItemRepositoryIntegrationTest extends ContextBasedTestWithCleanup // when attempt(em, () -> { final var givenDebitor = debitorRepo.findDebitorByOptionalNameLike("First").get(0); - final var givenProject = projectRepo.findAllByDebitorUuid(givenDebitor.getUuid()).get(0); + final var givenProject = realProjectRepo.findAllByDebitorUuid(givenDebitor.getUuid()).get(0); final var newBookingItem = HsBookingItemEntity.builder() .project(givenProject) .type(MANAGED_WEBSPACE) @@ -160,7 +160,7 @@ class HsBookingItemRepositoryIntegrationTest extends ContextBasedTestWithCleanup // given context("superuser-alex@hostsharing.net"); final var projectUuid = debitorRepo.findDebitorByDebitorNumber(1000212).stream() - .map(d -> projectRepo.findAllByDebitorUuid(d.getUuid())) + .map(d -> realProjectRepo.findAllByDebitorUuid(d.getUuid())) .flatMap(List::stream) .findAny().orElseThrow().getUuid(); @@ -185,7 +185,7 @@ class HsBookingItemRepositoryIntegrationTest extends ContextBasedTestWithCleanup final var debitor = debitorRepo.findDebitorByDebitorNumber(1000111); context("person-FirbySusan@example.com", "hs_booking_project#D-1000111-D-1000111defaultproject:OWNER"); final var projectUuid = debitor.stream() - .map(d -> projectRepo.findAllByDebitorUuid(d.getUuid())) + .map(d -> realProjectRepo.findAllByDebitorUuid(d.getUuid())) .flatMap(List::stream) .findAny().orElseThrow().getUuid(); @@ -329,7 +329,7 @@ class HsBookingItemRepositoryIntegrationTest extends ContextBasedTestWithCleanup private HsBookingItemEntity givenSomeTemporaryBookingItem(final String projectCaption) { return jpaAttempt.transacted(() -> { context("superuser-alex@hostsharing.net"); - final var givenProject = projectRepo.findByCaption(projectCaption).stream() + final var givenProject = realProjectRepo.findByCaption(projectCaption).stream() .findAny().orElseThrow(); final var newBookingItem = HsBookingItemEntity.builder() .project(givenProject) diff --git a/src/test/java/net/hostsharing/hsadminng/hs/booking/item/TestHsBookingItem.java b/src/test/java/net/hostsharing/hsadminng/hs/booking/item/TestHsBookingItem.java index 1d143ab3..ec4cd2b4 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/booking/item/TestHsBookingItem.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/booking/item/TestHsBookingItem.java @@ -7,13 +7,13 @@ import java.time.LocalDate; import java.util.Map; import static java.util.Map.entry; -import static net.hostsharing.hsadminng.hs.booking.project.TestHsBookingProject.TEST_PROJECT; +import static net.hostsharing.hsadminng.hs.booking.project.TestHsBookingProject.PROJECT_TEST_ENTITY; @UtilityClass public class TestHsBookingItem { public static final HsBookingItemEntity TEST_CLOUD_SERVER_BOOKING_ITEM = HsBookingItemEntity.builder() - .project(TEST_PROJECT) + .project(PROJECT_TEST_ENTITY) .type(HsBookingItemType.CLOUD_SERVER) .caption("test cloud server booking item") .resources(Map.ofEntries( @@ -26,7 +26,7 @@ public class TestHsBookingItem { .build(); public static final HsBookingItemEntity TEST_MANAGED_SERVER_BOOKING_ITEM = HsBookingItemEntity.builder() - .project(TEST_PROJECT) + .project(PROJECT_TEST_ENTITY) .type(HsBookingItemType.MANAGED_SERVER) .caption("test project booking item") .resources(Map.ofEntries( diff --git a/src/test/java/net/hostsharing/hsadminng/hs/booking/item/validators/HsBookingItemEntityValidatorUnitTest.java b/src/test/java/net/hostsharing/hsadminng/hs/booking/item/validators/HsBookingItemEntityValidatorUnitTest.java index c8383dc9..d8423508 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/booking/item/validators/HsBookingItemEntityValidatorUnitTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/booking/item/validators/HsBookingItemEntityValidatorUnitTest.java @@ -2,7 +2,7 @@ package net.hostsharing.hsadminng.hs.booking.item.validators; import net.hostsharing.hsadminng.hs.booking.debitor.HsBookingDebitorEntity; import net.hostsharing.hsadminng.hs.booking.item.HsBookingItemEntity; -import net.hostsharing.hsadminng.hs.booking.project.HsBookingProjectEntity; +import net.hostsharing.hsadminng.hs.booking.project.HsBookingProjectRealEntity; import org.junit.jupiter.api.Test; import jakarta.validation.ValidationException; @@ -18,13 +18,13 @@ class HsBookingItemEntityValidatorUnitTest { final HsBookingDebitorEntity debitor = HsBookingDebitorEntity.builder() .debitorNumber(12345) .build(); - final HsBookingProjectEntity project = HsBookingProjectEntity.builder() + final HsBookingProjectRealEntity project = HsBookingProjectRealEntity.builder() .debitor(debitor) .caption("test project") .build(); @Test - void validThrowsException() { + void rejectsInvalidEntity() { // given final var cloudServerBookingItemEntity = HsBookingItemEntity.builder() .type(CLOUD_SERVER) diff --git a/src/test/java/net/hostsharing/hsadminng/hs/booking/item/validators/HsCloudServerBookingItemValidatorUnitTest.java b/src/test/java/net/hostsharing/hsadminng/hs/booking/item/validators/HsCloudServerBookingItemValidatorUnitTest.java index 5646c2a3..8a411bcc 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/booking/item/validators/HsCloudServerBookingItemValidatorUnitTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/booking/item/validators/HsCloudServerBookingItemValidatorUnitTest.java @@ -2,7 +2,7 @@ package net.hostsharing.hsadminng.hs.booking.item.validators; import net.hostsharing.hsadminng.hs.booking.debitor.HsBookingDebitorEntity; import net.hostsharing.hsadminng.hs.booking.item.HsBookingItemEntity; -import net.hostsharing.hsadminng.hs.booking.project.HsBookingProjectEntity; +import net.hostsharing.hsadminng.hs.booking.project.HsBookingProjectRealEntity; import org.junit.jupiter.api.Test; import java.util.Map; @@ -20,7 +20,7 @@ class HsCloudServerBookingItemValidatorUnitTest { final HsBookingDebitorEntity debitor = HsBookingDebitorEntity.builder() .debitorNumber(12345) .build(); - final HsBookingProjectEntity project = HsBookingProjectEntity.builder() + final HsBookingProjectRealEntity project = HsBookingProjectRealEntity.builder() .debitor(debitor) .caption("Test-Project") .build(); diff --git a/src/test/java/net/hostsharing/hsadminng/hs/booking/item/validators/HsManagedServerBookingItemValidatorUnitTest.java b/src/test/java/net/hostsharing/hsadminng/hs/booking/item/validators/HsManagedServerBookingItemValidatorUnitTest.java index bef65f82..2f8df1a9 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/booking/item/validators/HsManagedServerBookingItemValidatorUnitTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/booking/item/validators/HsManagedServerBookingItemValidatorUnitTest.java @@ -2,8 +2,7 @@ package net.hostsharing.hsadminng.hs.booking.item.validators; import net.hostsharing.hsadminng.hs.booking.debitor.HsBookingDebitorEntity; import net.hostsharing.hsadminng.hs.booking.item.HsBookingItemEntity; -import net.hostsharing.hsadminng.hs.booking.project.HsBookingProjectEntity; -import net.hostsharing.hsadminng.hs.hosting.asset.HsHostingAssetRbacEntity; +import net.hostsharing.hsadminng.hs.booking.project.HsBookingProjectRealEntity; import net.hostsharing.hsadminng.hs.hosting.asset.HsHostingAssetRealEntity; import net.hostsharing.hsadminng.hs.hosting.asset.HsHostingAssetType; import org.junit.jupiter.api.Test; @@ -29,7 +28,7 @@ class HsManagedServerBookingItemValidatorUnitTest { final HsBookingDebitorEntity debitor = HsBookingDebitorEntity.builder() .debitorNumber(12345) .build(); - final HsBookingProjectEntity project = HsBookingProjectEntity.builder() + final HsBookingProjectRealEntity project = HsBookingProjectRealEntity.builder() .debitor(debitor) .caption("Test-Project") .build(); @@ -141,7 +140,7 @@ class HsManagedServerBookingItemValidatorUnitTest { entry("Traffic", 1000), entry("Multi", 1) )) - .relatedHostingAsset(HsHostingAssetRbacEntity.builder() + .relatedHostingAsset(HsHostingAssetRealEntity.builder() .type(HsHostingAssetType.MANAGED_WEBSPACE) .identifier("abc00") .subHostingAssets(concat( diff --git a/src/test/java/net/hostsharing/hsadminng/hs/booking/item/validators/HsManagedWebspaceBookingItemValidatorUnitTest.java b/src/test/java/net/hostsharing/hsadminng/hs/booking/item/validators/HsManagedWebspaceBookingItemValidatorUnitTest.java index 4e7dc561..3df01c5f 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/booking/item/validators/HsManagedWebspaceBookingItemValidatorUnitTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/booking/item/validators/HsManagedWebspaceBookingItemValidatorUnitTest.java @@ -2,7 +2,7 @@ package net.hostsharing.hsadminng.hs.booking.item.validators; import net.hostsharing.hsadminng.hs.booking.debitor.HsBookingDebitorEntity; import net.hostsharing.hsadminng.hs.booking.item.HsBookingItemEntity; -import net.hostsharing.hsadminng.hs.booking.project.HsBookingProjectEntity; +import net.hostsharing.hsadminng.hs.booking.project.HsBookingProjectRealEntity; import org.junit.jupiter.api.Test; import java.util.Map; @@ -16,7 +16,7 @@ class HsManagedWebspaceBookingItemValidatorUnitTest { final HsBookingDebitorEntity debitor = HsBookingDebitorEntity.builder() .debitorNumber(12345) .build(); - final HsBookingProjectEntity project = HsBookingProjectEntity.builder() + final HsBookingProjectRealEntity project = HsBookingProjectRealEntity.builder() .debitor(debitor) .caption("Test-Project") .build(); diff --git a/src/test/java/net/hostsharing/hsadminng/hs/booking/item/validators/HsPrivateCloudBookingItemValidatorUnitTest.java b/src/test/java/net/hostsharing/hsadminng/hs/booking/item/validators/HsPrivateCloudBookingItemValidatorUnitTest.java index 9f939d58..8f828e36 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/booking/item/validators/HsPrivateCloudBookingItemValidatorUnitTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/booking/item/validators/HsPrivateCloudBookingItemValidatorUnitTest.java @@ -2,7 +2,7 @@ package net.hostsharing.hsadminng.hs.booking.item.validators; import net.hostsharing.hsadminng.hs.booking.debitor.HsBookingDebitorEntity; import net.hostsharing.hsadminng.hs.booking.item.HsBookingItemEntity; -import net.hostsharing.hsadminng.hs.booking.project.HsBookingProjectEntity; +import net.hostsharing.hsadminng.hs.booking.project.HsBookingProjectRealEntity; import org.junit.jupiter.api.Test; import static java.util.List.of; @@ -11,7 +11,7 @@ import static java.util.Map.ofEntries; import static net.hostsharing.hsadminng.hs.booking.item.HsBookingItemType.CLOUD_SERVER; import static net.hostsharing.hsadminng.hs.booking.item.HsBookingItemType.MANAGED_SERVER; import static net.hostsharing.hsadminng.hs.booking.item.HsBookingItemType.PRIVATE_CLOUD; -import static net.hostsharing.hsadminng.hs.booking.project.TestHsBookingProject.TEST_PROJECT; +import static net.hostsharing.hsadminng.hs.booking.project.TestHsBookingProject.PROJECT_TEST_ENTITY; import static org.assertj.core.api.Assertions.assertThat; class HsPrivateCloudBookingItemValidatorUnitTest { @@ -19,7 +19,7 @@ class HsPrivateCloudBookingItemValidatorUnitTest { final HsBookingDebitorEntity debitor = HsBookingDebitorEntity.builder() .debitorNumber(12345) .build(); - final HsBookingProjectEntity project = HsBookingProjectEntity.builder() + final HsBookingProjectRealEntity project = HsBookingProjectRealEntity.builder() .debitor(debitor) .caption("Test-Project") .build(); @@ -29,7 +29,7 @@ class HsPrivateCloudBookingItemValidatorUnitTest { // given final var privateCloudBookingItemEntity = HsBookingItemEntity.builder() .type(PRIVATE_CLOUD) - .project(TEST_PROJECT) + .project(PROJECT_TEST_ENTITY) .caption("myPC") .resources(ofEntries( entry("CPU", 4), diff --git a/src/test/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectControllerAcceptanceTest.java b/src/test/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectControllerAcceptanceTest.java index 94194b1f..c4bc8e2e 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectControllerAcceptanceTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectControllerAcceptanceTest.java @@ -32,10 +32,7 @@ class HsBookingProjectControllerAcceptanceTest extends ContextBasedTestWithClean private Integer port; @Autowired - HsBookingProjectRepository bookingProjectRepo; - - @Autowired - HsBookingProjectRepository projectRepo; + HsBookingProjectRealRepository realProjectRepo; @Autowired HsBookingDebitorRepository debitorRepo; @@ -126,7 +123,7 @@ class HsBookingProjectControllerAcceptanceTest extends ContextBasedTestWithClean @Test void globalAdmin_canGetArbitraryBookingProject() { context.define("superuser-alex@hostsharing.net"); - final var givenBookingProjectUuid = bookingProjectRepo.findByCaption("D-1000111 default project").stream() + final var givenBookingProjectUuid = realProjectRepo.findByCaption("D-1000111 default project").stream() .findAny().orElseThrow().getUuid(); RestAssured // @formatter:off @@ -148,8 +145,8 @@ class HsBookingProjectControllerAcceptanceTest extends ContextBasedTestWithClean @Test void normalUser_canNotGetUnrelatedBookingProject() { context.define("superuser-alex@hostsharing.net"); - final var givenBookingProjectUuid = bookingProjectRepo.findByCaption("D-1000212 default project").stream() - .map(HsBookingProjectEntity::getUuid) + final var givenBookingProjectUuid = realProjectRepo.findByCaption("D-1000212 default project").stream() + .map(HsBookingProject::getUuid) .findAny().orElseThrow(); RestAssured // @formatter:off @@ -165,7 +162,7 @@ class HsBookingProjectControllerAcceptanceTest extends ContextBasedTestWithClean @Test void projectAgentUser_canGetRelatedBookingProject() { context.define("superuser-alex@hostsharing.net"); - final var givenBookingProjectUuid = bookingProjectRepo.findByCaption("D-1000313 default project").stream() + final var givenBookingProjectUuid = realProjectRepo.findByCaption("D-1000313 default project").stream() .findAny().orElseThrow().getUuid(); RestAssured // @formatter:off @@ -217,7 +214,7 @@ class HsBookingProjectControllerAcceptanceTest extends ContextBasedTestWithClean // finally, the bookingProject is actually updated context.define("superuser-alex@hostsharing.net"); - assertThat(bookingProjectRepo.findByUuid(givenBookingProject.getUuid())).isPresent().get() + assertThat(realProjectRepo.findByUuid(givenBookingProject.getUuid())).isPresent().get() .matches(mandate -> { assertThat(mandate.getDebitor().toString()).isEqualTo("booking-debitor(D-1000111: fir)"); return true; @@ -243,7 +240,7 @@ class HsBookingProjectControllerAcceptanceTest extends ContextBasedTestWithClean .statusCode(204); // @formatter:on // then the given bookingProject is gone - assertThat(bookingProjectRepo.findByUuid(givenBookingProject.getUuid())).isEmpty(); + assertThat(realProjectRepo.findByUuid(givenBookingProject.getUuid())).isEmpty(); } @Test @@ -261,21 +258,21 @@ class HsBookingProjectControllerAcceptanceTest extends ContextBasedTestWithClean .statusCode(404); // @formatter:on // then the given bookingProject is still there - assertThat(bookingProjectRepo.findByUuid(givenBookingProject.getUuid())).isNotEmpty(); + assertThat(realProjectRepo.findByUuid(givenBookingProject.getUuid())).isNotEmpty(); } } - private HsBookingProjectEntity givenSomeBookingProject(final int debitorNumber, final String caption) { + private HsBookingProjectRealEntity givenSomeBookingProject(final int debitorNumber, final String caption) { return jpaAttempt.transacted(() -> { context.define("superuser-alex@hostsharing.net"); final var givenDebitor = debitorRepo.findByDebitorNumber(debitorNumber).stream().findAny().orElseThrow(); - final var newBookingProject = HsBookingProjectEntity.builder() + final var newBookingProject = HsBookingProjectRealEntity.builder() .uuid(UUID.randomUUID()) .debitor(givenDebitor) .caption(caption) .build(); - return bookingProjectRepo.save(newBookingProject); + return realProjectRepo.save(newBookingProject); }).assertSuccessful().returnedValue(); } } diff --git a/src/test/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectEntityPatcherUnitTest.java b/src/test/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectEntityPatcherUnitTest.java index 37229d26..bfceb370 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectEntityPatcherUnitTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectEntityPatcherUnitTest.java @@ -23,7 +23,7 @@ import static org.mockito.Mockito.lenient; @ExtendWith(MockitoExtension.class) class HsBookingProjectEntityPatcherUnitTest extends PatchUnitTestBase< HsBookingProjectPatchResource, - HsBookingProjectEntity + HsBookingProject > { private static final UUID INITIAL_BOOKING_PROJECT_UUID = UUID.randomUUID(); @@ -38,13 +38,14 @@ class HsBookingProjectEntityPatcherUnitTest extends PatchUnitTestBase< void initMocks() { lenient().when(em.getReference(eq(HsOfficeDebitorEntity.class), any())).thenAnswer(invocation -> HsOfficeDebitorEntity.builder().uuid(invocation.getArgument(1)).build()); - lenient().when(em.getReference(eq(HsBookingProjectEntity.class), any())).thenAnswer(invocation -> - HsBookingProjectEntity.builder().uuid(invocation.getArgument(1)).build()); +// FIXME +// lenient().when(em.getReference(eq(HsBookingProject.class), any())).thenAnswer(invocation -> +// HsBookingProject.builder().uuid(invocation.getArgument(1)).build()); } @Override - protected HsBookingProjectEntity newInitialEntity() { - final var entity = new HsBookingProjectEntity(); + protected HsBookingProject newInitialEntity() { + final var entity = new HsBookingProject(); entity.setUuid(INITIAL_BOOKING_PROJECT_UUID); entity.setDebitor(TEST_BOOKING_DEBITOR); entity.setCaption(INITIAL_CAPTION); @@ -57,7 +58,7 @@ class HsBookingProjectEntityPatcherUnitTest extends PatchUnitTestBase< } @Override - protected HsBookingProjectEntityPatcher createPatcher(final HsBookingProjectEntity bookingProject) { + protected HsBookingProjectEntityPatcher createPatcher(final HsBookingProject bookingProject) { return new HsBookingProjectEntityPatcher(bookingProject); } @@ -68,7 +69,7 @@ class HsBookingProjectEntityPatcherUnitTest extends PatchUnitTestBase< "caption", HsBookingProjectPatchResource::setCaption, PATCHED_CAPTION, - HsBookingProjectEntity::setCaption) + HsBookingProject::setCaption) ); } } diff --git a/src/test/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectEntityUnitTest.java b/src/test/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectEntityUnitTest.java index 1d53070b..c89651f4 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectEntityUnitTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectEntityUnitTest.java @@ -2,26 +2,22 @@ package net.hostsharing.hsadminng.hs.booking.project; import org.junit.jupiter.api.Test; -import static net.hostsharing.hsadminng.hs.booking.debitor.TestHsBookingDebitor.TEST_BOOKING_DEBITOR; +import static net.hostsharing.hsadminng.hs.booking.project.TestHsBookingProject.PROJECT_TEST_ENTITY; import static org.assertj.core.api.Assertions.assertThat; class HsBookingProjectEntityUnitTest { - final HsBookingProjectEntity givenBookingProject = HsBookingProjectEntity.builder() - .debitor(TEST_BOOKING_DEBITOR) - .caption("some caption") - .build(); @Test void toStringContainsAllPropertiesAndResourcesSortedByKey() { - final var result = givenBookingProject.toString(); + final var result = PROJECT_TEST_ENTITY.toString(); - assertThat(result).isEqualTo("HsBookingProjectEntity(D-1234500, some caption)"); + assertThat(result).isEqualTo("HsBookingProject(D-1234500, test project)"); } @Test void toShortStringContainsOnlyMemberNumberAndCaption() { - final var result = givenBookingProject.toShortString(); + final var result = PROJECT_TEST_ENTITY.toShortString(); - assertThat(result).isEqualTo("D-1234500:some caption"); + assertThat(result).isEqualTo("D-1234500:test project"); } } diff --git a/src/test/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRepositoryIntegrationTest.java b/src/test/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRbacRepositoryIntegrationTest.java similarity index 78% rename from src/test/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRepositoryIntegrationTest.java rename to src/test/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRbacRepositoryIntegrationTest.java index 8e3b7168..6222020a 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRepositoryIntegrationTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRbacRepositoryIntegrationTest.java @@ -29,13 +29,13 @@ import static org.assertj.core.api.Assertions.assertThat; @DataJpaTest @Import({ Context.class, JpaAttempt.class }) -class HsBookingProjectRepositoryIntegrationTest extends ContextBasedTestWithCleanup { +class HsBookingProjectRbacRepositoryIntegrationTest extends ContextBasedTestWithCleanup { @Autowired - HsBookingProjectRepository bookingProjectRepo; + HsBookingProjectRealRepository realProjectRepo; @Autowired - HsBookingProjectRepository projectRepo; + HsBookingProjectRbacRepository rbacProjectRepo; @Autowired HsBookingDebitorRepository debitorRepo; @@ -61,24 +61,24 @@ class HsBookingProjectRepositoryIntegrationTest extends ContextBasedTestWithClea @Test public void testHostsharingAdmin_withoutAssumedRole_canCreateNewBookingProject() { // given - context("superuser-alex@hostsharing.net"); - final var count = bookingProjectRepo.count(); + context("superuser-alex@hostsharing.net"); // TODO.test: remove once we have a realDebitorRepo + final var count = realProjectRepo.count(); final var givenDebitor = debitorRepo.findByDebitorNumber(1000111).get(0); // when final var result = attempt(em, () -> { - final var newBookingProject = HsBookingProjectEntity.builder() + final var newBookingProject = HsBookingProjectRbacEntity.builder() .debitor(givenDebitor) .caption("some new booking project") .build(); - return toCleanup(bookingProjectRepo.save(newBookingProject)); + return toCleanup(rbacProjectRepo.save(newBookingProject)); }); // then result.assertSuccessful(); - assertThat(result.returnedValue()).isNotNull().extracting(HsBookingProjectEntity::getUuid).isNotNull(); + assertThat(result.returnedValue()).isNotNull().extracting(HsBookingProject::getUuid).isNotNull(); assertThatBookingProjectIsPersisted(result.returnedValue()); - assertThat(bookingProjectRepo.count()).isEqualTo(count + 1); + assertThat(realProjectRepo.count()).isEqualTo(count + 1); } @Test @@ -93,11 +93,11 @@ class HsBookingProjectRepositoryIntegrationTest extends ContextBasedTestWithClea // when attempt(em, () -> { final var givenDebitor = debitorRepo.findByDebitorNumber(1000111).get(0); - final var newBookingProject = HsBookingProjectEntity.builder() + final var newBookingProject = HsBookingProjectRbacEntity.builder() .debitor(givenDebitor) .caption("some new booking project") .build(); - return toCleanup(bookingProjectRepo.save(newBookingProject)); + return toCleanup(rbacProjectRepo.save(newBookingProject)); }); // then @@ -135,9 +135,9 @@ class HsBookingProjectRepositoryIntegrationTest extends ContextBasedTestWithClea null)); } - private void assertThatBookingProjectIsPersisted(final HsBookingProjectEntity saved) { - final var found = bookingProjectRepo.findByUuid(saved.getUuid()); - assertThat(found).isNotEmpty().map(HsBookingProjectEntity::toString).get().isEqualTo(saved.toString()); + private void assertThatBookingProjectIsPersisted(final HsBookingProject saved) { + final var found = rbacProjectRepo.findByUuid(saved.getUuid()); + assertThat(found).isNotEmpty().map(HsBookingProject::toString).get().isEqualTo(saved.toString()); } } @@ -152,12 +152,12 @@ class HsBookingProjectRepositoryIntegrationTest extends ContextBasedTestWithClea .findAny().orElseThrow().getUuid(); // when - final var result = bookingProjectRepo.findAllByDebitorUuid(debitorUuid); + final var result = rbacProjectRepo.findAllByDebitorUuid(debitorUuid); // then allTheseBookingProjectsAreReturned( result, - "HsBookingProjectEntity(D-1000212, D-1000212 default project)"); + "HsBookingProject(D-1000212, D-1000212 default project)"); } @Test @@ -169,12 +169,12 @@ class HsBookingProjectRepositoryIntegrationTest extends ContextBasedTestWithClea .findAny().orElseThrow().getUuid(); // when: - final var result = bookingProjectRepo.findAllByDebitorUuid(debitorUuid); + final var result = rbacProjectRepo.findAllByDebitorUuid(debitorUuid); // then: exactlyTheseBookingProjectsAreReturned( result, - "HsBookingProjectEntity(D-1000111, D-1000111 default project)"); + "HsBookingProject(D-1000111, D-1000111 default project)"); } } @@ -182,29 +182,30 @@ class HsBookingProjectRepositoryIntegrationTest extends ContextBasedTestWithClea class UpdateBookingProject { @Test - public void hostsharingAdmin_canUpdateArbitraryBookingProject() { + public void bookingProjectAdmin_canUpdateArbitraryBookingProject() { // given final var givenBookingProjectUuid = givenSomeTemporaryBookingProject(1000111).getUuid(); // when final var result = jpaAttempt.transacted(() -> { - context("superuser-alex@hostsharing.net"); - final var foundBookingProject = em.find(HsBookingProjectEntity.class, givenBookingProjectUuid); - return toCleanup(bookingProjectRepo.save(foundBookingProject)); + context("superuser-alex@hostsharing.net", "hs_booking_project#D-1000111-sometempproject:ADMIN"); + final var foundBookingProject = em.find(HsBookingProjectRbacEntity.class, givenBookingProjectUuid); + foundBookingProject.setCaption("updated caption"); + return toCleanup(rbacProjectRepo.save(foundBookingProject)); }); // then result.assertSuccessful(); - jpaAttempt.transacted(() -> { - context("superuser-alex@hostsharing.net"); - assertThatBookingProjectActuallyInDatabase(result.returnedValue()); - }).assertSuccessful(); + assertThat(result.returnedValue().getCaption()).isEqualTo("updated caption"); + assertThatBookingProjectActuallyInDatabase(result.returnedValue()); } - private void assertThatBookingProjectActuallyInDatabase(final HsBookingProjectEntity saved) { - final var found = bookingProjectRepo.findByUuid(saved.getUuid()); - assertThat(found).isNotEmpty().get().isNotSameAs(saved) - .extracting(Object::toString).isEqualTo(saved.toString()); + private void assertThatBookingProjectActuallyInDatabase(final HsBookingProject saved) { + jpaAttempt.transacted(() -> { + final var found = realProjectRepo.findByUuid(saved.getUuid()); + assertThat(found).isNotEmpty().get().isNotSameAs(saved) + .extracting(Object::toString).isEqualTo(saved.toString()); + }).assertSuccessful(); } } @@ -220,14 +221,14 @@ class HsBookingProjectRepositoryIntegrationTest extends ContextBasedTestWithClea // when final var result = jpaAttempt.transacted(() -> { context("superuser-alex@hostsharing.net"); - bookingProjectRepo.deleteByUuid(givenBookingProject.getUuid()); + rbacProjectRepo.deleteByUuid(givenBookingProject.getUuid()); }); // then result.assertSuccessful(); assertThat(jpaAttempt.transacted(() -> { context("superuser-fran@hostsharing.net", null); - return bookingProjectRepo.findByUuid(givenBookingProject.getUuid()); + return rbacProjectRepo.findByUuid(givenBookingProject.getUuid()); }).assertSuccessful().returnedValue()).isEmpty(); } @@ -239,9 +240,9 @@ class HsBookingProjectRepositoryIntegrationTest extends ContextBasedTestWithClea // when final var result = jpaAttempt.transacted(() -> { context("person-FirbySusan@example.com", "hs_booking_project#D-1000111-sometempproject:AGENT"); - assertThat(bookingProjectRepo.findByUuid(givenBookingProject.getUuid())).isPresent(); + assertThat(rbacProjectRepo.findByUuid(givenBookingProject.getUuid())).isPresent(); - bookingProjectRepo.deleteByUuid(givenBookingProject.getUuid()); + rbacProjectRepo.deleteByUuid(givenBookingProject.getUuid()); }); // then @@ -250,7 +251,7 @@ class HsBookingProjectRepositoryIntegrationTest extends ContextBasedTestWithClea "[403] Subject ", " is not allowed to delete hs_booking_project"); assertThat(jpaAttempt.transacted(() -> { context("superuser-alex@hostsharing.net"); - return bookingProjectRepo.findByUuid(givenBookingProject.getUuid()); + return rbacProjectRepo.findByUuid(givenBookingProject.getUuid()); }).assertSuccessful().returnedValue()).isPresent(); // still there } @@ -265,7 +266,7 @@ class HsBookingProjectRepositoryIntegrationTest extends ContextBasedTestWithClea // when final var result = jpaAttempt.transacted(() -> { context("superuser-alex@hostsharing.net"); - return bookingProjectRepo.deleteByUuid(givenBookingProject.getUuid()); + return rbacProjectRepo.deleteByUuid(givenBookingProject.getUuid()); }); // then @@ -295,32 +296,32 @@ class HsBookingProjectRepositoryIntegrationTest extends ContextBasedTestWithClea "[creating booking-project test-data 1000313, hs_booking_project, INSERT]"); } - private HsBookingProjectEntity givenSomeTemporaryBookingProject(final int debitorNumber) { + private HsBookingProjectRealEntity givenSomeTemporaryBookingProject(final int debitorNumber) { return jpaAttempt.transacted(() -> { context("superuser-alex@hostsharing.net"); final var givenDebitor = debitorRepo.findByDebitorNumber(debitorNumber).get(0); - final var newBookingProject = HsBookingProjectEntity.builder() + final var newBookingProject = HsBookingProjectRealEntity.builder() .debitor(givenDebitor) .caption("some temp project") .build(); - return toCleanup(bookingProjectRepo.save(newBookingProject)); + return toCleanup(realProjectRepo.save(newBookingProject)); }).assertSuccessful().returnedValue(); } void exactlyTheseBookingProjectsAreReturned( - final List actualResult, + final List actualResult, final String... bookingProjectNames) { assertThat(actualResult) - .extracting(HsBookingProjectEntity::toString) + .extracting(HsBookingProject::toString) .containsExactlyInAnyOrder(bookingProjectNames); } void allTheseBookingProjectsAreReturned( - final List actualResult, + final List actualResult, final String... bookingProjectNames) { assertThat(actualResult) - .extracting(HsBookingProjectEntity::toString) + .extracting(HsBookingProject::toString) .contains(bookingProjectNames); } } diff --git a/src/test/java/net/hostsharing/hsadminng/hs/booking/project/TestHsBookingProject.java b/src/test/java/net/hostsharing/hsadminng/hs/booking/project/TestHsBookingProject.java index 6190c36b..c75c4f83 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/booking/project/TestHsBookingProject.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/booking/project/TestHsBookingProject.java @@ -7,8 +7,7 @@ import static net.hostsharing.hsadminng.hs.booking.debitor.TestHsBookingDebitor. @UtilityClass public class TestHsBookingProject { - - public static final HsBookingProjectEntity TEST_PROJECT = HsBookingProjectEntity.builder() + public static final HsBookingProjectRealEntity PROJECT_TEST_ENTITY = HsBookingProjectRealEntity.builder() .debitor(TEST_BOOKING_DEBITOR) .caption("test project") .build(); diff --git a/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetControllerAcceptanceTest.java b/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetControllerAcceptanceTest.java index 0b582272..8234b349 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetControllerAcceptanceTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetControllerAcceptanceTest.java @@ -7,7 +7,7 @@ import net.hostsharing.hsadminng.hash.HashGenerator; import net.hostsharing.hsadminng.hs.booking.item.HsBookingItemEntity; import net.hostsharing.hsadminng.hs.booking.item.HsBookingItemRepository; import net.hostsharing.hsadminng.hs.booking.item.HsBookingItemType; -import net.hostsharing.hsadminng.hs.booking.project.HsBookingProjectRepository; +import net.hostsharing.hsadminng.hs.booking.project.HsBookingProjectRealRepository; import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactRealEntity; import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactRealRepository; import net.hostsharing.hsadminng.hs.office.debitor.HsOfficeDebitorRepository; @@ -59,7 +59,7 @@ class HsHostingAssetControllerAcceptanceTest extends ContextBasedTestWithCleanup HsBookingItemRepository bookingItemRepo; @Autowired - HsBookingProjectRepository projectRepo; + HsBookingProjectRealRepository realProjectRepo; @Autowired HsOfficeDebitorRepository debitorRepo; @@ -79,7 +79,7 @@ class HsHostingAssetControllerAcceptanceTest extends ContextBasedTestWithCleanup // given context("superuser-alex@hostsharing.net"); - final var givenProject = projectRepo.findByCaption("D-1000111 default project").stream() + final var givenProject = realProjectRepo.findByCaption("D-1000111 default project").stream() .findAny().orElseThrow(); RestAssured // @formatter:off @@ -685,7 +685,7 @@ class HsHostingAssetControllerAcceptanceTest extends ContextBasedTestWithCleanup final HsBookingItemType type, final String bookingItemCaption, final Map resources) { return jpaAttempt.transacted(() -> { context.define("superuser-alex@hostsharing.net"); - final var project = projectRepo.findByCaption(projectCaption).stream() + final var project = realProjectRepo.findByCaption(projectCaption).stream() .findAny().orElseThrow(); final var bookingItem = HsBookingItemEntity.builder() .project(project) @@ -703,7 +703,7 @@ class HsHostingAssetControllerAcceptanceTest extends ContextBasedTestWithCleanup final String bookingItemCaption) { return jpaAttempt.transacted(() -> { context.define("superuser-alex@hostsharing.net"); - final var project = projectRepo.findByCaption(projectCaption).getFirst(); + final var project = realProjectRepo.findByCaption(projectCaption).getFirst(); final var resources = switch (bookingItemType) { case MANAGED_SERVER -> Map.ofEntries(entry("CPU", 1), entry("RAM", 20), diff --git a/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetRbacRepositoryIntegrationTest.java b/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetRbacRepositoryIntegrationTest.java index fb963d55..fdecf223 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetRbacRepositoryIntegrationTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetRbacRepositoryIntegrationTest.java @@ -4,7 +4,7 @@ import net.hostsharing.hsadminng.context.Context; import net.hostsharing.hsadminng.hs.booking.item.HsBookingItemEntity; import net.hostsharing.hsadminng.hs.booking.item.HsBookingItemRepository; import net.hostsharing.hsadminng.hs.booking.item.HsBookingItemType; -import net.hostsharing.hsadminng.hs.booking.project.HsBookingProjectRepository; +import net.hostsharing.hsadminng.hs.booking.project.HsBookingProjectRbacRepository; import net.hostsharing.hsadminng.rbac.rbacgrant.RawRbacGrantRepository; import net.hostsharing.hsadminng.rbac.rbacrole.RawRbacRoleRepository; import net.hostsharing.hsadminng.mapper.Array; @@ -51,7 +51,7 @@ class HsHostingAssetRbacRepositoryIntegrationTest extends ContextBasedTestWithCl HsBookingItemRepository bookingItemRepo; @Autowired - HsBookingProjectRepository projectRepo; + HsBookingProjectRbacRepository projectRepo; @Autowired RawRbacRoleRepository rawRoleRepo; diff --git a/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsManagedWebspaceHostingAssetValidatorUnitTest.java b/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsManagedWebspaceHostingAssetValidatorUnitTest.java index 3047d7ab..6f195030 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsManagedWebspaceHostingAssetValidatorUnitTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsManagedWebspaceHostingAssetValidatorUnitTest.java @@ -14,12 +14,12 @@ import static java.util.Map.entry; import static net.hostsharing.hsadminng.hs.hosting.asset.HsHostingAssetType.CLOUD_SERVER; import static net.hostsharing.hsadminng.hs.hosting.asset.HsHostingAssetType.MANAGED_WEBSPACE; import static org.assertj.core.api.Assertions.assertThat; -import static net.hostsharing.hsadminng.hs.booking.project.TestHsBookingProject.TEST_PROJECT; +import static net.hostsharing.hsadminng.hs.booking.project.TestHsBookingProject.PROJECT_TEST_ENTITY; class HsManagedWebspaceHostingAssetValidatorUnitTest { final HsBookingItemEntity managedServerBookingItem = HsBookingItemEntity.builder() - .project(TEST_PROJECT) + .project(PROJECT_TEST_ENTITY) .type(HsBookingItemType.MANAGED_SERVER) .caption("Test Managed-Server") .resources(Map.ofEntries( @@ -126,7 +126,7 @@ class HsManagedWebspaceHostingAssetValidatorUnitTest { .type(MANAGED_WEBSPACE) .bookingItem(HsBookingItemEntity.builder() .type(HsBookingItemType.MANAGED_WEBSPACE) - .project(TEST_PROJECT) + .project(PROJECT_TEST_ENTITY) .caption("some ManagedWebspace") .resources(Map.ofEntries(entry("SSD", 25), entry("Traffic", 250))) .build()) diff --git a/src/test/java/net/hostsharing/hsadminng/hs/migration/ImportHostingAssets.java b/src/test/java/net/hostsharing/hsadminng/hs/migration/ImportHostingAssets.java index c3db5298..3aaf912f 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/migration/ImportHostingAssets.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/migration/ImportHostingAssets.java @@ -9,7 +9,7 @@ import net.hostsharing.hsadminng.hs.booking.debitor.HsBookingDebitorEntity; import net.hostsharing.hsadminng.hs.booking.item.HsBookingItemEntity; import net.hostsharing.hsadminng.hs.booking.item.HsBookingItemType; import net.hostsharing.hsadminng.hs.booking.item.validators.HsBookingItemEntityValidatorRegistry; -import net.hostsharing.hsadminng.hs.booking.project.HsBookingProjectEntity; +import net.hostsharing.hsadminng.hs.booking.project.HsBookingProjectRealEntity; import net.hostsharing.hsadminng.hs.hosting.asset.HsHostingAssetRealEntity; import net.hostsharing.hsadminng.hs.hosting.asset.HsHostingAssetType; import net.hostsharing.hsadminng.hs.hosting.asset.validators.HostingAssetEntitySaveProcessor; @@ -131,7 +131,7 @@ public class ImportHostingAssets extends ImportOfficeData { record Hive(int hive_id, String hive_name, int inet_addr_id, AtomicReference serverRef) {} - static Map bookingProjects = new WriteOnceMap<>(); + static Map bookingProjects = new WriteOnceMap<>(); static Map bookingItems = new WriteOnceMap<>(); static Map hives = new WriteOnceMap<>(); @@ -158,7 +158,7 @@ public class ImportHostingAssets extends ImportOfficeData { @Order(11010) void createBookingProjects() { debitors.forEach((id, debitor) -> { - bookingProjects.put(id, HsBookingProjectEntity.builder() + bookingProjects.put(id, HsBookingProjectRealEntity.builder() .caption(debitor.getDefaultPrefix() + " default project") .debitor(em.find(HsBookingDebitorEntity.class, debitor.getUuid())) .build()); @@ -1118,7 +1118,7 @@ public class ImportHostingAssets extends ImportOfficeData { && managedWebspace.getRelatedProject().getDebitor().getDebitorNumber() == 10000_00 ) { assertThat(managedWebspace.getIdentifier()).startsWith("xyz"); final var hshDebitor = managedWebspace.getBookingItem().getProject().getDebitor(); - final var newProject = HsBookingProjectEntity.builder() + final var newProject = HsBookingProjectRealEntity.builder() .debitor(hshDebitor) .caption(parentAsset.getIdentifier() + " Monitor") .build(); diff --git a/src/test/java/net/hostsharing/hsadminng/rbac/test/ContextBasedTestWithCleanup.java b/src/test/java/net/hostsharing/hsadminng/rbac/test/ContextBasedTestWithCleanup.java index 771b7e1f..173ea031 100644 --- a/src/test/java/net/hostsharing/hsadminng/rbac/test/ContextBasedTestWithCleanup.java +++ b/src/test/java/net/hostsharing/hsadminng/rbac/test/ContextBasedTestWithCleanup.java @@ -20,6 +20,7 @@ import jakarta.persistence.*; import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Supplier; +import java.util.regex.Pattern; import static java.lang.System.out; import static java.util.Comparator.comparing; @@ -290,6 +291,20 @@ public abstract class ContextBasedTestWithCleanup extends ContextBasedTest { }).assertSuccessful().returnedValue(); } + /** + * @return an array of all RBAC roles matching the given pattern + */ + protected String[] roleNames(final String sqlLikeExpression) { + final var pattern = Pattern.compile(sqlLikeExpression); + //noinspection unchecked + final List rows = (List) em.createNativeQuery("select * from rbacrole_ev where roleidname like 'hs_booking_project#%'") + .getResultList(); + return rows.stream() + .map(row -> (row[0]).toString()) + .filter(roleName -> pattern.matcher(roleName).matches()) + .toArray(String[]::new); + } + /** * Generates a diagram of the RBAC-Grants to the current subjects (user or assumed roles). */ diff --git a/src/test/java/net/hostsharing/hsadminng/rbac/test/JpaAttempt.java b/src/test/java/net/hostsharing/hsadminng/rbac/test/JpaAttempt.java index 50a928da..dcf31c5d 100644 --- a/src/test/java/net/hostsharing/hsadminng/rbac/test/JpaAttempt.java +++ b/src/test/java/net/hostsharing/hsadminng/rbac/test/JpaAttempt.java @@ -77,11 +77,11 @@ public class JpaAttempt { public static class JpaResult { - private final T result; + private final T value; private final RuntimeException exception; - private JpaResult(final T result, final RuntimeException exception) { - this.result = result; + private JpaResult(final T value, final RuntimeException exception) { + this.value = value; this.exception = exception; } @@ -102,7 +102,7 @@ public class JpaAttempt { } public T returnedValue() { - return result; + return value; } public ObjectAssert assertThatResult() {