From ab3365941be172823fe1a5148657edd682ffbdf3 Mon Sep 17 00:00:00 2001 From: Michael Hoennig Date: Fri, 2 Aug 2024 14:02:42 +0200 Subject: [PATCH] introduce HsOfficeContactRbacEntity (WIP) Import working, but not normal tests --- .../hs/hosting/asset/HsHostingAsset.java | 4 +- .../hosting/asset/HsHostingAssetEntity.java | 6 +- .../asset/HsHostingAssetEntityPatcher.java | 4 +- .../HostingAssetEntityValidator.java | 4 +- .../contact/HsOfficeContactController.java | 4 +- .../office/contact/HsOfficeContactEntity.java | 39 ++++++++++--- .../contact/HsOfficeContactEntityPatcher.java | 4 +- .../contact/HsOfficeContactRbacEntity.java | 56 +++++++++++++++++++ .../contact/HsOfficeContactRepository.java | 10 ++-- .../partner/HsOfficePartnerController.java | 1 + .../office/partner/HsOfficePartnerEntity.java | 1 + ...y.java => HsOfficeRelationBareEntity.java} | 5 +- .../relation/HsOfficeRelationEntity.java | 4 +- .../HsOfficeRelationEntityPatcher.java | 4 +- .../relation/HsOfficeRelationRbacEntity.java | 4 +- ...sHostingAssetControllerAcceptanceTest.java | 4 +- .../HsHostingAssetEntityPatcherUnitTest.java | 12 ++-- ...ity.java => HsHostingAssetBareEntity.java} | 14 ++--- .../hs/migration/ImportHostingAssets.java | 28 +++++----- .../hs/migration/ImportOfficeData.java | 14 ++--- ...OfficeContactControllerAcceptanceTest.java | 6 +- .../HsOfficeContactEntityPatcherUnitTest.java | 16 +++--- .../HsOfficeContactEntityUnitTest.java | 4 +- ...fficeContactRepositoryIntegrationTest.java | 20 +++---- .../office/contact/TestHsOfficeContact.java | 6 +- .../HsOfficeDebitorEntityUnitTest.java | 4 +- ...OfficePartnerControllerAcceptanceTest.java | 4 +- .../HsOfficePartnerControllerRestTest.java | 6 +- ...cePartnerDetailsEntityPatcherUnitTest.java | 6 +- .../HsOfficePartnerEntityPatcherUnitTest.java | 4 +- .../HsOfficePartnerEntityUnitTest.java | 4 +- .../office/partner/TestHsOfficePartner.java | 4 +- ...HsOfficeRelationEntityPatcherUnitTest.java | 12 ++-- 33 files changed, 201 insertions(+), 117 deletions(-) create mode 100644 src/main/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactRbacEntity.java rename src/main/java/net/hostsharing/hsadminng/hs/office/relation/{HsOfficeRelationRawEntity.java => HsOfficeRelationBareEntity.java} (75%) rename src/test/java/net/hostsharing/hsadminng/hs/migration/{HsHostingAssetRawEntity.java => HsHostingAssetBareEntity.java} (89%) 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 637e19cb..20a14ca9 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 @@ -2,7 +2,7 @@ package net.hostsharing.hsadminng.hs.hosting.asset; import net.hostsharing.hsadminng.hs.booking.item.HsBookingItemEntity; import net.hostsharing.hsadminng.hs.booking.project.HsBookingProjectEntity; -import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactEntity; +import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactRbacEntity; import net.hostsharing.hsadminng.hs.validation.PropertiesProvider; import net.hostsharing.hsadminng.rbac.rbacobject.RbacObject; import net.hostsharing.hsadminng.stringify.Stringify; @@ -36,7 +36,7 @@ public interface HsHostingAsset extends Stringifyable, RbacObject getSubHostingAssets(); String getCaption(); Map getConfig(); diff --git a/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetEntity.java b/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetEntity.java index ceb27238..ce4ef38c 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetEntity.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetEntity.java @@ -8,7 +8,7 @@ import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import net.hostsharing.hsadminng.hs.booking.item.HsBookingItemEntity; -import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactEntity; +import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactRbacEntity; import net.hostsharing.hsadminng.mapper.PatchableMapWrapper; import net.hostsharing.hsadminng.rbac.rbacdef.RbacView; import net.hostsharing.hsadminng.rbac.rbacdef.RbacView.SQL; @@ -90,7 +90,7 @@ public class HsHostingAssetEntity implements HsHostingAsset { @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "alarmcontactuuid") - private HsOfficeContactEntity alarmContact; + private HsOfficeContactRbacEntity alarmContact; @OneToMany(cascade = CascadeType.REFRESH, orphanRemoval = true, fetch = FetchType.LAZY) @JoinColumn(name = "parentassetuuid", referencedColumnName = "uuid") @@ -160,7 +160,7 @@ public class HsHostingAssetEntity implements HsHostingAsset { directlyFetchedByDependsOnColumn(), NULLABLE) - .importEntityAlias("alarmContact", HsOfficeContactEntity.class, usingDefaultCase(), + .importEntityAlias("alarmContact", HsOfficeContactRbacEntity.class, usingDefaultCase(), dependsOnColumn("alarmContactUuid"), directlyFetchedByDependsOnColumn(), NULLABLE) diff --git a/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetEntityPatcher.java b/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetEntityPatcher.java index f1cff713..b0b924bb 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetEntityPatcher.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetEntityPatcher.java @@ -1,7 +1,7 @@ package net.hostsharing.hsadminng.hs.hosting.asset; import net.hostsharing.hsadminng.hs.hosting.generated.api.v1.model.HsHostingAssetPatchResource; -import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactEntity; +import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactRbacEntity; import net.hostsharing.hsadminng.mapper.EntityPatcher; import net.hostsharing.hsadminng.mapper.KeyValueMap; import net.hostsharing.hsadminng.mapper.OptionalFromJson; @@ -29,7 +29,7 @@ public class HsHostingAssetEntityPatcher implements EntityPatcher entity.setAlarmContact( Optional.ofNullable(newValue) - .map(uuid -> em.getReference(HsOfficeContactEntity.class, newValue)) + .map(uuid -> em.getReference(HsOfficeContactRbacEntity.class, newValue)) .orElse(null))); } } diff --git a/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HostingAssetEntityValidator.java b/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HostingAssetEntityValidator.java index b6747ff8..1cf4074e 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HostingAssetEntityValidator.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HostingAssetEntityValidator.java @@ -5,7 +5,7 @@ import net.hostsharing.hsadminng.hs.booking.item.HsBookingItemType; import net.hostsharing.hsadminng.hs.booking.item.validators.HsBookingItemEntityValidatorRegistry; import net.hostsharing.hsadminng.hs.hosting.asset.HsHostingAsset; import net.hostsharing.hsadminng.hs.hosting.asset.HsHostingAssetType; -import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactEntity; +import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactRbacEntity; import net.hostsharing.hsadminng.hs.validation.HsEntityValidator; import net.hostsharing.hsadminng.hs.validation.ValidatableProperty; @@ -213,7 +213,7 @@ public abstract class HostingAssetEntityValidator extends HsEntityValidator> { + static class AlarmContact extends ReferenceValidator> { AlarmContact(final HsHostingAssetType.RelationPolicy policy) { super(policy, HsHostingAsset::getAlarmContact); diff --git a/src/main/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactController.java b/src/main/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactController.java index 83f182a3..6139f399 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactController.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactController.java @@ -54,7 +54,7 @@ public class HsOfficeContactController implements HsOfficeContactsApi { context.define(currentUser, assumedRoles); - final var entityToSave = mapper.map(body, HsOfficeContactEntity.class, RESOURCE_TO_ENTITY_POSTMAPPER); + final var entityToSave = mapper.map(body, HsOfficeContactRbacEntity.class, RESOURCE_TO_ENTITY_POSTMAPPER); final var saved = contactRepo.save(entityToSave); @@ -119,7 +119,7 @@ public class HsOfficeContactController implements HsOfficeContactsApi { } @SuppressWarnings("unchecked") - final BiConsumer RESOURCE_TO_ENTITY_POSTMAPPER = (resource, entity) -> { + final BiConsumer RESOURCE_TO_ENTITY_POSTMAPPER = (resource, entity) -> { entity.putEmailAddresses(from(resource.getEmailAddresses())); entity.putPhoneNumbers(from(resource.getPhoneNumbers())); }; diff --git a/src/main/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactEntity.java b/src/main/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactEntity.java index 3bcaf140..0ce2eeb9 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactEntity.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactEntity.java @@ -1,36 +1,58 @@ package net.hostsharing.hsadminng.hs.office.contact; import io.hypersistence.utils.hibernate.type.json.JsonType; -import lombok.*; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; import lombok.experimental.FieldNameConstants; +import lombok.experimental.SuperBuilder; import net.hostsharing.hsadminng.errors.DisplayName; +import net.hostsharing.hsadminng.hs.office.relation.HsOfficeRelationEntity; import net.hostsharing.hsadminng.mapper.PatchableMapWrapper; -import net.hostsharing.hsadminng.rbac.rbacobject.RbacObject; import net.hostsharing.hsadminng.rbac.rbacdef.RbacView; import net.hostsharing.hsadminng.rbac.rbacdef.RbacView.SQL; +import net.hostsharing.hsadminng.rbac.rbacobject.RbacObject; import net.hostsharing.hsadminng.stringify.Stringify; import net.hostsharing.hsadminng.stringify.Stringifyable; import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Type; -import jakarta.persistence.*; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; +import jakarta.persistence.Inheritance; +import jakarta.persistence.Table; +import jakarta.persistence.Transient; +import jakarta.persistence.Version; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.UUID; +import static jakarta.persistence.InheritanceType.TABLE_PER_CLASS; import static net.hostsharing.hsadminng.rbac.rbacdef.RbacView.GLOBAL; -import static net.hostsharing.hsadminng.rbac.rbacdef.RbacView.Permission.*; +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.RbacUserReference.UserRole.CREATOR; -import static net.hostsharing.hsadminng.rbac.rbacdef.RbacView.Role.*; +import static net.hostsharing.hsadminng.rbac.rbacdef.RbacView.Role.ADMIN; +import static net.hostsharing.hsadminng.rbac.rbacdef.RbacView.Role.GUEST; +import static net.hostsharing.hsadminng.rbac.rbacdef.RbacView.Role.OWNER; +import static net.hostsharing.hsadminng.rbac.rbacdef.RbacView.Role.REFERRER; import static net.hostsharing.hsadminng.rbac.rbacdef.RbacView.rbacViewFor; import static net.hostsharing.hsadminng.stringify.Stringify.stringify; @Entity -@Table(name = "hs_office_contact_rv") +@Table(name = "hs_office_contact") +@Inheritance(strategy = TABLE_PER_CLASS) @Getter @Setter -@Builder +@SuperBuilder @NoArgsConstructor @AllArgsConstructor @FieldNameConstants @@ -99,6 +121,9 @@ public class HsOfficeContactEntity implements Stringifyable, RbacObject toBuilder() { + return null; + } public static RbacView rbac() { return rbacViewFor("contact", HsOfficeContactEntity.class) .withIdentityView(SQL.projection("caption")) diff --git a/src/main/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactEntityPatcher.java b/src/main/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactEntityPatcher.java index ddc4f982..e08e6bae 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactEntityPatcher.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactEntityPatcher.java @@ -9,9 +9,9 @@ import java.util.Optional; class HsOfficeContactEntityPatcher implements EntityPatcher { - private final HsOfficeContactEntity entity; + private final HsOfficeContactRbacEntity entity; - HsOfficeContactEntityPatcher(final HsOfficeContactEntity entity) { + HsOfficeContactEntityPatcher(final HsOfficeContactRbacEntity entity) { this.entity = entity; } diff --git a/src/main/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactRbacEntity.java b/src/main/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactRbacEntity.java new file mode 100644 index 00000000..54f069c9 --- /dev/null +++ b/src/main/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactRbacEntity.java @@ -0,0 +1,56 @@ +package net.hostsharing.hsadminng.hs.office.contact; + +import lombok.*; +import lombok.experimental.FieldNameConstants; +import lombok.experimental.SuperBuilder; +import net.hostsharing.hsadminng.errors.DisplayName; +import net.hostsharing.hsadminng.hs.office.relation.HsOfficeRelationEntity; +import net.hostsharing.hsadminng.rbac.rbacdef.RbacView; +import net.hostsharing.hsadminng.rbac.rbacdef.RbacView.SQL; + +import jakarta.persistence.*; +import java.io.IOException; + +import static net.hostsharing.hsadminng.rbac.rbacdef.RbacView.GLOBAL; +import static net.hostsharing.hsadminng.rbac.rbacdef.RbacView.Permission.*; +import static net.hostsharing.hsadminng.rbac.rbacdef.RbacView.RbacUserReference.UserRole.CREATOR; +import static net.hostsharing.hsadminng.rbac.rbacdef.RbacView.Role.*; +import static net.hostsharing.hsadminng.rbac.rbacdef.RbacView.rbacViewFor; + +@Entity +@Table(name = "hs_office_contact_rv") +@Getter +@Setter +@SuperBuilder +@NoArgsConstructor +@FieldNameConstants +@DisplayName("Contact") +public class HsOfficeContactRbacEntity extends HsOfficeContactEntity { + + @Override + public HsOfficeRelationEntity.HsOfficeRelationEntityBuilder toBuilder() { + return null; + } + + public static RbacView rbac() { + return rbacViewFor("contact", HsOfficeContactRbacEntity.class) + .withIdentityView(SQL.projection("caption")) + .withUpdatableColumns("caption", "postalAddress", "emailAddresses", "phoneNumbers") + .createRole(OWNER, (with) -> { + with.owningUser(CREATOR); + with.incomingSuperRole(GLOBAL, ADMIN); + with.permission(DELETE); + }) + .createSubRole(ADMIN, (with) -> { + with.permission(UPDATE); + }) + .createSubRole(REFERRER, (with) -> { + with.permission(SELECT); + }) + .toRole(GLOBAL, GUEST).grantPermission(INSERT); + } + + public static void main(String[] args) throws IOException { + rbac().generateWithBaseFileName("5-hs-office/501-contact/5013-hs-office-contact-rbac"); + } +} diff --git a/src/main/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactRepository.java b/src/main/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactRepository.java index 22a285ab..bb3519c3 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactRepository.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactRepository.java @@ -7,18 +7,18 @@ import java.util.List; import java.util.Optional; import java.util.UUID; -public interface HsOfficeContactRepository extends Repository { +public interface HsOfficeContactRepository extends Repository { - Optional findByUuid(UUID id); + Optional findByUuid(UUID id); @Query(""" - SELECT c FROM HsOfficeContactEntity c + SELECT c FROM HsOfficeContactRbacEntity c WHERE :caption is null OR c.caption like concat(cast(:caption as text), '%') """) - List findContactByOptionalCaptionLike(String caption); + List findContactByOptionalCaptionLike(String caption); - HsOfficeContactEntity save(final HsOfficeContactEntity entity); + HsOfficeContactRbacEntity save(final HsOfficeContactRbacEntity entity); int deleteByUuid(final UUID uuid); diff --git a/src/main/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerController.java b/src/main/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerController.java index 656a959c..7d41b078 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerController.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerController.java @@ -3,6 +3,7 @@ package net.hostsharing.hsadminng.hs.office.partner; import net.hostsharing.hsadminng.context.Context; import net.hostsharing.hsadminng.errors.ReferenceNotFoundException; import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactEntity; +import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactRbacEntity; import net.hostsharing.hsadminng.hs.office.generated.api.v1.api.HsOfficePartnersApi; import net.hostsharing.hsadminng.hs.office.generated.api.v1.model.HsOfficePartnerInsertResource; import net.hostsharing.hsadminng.hs.office.generated.api.v1.model.HsOfficePartnerPatchResource; diff --git a/src/main/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerEntity.java b/src/main/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerEntity.java index 2ec637be..5802552f 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerEntity.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerEntity.java @@ -7,6 +7,7 @@ import lombok.NoArgsConstructor; import lombok.Setter; import net.hostsharing.hsadminng.errors.DisplayName; import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactEntity; +import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactRbacEntity; import net.hostsharing.hsadminng.hs.office.person.HsOfficePersonEntity; import net.hostsharing.hsadminng.rbac.rbacobject.RbacObject; import net.hostsharing.hsadminng.hs.office.relation.HsOfficeRelationEntity; diff --git a/src/main/java/net/hostsharing/hsadminng/hs/office/relation/HsOfficeRelationRawEntity.java b/src/main/java/net/hostsharing/hsadminng/hs/office/relation/HsOfficeRelationBareEntity.java similarity index 75% rename from src/main/java/net/hostsharing/hsadminng/hs/office/relation/HsOfficeRelationRawEntity.java rename to src/main/java/net/hostsharing/hsadminng/hs/office/relation/HsOfficeRelationBareEntity.java index 26ca463b..d5e056df 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/office/relation/HsOfficeRelationRawEntity.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/office/relation/HsOfficeRelationBareEntity.java @@ -11,15 +11,14 @@ import jakarta.persistence.Table; @Entity @Table(name = "hs_office_relation") -//@DiscriminatorValue("0") @SuperBuilder @NoArgsConstructor @Getter @Setter -public class HsOfficeRelationRawEntity extends HsOfficeRelationEntity { +public class HsOfficeRelationBareEntity extends HsOfficeRelationEntity { @Override public HsOfficeRelationEntityBuilder toBuilder() { - return null; + return null; // FIXME: also the ugly generics, if possible } } diff --git a/src/main/java/net/hostsharing/hsadminng/hs/office/relation/HsOfficeRelationEntity.java b/src/main/java/net/hostsharing/hsadminng/hs/office/relation/HsOfficeRelationEntity.java index fe8144c6..783c9634 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/office/relation/HsOfficeRelationEntity.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/office/relation/HsOfficeRelationEntity.java @@ -4,6 +4,8 @@ import lombok.*; import lombok.experimental.FieldNameConstants; import lombok.experimental.SuperBuilder; import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactEntity; +import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactEntity; +import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactRbacEntity; import net.hostsharing.hsadminng.hs.office.person.HsOfficePersonEntity; import net.hostsharing.hsadminng.rbac.rbacobject.RbacObject; import net.hostsharing.hsadminng.rbac.rbacdef.RbacView; @@ -116,7 +118,7 @@ public abstract class HsOfficeRelationEntity implements RbacObject { verifyNotNull(newValue, "contact"); - entity.setContact(em.getReference(HsOfficeContactEntity.class, newValue)); + entity.setContact(em.getReference(HsOfficeContactRbacEntity.class, newValue)); }); } diff --git a/src/main/java/net/hostsharing/hsadminng/hs/office/relation/HsOfficeRelationRbacEntity.java b/src/main/java/net/hostsharing/hsadminng/hs/office/relation/HsOfficeRelationRbacEntity.java index 1df7b92c..a7ab3b13 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/office/relation/HsOfficeRelationRbacEntity.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/office/relation/HsOfficeRelationRbacEntity.java @@ -4,7 +4,7 @@ import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import lombok.experimental.SuperBuilder; -import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactEntity; +import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactRbacEntity; import net.hostsharing.hsadminng.hs.office.person.HsOfficePersonEntity; import net.hostsharing.hsadminng.rbac.rbacdef.RbacView; import net.hostsharing.hsadminng.rbac.rbacdef.RbacView.SQL; @@ -63,7 +63,7 @@ public class HsOfficeRelationRbacEntity extends HsOfficeRelationEntity { dependsOnColumn("holderUuid"), directlyFetchedByDependsOnColumn(), NOT_NULL) - .importEntityAlias("contact", HsOfficeContactEntity.class, usingDefaultCase(), + .importEntityAlias("contact", HsOfficeContactRbacEntity.class, usingDefaultCase(), dependsOnColumn("contactUuid"), directlyFetchedByDependsOnColumn(), NOT_NULL) 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 54edc9ef..94d27f6d 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 @@ -8,7 +8,7 @@ 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.office.contact.HsOfficeContactEntity; +import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactRbacEntity; import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactRepository; import net.hostsharing.hsadminng.hs.office.debitor.HsOfficeDebitorRepository; import net.hostsharing.hsadminng.rbac.test.ContextBasedTestWithCleanup; @@ -732,7 +732,7 @@ class HsHostingAssetControllerAcceptanceTest extends ContextBasedTestWithCleanup }).assertSuccessful().returnedValue(); } - private HsOfficeContactEntity givenContact() { + private HsOfficeContactRbacEntity givenContact() { return jpaAttempt.transacted(() -> { context.define("superuser-alex@hostsharing.net"); return contactRepo.findContactByOptionalCaptionLike("second").stream().findFirst().orElseThrow(); diff --git a/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetEntityPatcherUnitTest.java b/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetEntityPatcherUnitTest.java index 96728cca..b75e401d 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetEntityPatcherUnitTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetEntityPatcherUnitTest.java @@ -1,7 +1,7 @@ package net.hostsharing.hsadminng.hs.hosting.asset; import net.hostsharing.hsadminng.hs.hosting.generated.api.v1.model.HsHostingAssetPatchResource; -import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactEntity; +import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactRbacEntity; import net.hostsharing.hsadminng.mapper.KeyValueMap; import net.hostsharing.hsadminng.rbac.test.PatchUnitTestBase; import org.junit.jupiter.api.BeforeEach; @@ -48,7 +48,7 @@ class HsHostingAssetEntityPatcherUnitTest extends PatchUnitTestBase< entry("SSD", 256), entry("MEM", 64) ); - final HsOfficeContactEntity givenInitialContact = HsOfficeContactEntity.builder() + final HsOfficeContactRbacEntity givenInitialContact = HsOfficeContactRbacEntity.builder() .uuid(UUID.randomUUID()) .build(); @@ -62,8 +62,8 @@ class HsHostingAssetEntityPatcherUnitTest extends PatchUnitTestBase< void initMocks() { lenient().when(em.getReference(eq(HsHostingAssetEntity.class), any())).thenAnswer(invocation -> HsHostingAssetEntity.builder().uuid(invocation.getArgument(1)).build()); - lenient().when(em.getReference(eq(HsOfficeContactEntity.class), any())).thenAnswer(invocation -> - HsOfficeContactEntity.builder().uuid(invocation.getArgument(1)).build()); + lenient().when(em.getReference(eq(HsOfficeContactRbacEntity.class), any())).thenAnswer(invocation -> + HsOfficeContactRbacEntity.builder().uuid(invocation.getArgument(1)).build()); } @Override @@ -111,7 +111,7 @@ class HsHostingAssetEntityPatcherUnitTest extends PatchUnitTestBase< ); } - static HsOfficeContactEntity newContact(final UUID uuid) { - return HsOfficeContactEntity.builder().uuid(uuid).build(); + static HsOfficeContactRbacEntity newContact(final UUID uuid) { + return HsOfficeContactRbacEntity.builder().uuid(uuid).build(); } } diff --git a/src/test/java/net/hostsharing/hsadminng/hs/migration/HsHostingAssetRawEntity.java b/src/test/java/net/hostsharing/hsadminng/hs/migration/HsHostingAssetBareEntity.java similarity index 89% rename from src/test/java/net/hostsharing/hsadminng/hs/migration/HsHostingAssetRawEntity.java rename to src/test/java/net/hostsharing/hsadminng/hs/migration/HsHostingAssetBareEntity.java index 33e632d5..235d3c6d 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/migration/HsHostingAssetRawEntity.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/migration/HsHostingAssetBareEntity.java @@ -10,7 +10,7 @@ import lombok.Setter; import net.hostsharing.hsadminng.hs.booking.item.HsBookingItemEntity; import net.hostsharing.hsadminng.hs.hosting.asset.HsHostingAsset; import net.hostsharing.hsadminng.hs.hosting.asset.HsHostingAssetType; -import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactEntity; +import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactRbacEntity; import net.hostsharing.hsadminng.mapper.PatchableMapWrapper; import org.hibernate.annotations.Type; @@ -42,7 +42,7 @@ import java.util.UUID; @Setter @NoArgsConstructor @AllArgsConstructor -public class HsHostingAssetRawEntity implements HsHostingAsset { +public class HsHostingAssetBareEntity implements HsHostingAsset { @Id @GeneratedValue @@ -57,11 +57,11 @@ public class HsHostingAssetRawEntity implements HsHostingAsset { @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "parentassetuuid") - private HsHostingAssetRawEntity parentAsset; + private HsHostingAssetBareEntity parentAsset; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "assignedtoassetuuid") - private HsHostingAssetRawEntity assignedToAsset; + private HsHostingAssetBareEntity assignedToAsset; @Column(name = "type") @Enumerated(EnumType.STRING) @@ -69,11 +69,11 @@ public class HsHostingAssetRawEntity implements HsHostingAsset { @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "alarmcontactuuid") - private HsOfficeContactEntity alarmContact; + private HsOfficeContactRbacEntity alarmContact; @OneToMany(cascade = CascadeType.REFRESH, orphanRemoval = true, fetch = FetchType.LAZY) @JoinColumn(name = "parentassetuuid", referencedColumnName = "uuid") - private List subHostingAssets; + private List subHostingAssets; @Column(name = "identifier") private String identifier; // e.g. vm1234, xyz00, example.org, xyz00_abc @@ -109,6 +109,6 @@ public class HsHostingAssetRawEntity implements HsHostingAsset { @Override public String toString() { - return stringify.using(HsHostingAssetRawEntity.class).apply(this); + return stringify.using(HsHostingAssetBareEntity.class).apply(this); } } 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 288261e7..d2e1d83c 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/migration/ImportHostingAssets.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/migration/ImportHostingAssets.java @@ -113,13 +113,13 @@ public class ImportHostingAssets extends ImportOfficeData { static final Integer DBUSER_ID_OFFSET = 7000000; static final Integer DB_ID_OFFSET = 8000000; - record Hive(int hive_id, String hive_name, int inet_addr_id, AtomicReference serverRef) {} + record Hive(int hive_id, String hive_name, int inet_addr_id, AtomicReference serverRef) {} static Map bookingProjects = new WriteOnceMap<>(); static Map bookingItems = new WriteOnceMap<>(); static Map hives = new WriteOnceMap<>(); - static Map hostingAssets = new WriteOnceMap<>(); // TODO.impl: separate maps for each type? - static Map dbUsersByEngineAndName = new WriteOnceMap<>(); + static Map hostingAssets = new WriteOnceMap<>(); // TODO.impl: separate maps for each type? + static Map dbUsersByEngineAndName = new WriteOnceMap<>(); @Test @Order(11010) @@ -670,7 +670,7 @@ public class ImportHostingAssets extends ImportOfficeData { .map(this::trimAll) .map(row -> new Record(columns, row)) .forEach(rec -> { - final var ipNumber = HsHostingAssetRawEntity.builder() + final var ipNumber = HsHostingAssetBareEntity.builder() .type(IPV4_NUMBER) .identifier(rec.getString("inet_addr")) .caption(rec.getString("description")) @@ -734,7 +734,7 @@ public class ImportHostingAssets extends ImportOfficeData { + packet_name) .isTrue()); - final var asset = HsHostingAssetRawEntity.builder() + final var asset = HsHostingAssetBareEntity.builder() // this turns off identifier validation to accept former default prefixes .isLoaded(haType == MANAGED_WEBSPACE) .type(haType) @@ -874,7 +874,7 @@ public class ImportHostingAssets extends ImportOfficeData { .forEach(rec -> { final var unixuser_id = rec.getInteger("unixuser_id"); final var packet_id = rec.getInteger("packet_id"); - final var unixUserAsset = HsHostingAssetRawEntity.builder() + final var unixUserAsset = HsHostingAssetBareEntity.builder() .type(UNIX_USER) .parentAsset(hostingAssets.get(PACKET_ID_OFFSET + packet_id)) .identifier(rec.getString("name")) @@ -931,7 +931,7 @@ public class ImportHostingAssets extends ImportOfficeData { final var unixuser_id = rec.getInteger("emailalias_id"); final var packet_id = rec.getInteger("pac_id"); final var targets = parseCsvLine(rec.getString("target")); - final var unixUserAsset = HsHostingAssetRawEntity.builder() + final var unixUserAsset = HsHostingAssetBareEntity.builder() .type(EMAIL_ALIAS) .parentAsset(hostingAssets.get(PACKET_ID_OFFSET + packet_id)) .identifier(rec.getString("name")) @@ -944,14 +944,14 @@ public class ImportHostingAssets extends ImportOfficeData { }); } - private void createDatabaseInstances(final List parentAssets) { + private void createDatabaseInstances(final List parentAssets) { final var idRef = new AtomicInteger(0); parentAssets.forEach(pa -> { if (pa.getSubHostingAssets() == null) { pa.setSubHostingAssets(new ArrayList<>()); } - final var pgSqlInstanceAsset = HsHostingAssetRawEntity.builder() + final var pgSqlInstanceAsset = HsHostingAssetBareEntity.builder() .type(PGSQL_INSTANCE) .parentAsset(pa) .identifier(pa.getIdentifier() + "|PgSql.default") @@ -960,7 +960,7 @@ public class ImportHostingAssets extends ImportOfficeData { pa.getSubHostingAssets().add(pgSqlInstanceAsset); hostingAssets.put(DBINSTANCE_ID_OFFSET + idRef.getAndIncrement(), pgSqlInstanceAsset); - final var mariaDbInstanceAsset = HsHostingAssetRawEntity.builder() + final var mariaDbInstanceAsset = HsHostingAssetBareEntity.builder() .type(MARIADB_INSTANCE) .parentAsset(pa) .identifier(pa.getIdentifier() + "|MariaDB.default") @@ -996,7 +996,7 @@ public class ImportHostingAssets extends ImportOfficeData { .filter(ha -> ha.getType() == dbInstanceAssetType) .findAny().orElseThrow(); // there is exactly one: the default instance for the given type - final var dbUserAsset = HsHostingAssetRawEntity.builder() + final var dbUserAsset = HsHostingAssetBareEntity.builder() .type(dbUserAssetType) .parentAsset(hostingAssets.get(PACKET_ID_OFFSET + packet_id)) .assignedToAsset(dbInstanceAsset) @@ -1027,7 +1027,7 @@ public class ImportHostingAssets extends ImportOfficeData { : failWith("unknown DB engine " + engine); final var name = rec.getString("name"); final var encoding = rec.getString("encoding").replaceAll("[-_]+", ""); - final var dbAsset = HsHostingAssetRawEntity.builder() + final var dbAsset = HsHostingAssetBareEntity.builder() .type(type) .parentAsset(owningDbUserHA) .identifier(type.name().substring(0, 2) + "D|" + name) @@ -1069,7 +1069,7 @@ public class ImportHostingAssets extends ImportOfficeData { }; } - private static HsHostingAssetRawEntity ipNumber(final Integer inet_addr_id) { + private static HsHostingAssetBareEntity ipNumber(final Integer inet_addr_id) { return inet_addr_id != null ? hostingAssets.get(IP_NUMBER_ID_OFFSET + inet_addr_id) : null; } @@ -1077,7 +1077,7 @@ public class ImportHostingAssets extends ImportOfficeData { return hive_id != null ? hives.get(HIVE_ID_OFFSET + hive_id) : null; } - private static HsHostingAssetRawEntity pac(final Integer packet_id) { + private static HsHostingAssetBareEntity pac(final Integer packet_id) { return packet_id != null ? hostingAssets.get(PACKET_ID_OFFSET + packet_id) : null; } diff --git a/src/test/java/net/hostsharing/hsadminng/hs/migration/ImportOfficeData.java b/src/test/java/net/hostsharing/hsadminng/hs/migration/ImportOfficeData.java index 0846d6bd..1fc3761f 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/migration/ImportOfficeData.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/migration/ImportOfficeData.java @@ -2,7 +2,7 @@ package net.hostsharing.hsadminng.hs.migration; import net.hostsharing.hsadminng.context.Context; import net.hostsharing.hsadminng.hs.office.bankaccount.HsOfficeBankAccountEntity; -import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactEntity; +import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactRbacEntity; import net.hostsharing.hsadminng.hs.office.coopassets.HsOfficeCoopAssetsTransactionEntity; import net.hostsharing.hsadminng.hs.office.coopassets.HsOfficeCoopAssetsTransactionType; import net.hostsharing.hsadminng.hs.office.coopshares.HsOfficeCoopSharesTransactionEntity; @@ -15,7 +15,7 @@ import net.hostsharing.hsadminng.hs.office.partner.HsOfficePartnerEntity; import net.hostsharing.hsadminng.hs.office.person.HsOfficePersonEntity; import net.hostsharing.hsadminng.hs.office.person.HsOfficePersonType; import net.hostsharing.hsadminng.hs.office.relation.HsOfficeRelationEntity; -import net.hostsharing.hsadminng.hs.office.relation.HsOfficeRelationRawEntity; +import net.hostsharing.hsadminng.hs.office.relation.HsOfficeRelationBareEntity; import net.hostsharing.hsadminng.hs.office.relation.HsOfficeRelationType; import net.hostsharing.hsadminng.hs.office.sepamandate.HsOfficeSepaMandateEntity; import net.hostsharing.hsadminng.rbac.rbacobject.RbacObject; @@ -121,7 +121,7 @@ public class ImportOfficeData extends CsvDataImport { -1 ); - static Map contacts = new WriteOnceMap<>(); + static Map contacts = new WriteOnceMap<>(); static Map persons = new WriteOnceMap<>(); static Map partners = new WriteOnceMap<>(); static Map debitors = new WriteOnceMap<>(); @@ -979,7 +979,7 @@ public class ImportOfficeData extends CsvDataImport { contactPerson = addPerson(HsOfficePersonEntity.builder().build(), rec); } - final var contact = HsOfficeContactEntity.builder().build(); + final var contact = HsOfficeContactRbacEntity.builder().build(); initContact(contact, rec); if (containsPartnerRel(rec)) { @@ -1057,8 +1057,8 @@ public class ImportOfficeData extends CsvDataImport { final HsOfficeRelationType type, final HsOfficePersonEntity anchor, final HsOfficePersonEntity holder, - final HsOfficeContactEntity contact) { - final var rel = HsOfficeRelationRawEntity.builder() + final HsOfficeContactRbacEntity contact) { + final var rel = HsOfficeRelationBareEntity.builder() .anchor(anchor) .holder(holder) .contact(contact) @@ -1118,7 +1118,7 @@ public class ImportOfficeData extends CsvDataImport { assertThat(unexpectedRolesSet).isEmpty(); } - private HsOfficeContactEntity initContact(final HsOfficeContactEntity contact, final Record contactRecord) { + private HsOfficeContactRbacEntity initContact(final HsOfficeContactRbacEntity contact, final Record contactRecord) { contact.setCaption(toCaption( contactRecord.getString("salut"), diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactControllerAcceptanceTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactControllerAcceptanceTest.java index 2d171fcc..d7a77e56 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactControllerAcceptanceTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactControllerAcceptanceTest.java @@ -355,10 +355,10 @@ class HsOfficeContactControllerAcceptanceTest extends ContextBasedTestWithCleanu } } - private HsOfficeContactEntity givenSomeTemporaryContactCreatedBy(final String creatingUser) { + private HsOfficeContactRbacEntity givenSomeTemporaryContactCreatedBy(final String creatingUser) { return jpaAttempt.transacted(() -> { context.define(creatingUser); - final var newContact = HsOfficeContactEntity.builder() + final var newContact = HsOfficeContactRbacEntity.builder() .uuid(UUID.randomUUID()) .caption("Temp from " + Context.getCallerMethodNameFromStackFrame(1) ) .emailAddresses(Map.of("main", RandomStringUtils.randomAlphabetic(10) + "@example.org")) @@ -375,7 +375,7 @@ class HsOfficeContactControllerAcceptanceTest extends ContextBasedTestWithCleanu void cleanup() { jpaAttempt.transacted(() -> { context.define("superuser-alex@hostsharing.net", null); - em.createQuery("DELETE FROM HsOfficeContactEntity c WHERE c.caption LIKE 'Temp %'").executeUpdate(); + em.createQuery("DELETE FROM HsOfficeContactRbacEntity c WHERE c.caption LIKE 'Temp %'").executeUpdate(); }).assertSuccessful(); } } diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactEntityPatcherUnitTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactEntityPatcherUnitTest.java index a4c7cd38..e1f00a98 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactEntityPatcherUnitTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactEntityPatcherUnitTest.java @@ -15,7 +15,7 @@ import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_CLASS; @TestInstance(PER_CLASS) class HsOfficeContactEntityPatcherUnitTest extends PatchUnitTestBase< HsOfficeContactPatchResource, - HsOfficeContactEntity + HsOfficeContactRbacEntity > { private static final UUID INITIAL_CONTACT_UUID = UUID.randomUUID(); @@ -42,8 +42,8 @@ class HsOfficeContactEntityPatcherUnitTest extends PatchUnitTestBase< ); @Override - protected HsOfficeContactEntity newInitialEntity() { - final var entity = new HsOfficeContactEntity(); + protected HsOfficeContactRbacEntity newInitialEntity() { + final var entity = new HsOfficeContactRbacEntity(); entity.setUuid(INITIAL_CONTACT_UUID); entity.setCaption("initial caption"); entity.putEmailAddresses(Map.ofEntries( @@ -64,7 +64,7 @@ class HsOfficeContactEntityPatcherUnitTest extends PatchUnitTestBase< } @Override - protected HsOfficeContactEntityPatcher createPatcher(final HsOfficeContactEntity entity) { + protected HsOfficeContactEntityPatcher createPatcher(final HsOfficeContactRbacEntity entity) { return new HsOfficeContactEntityPatcher(entity); } @@ -75,26 +75,26 @@ class HsOfficeContactEntityPatcherUnitTest extends PatchUnitTestBase< "caption", HsOfficeContactPatchResource::setCaption, "patched caption", - HsOfficeContactEntity::setCaption), + HsOfficeContactRbacEntity::setCaption), new SimpleProperty<>( "resources", HsOfficeContactPatchResource::setEmailAddresses, PATCH_EMAIL_ADDRESSES, - HsOfficeContactEntity::putEmailAddresses, + HsOfficeContactRbacEntity::putEmailAddresses, PATCHED_EMAIL_ADDRESSES) .notNullable(), new SimpleProperty<>( "resources", HsOfficeContactPatchResource::setPhoneNumbers, PATCH_PHONE_NUMBERS, - HsOfficeContactEntity::putPhoneNumbers, + HsOfficeContactRbacEntity::putPhoneNumbers, PATCHED_PHONE_NUMBERS) .notNullable(), new JsonNullableProperty<>( "patched given name", HsOfficeContactPatchResource::setPostalAddress, "patched given name", - HsOfficeContactEntity::setPostalAddress) + HsOfficeContactRbacEntity::setPostalAddress) ); } } diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactEntityUnitTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactEntityUnitTest.java index 43747418..7b290ecc 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactEntityUnitTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactEntityUnitTest.java @@ -8,13 +8,13 @@ class HsOfficeContactEntityUnitTest { @Test void toStringReturnsNullForNullContact() { - final HsOfficeContactEntity givenContact = null; + final HsOfficeContactRbacEntity givenContact = null; assertThat("" + givenContact).isEqualTo("null"); } @Test void toStringReturnsCaption() { - final var givenContact = HsOfficeContactEntity.builder().caption("given caption").build(); + final var givenContact = HsOfficeContactRbacEntity.builder().caption("given caption").build(); assertThat("" + givenContact).isEqualTo("contact(caption='given caption')"); } diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactRepositoryIntegrationTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactRepositoryIntegrationTest.java index 89a03f67..87a236fb 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactRepositoryIntegrationTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactRepositoryIntegrationTest.java @@ -65,7 +65,7 @@ class HsOfficeContactRepositoryIntegrationTest extends ContextBasedTestWithClean // then result.assertSuccessful(); - assertThat(result.returnedValue()).isNotNull().extracting(HsOfficeContactEntity::getUuid).isNotNull(); + assertThat(result.returnedValue()).isNotNull().extracting(HsOfficeContactRbacEntity::getUuid).isNotNull(); assertThatContactIsPersisted(result.returnedValue()); assertThat(contactRepo.count()).isEqualTo(count + 1); } @@ -82,7 +82,7 @@ class HsOfficeContactRepositoryIntegrationTest extends ContextBasedTestWithClean // then result.assertSuccessful(); - assertThat(result.returnedValue()).isNotNull().extracting(HsOfficeContactEntity::getUuid).isNotNull(); + assertThat(result.returnedValue()).isNotNull().extracting(HsOfficeContactRbacEntity::getUuid).isNotNull(); assertThatContactIsPersisted(result.returnedValue()); assertThat(contactRepo.count()).isEqualTo(count + 1); } @@ -120,7 +120,7 @@ class HsOfficeContactRepositoryIntegrationTest extends ContextBasedTestWithClean )); } - private void assertThatContactIsPersisted(final HsOfficeContactEntity saved) { + private void assertThatContactIsPersisted(final HsOfficeContactRbacEntity saved) { final var found = contactRepo.findByUuid(saved.getUuid()); assertThat(found).isNotEmpty().get().extracting(Object::toString).isEqualTo(saved.toString()); } @@ -270,16 +270,16 @@ class HsOfficeContactRepositoryIntegrationTest extends ContextBasedTestWithClean "[creating contact test-data second contact, hs_office_contact, INSERT]"); } - private HsOfficeContactEntity givenSomeTemporaryContact( + private HsOfficeContactRbacEntity givenSomeTemporaryContact( final String createdByUser, - Supplier entitySupplier) { + Supplier entitySupplier) { return jpaAttempt.transacted(() -> { context(createdByUser); return toCleanup(contactRepo.save(entitySupplier.get())); }).assumeSuccessful().returnedValue(); } - private HsOfficeContactEntity givenSomeTemporaryContact(final String createdByUser) { + private HsOfficeContactRbacEntity givenSomeTemporaryContact(final String createdByUser) { final var random = RandomStringUtils.randomAlphabetic(12); return givenSomeTemporaryContact(createdByUser, () -> hsOfficeContact( @@ -287,15 +287,15 @@ class HsOfficeContactRepositoryIntegrationTest extends ContextBasedTestWithClean "some-temporary-contact" + random + "@example.com")); } - void exactlyTheseContactsAreReturned(final List actualResult, final String... contactCaptions) { + void exactlyTheseContactsAreReturned(final List actualResult, final String... contactCaptions) { assertThat(actualResult) - .extracting(HsOfficeContactEntity::getCaption) + .extracting(HsOfficeContactRbacEntity::getCaption) .containsExactlyInAnyOrder(contactCaptions); } - void allTheseContactsAreReturned(final List actualResult, final String... contactCaptions) { + void allTheseContactsAreReturned(final List actualResult, final String... contactCaptions) { assertThat(actualResult) - .extracting(HsOfficeContactEntity::getCaption) + .extracting(HsOfficeContactRbacEntity::getCaption) .contains(contactCaptions); } } diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/contact/TestHsOfficeContact.java b/src/test/java/net/hostsharing/hsadminng/hs/office/contact/TestHsOfficeContact.java index c104be32..cf20b8f4 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/contact/TestHsOfficeContact.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/contact/TestHsOfficeContact.java @@ -4,10 +4,10 @@ import java.util.Map; public class TestHsOfficeContact { - public static final HsOfficeContactEntity TEST_CONTACT = hsOfficeContact("some contact", "some-contact@example.com"); + public static final HsOfficeContactRbacEntity TEST_CONTACT = hsOfficeContact("some contact", "some-contact@example.com"); - static public HsOfficeContactEntity hsOfficeContact(final String caption, final String emailAddr) { - return HsOfficeContactEntity.builder() + static public HsOfficeContactRbacEntity hsOfficeContact(final String caption, final String emailAddr) { + return HsOfficeContactRbacEntity.builder() .caption(caption) .postalAddress("address of " + caption) .emailAddresses(Map.of("main", emailAddr)) diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/debitor/HsOfficeDebitorEntityUnitTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/debitor/HsOfficeDebitorEntityUnitTest.java index 1f645d33..dfa94e6a 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/debitor/HsOfficeDebitorEntityUnitTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/debitor/HsOfficeDebitorEntityUnitTest.java @@ -1,6 +1,6 @@ package net.hostsharing.hsadminng.hs.office.debitor; -import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactEntity; +import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactRbacEntity; import net.hostsharing.hsadminng.hs.office.partner.HsOfficePartnerEntity; import net.hostsharing.hsadminng.hs.office.person.HsOfficePersonEntity; import net.hostsharing.hsadminng.hs.office.person.HsOfficePersonType; @@ -21,7 +21,7 @@ class HsOfficeDebitorEntityUnitTest { .personType(HsOfficePersonType.LEGAL_PERSON) .tradeName("some billing trade name") .build()) - .contact(HsOfficeContactEntity.builder().caption("some caption").build()) + .contact(HsOfficeContactRbacEntity.builder().caption("some caption").build()) .build(); @Test diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerControllerAcceptanceTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerControllerAcceptanceTest.java index 3a4eaf1b..25e0ee8e 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerControllerAcceptanceTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerControllerAcceptanceTest.java @@ -3,7 +3,7 @@ package net.hostsharing.hsadminng.hs.office.partner; import io.restassured.RestAssured; import io.restassured.http.ContentType; import net.hostsharing.hsadminng.HsadminNgApplication; -import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactEntity; +import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactRbacEntity; import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactRepository; import net.hostsharing.hsadminng.hs.office.person.HsOfficePersonEntity; import net.hostsharing.hsadminng.hs.office.person.HsOfficePersonRepository; @@ -180,7 +180,7 @@ class HsOfficePartnerControllerAcceptanceTest extends ContextBasedTestWithCleanu .post("http://localhost/api/hs/office/partners") .then().log().all().assertThat() .statusCode(400) - .body("message", is("Unable to find " + HsOfficeContactEntity.class.getName() + " with id " + GIVEN_NON_EXISTING_UUID)); + .body("message", is("Unable to find " + HsOfficeContactRbacEntity.class.getName() + " with id " + GIVEN_NON_EXISTING_UUID)); // @formatter:on } diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerControllerRestTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerControllerRestTest.java index a55695e4..a14f2cbd 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerControllerRestTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerControllerRestTest.java @@ -1,7 +1,7 @@ package net.hostsharing.hsadminng.hs.office.partner; import net.hostsharing.hsadminng.context.Context; -import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactEntity; +import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactRbacEntity; import net.hostsharing.hsadminng.hs.office.person.HsOfficePersonEntity; import net.hostsharing.hsadminng.hs.office.relation.HsOfficeRelationRbacEntity; import net.hostsharing.hsadminng.hs.office.relation.HsOfficeRelationRepository; @@ -69,7 +69,7 @@ class HsOfficePartnerControllerRestTest { HsOfficePersonEntity personMock; @Mock - HsOfficeContactEntity contactMock; + HsOfficeContactRbacEntity contactMock; @Mock HsOfficePartnerEntity partnerMock; @@ -83,7 +83,7 @@ class HsOfficePartnerControllerRestTest { lenient().when(em.getReference(HsOfficePersonEntity.class, GIVEN_MANDANTE_UUID)).thenReturn(mandateMock); lenient().when(em.getReference(HsOfficePersonEntity.class, GIVEN_PERSON_UUID)).thenReturn(personMock); - lenient().when(em.getReference(HsOfficeContactEntity.class, GIVEN_CONTACT_UUID)).thenReturn(contactMock); + lenient().when(em.getReference(HsOfficeContactRbacEntity.class, GIVEN_CONTACT_UUID)).thenReturn(contactMock); lenient().when(em.getReference(any(), eq(GIVEN_INVALID_UUID))).thenThrow(EntityNotFoundException.class); } diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerDetailsEntityPatcherUnitTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerDetailsEntityPatcherUnitTest.java index 10cb6016..8a3c0084 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerDetailsEntityPatcherUnitTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerDetailsEntityPatcherUnitTest.java @@ -1,6 +1,6 @@ package net.hostsharing.hsadminng.hs.office.partner; -import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactEntity; +import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactRbacEntity; import net.hostsharing.hsadminng.hs.office.generated.api.v1.model.HsOfficePartnerDetailsPatchResource; import net.hostsharing.hsadminng.hs.office.person.HsOfficePersonEntity; import net.hostsharing.hsadminng.rbac.test.PatchUnitTestBase; @@ -43,8 +43,8 @@ class HsOfficePartnerDetailsEntityPatcherUnitTest extends PatchUnitTestBase< @BeforeEach void initMocks() { - lenient().when(em.getReference(eq(HsOfficeContactEntity.class), any())).thenAnswer(invocation -> - HsOfficeContactEntity.builder().uuid(invocation.getArgument(1)).build()); + lenient().when(em.getReference(eq(HsOfficeContactRbacEntity.class), any())).thenAnswer(invocation -> + HsOfficeContactRbacEntity.builder().uuid(invocation.getArgument(1)).build()); lenient().when(em.getReference(eq(HsOfficePersonEntity.class), any())).thenAnswer(invocation -> HsOfficePersonEntity.builder().uuid(invocation.getArgument(1)).build()); } diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerEntityPatcherUnitTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerEntityPatcherUnitTest.java index 878a9302..9a5d42e1 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerEntityPatcherUnitTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerEntityPatcherUnitTest.java @@ -1,6 +1,6 @@ package net.hostsharing.hsadminng.hs.office.partner; -import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactEntity; +import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactRbacEntity; import net.hostsharing.hsadminng.hs.office.generated.api.v1.model.HsOfficePartnerPatchResource; import net.hostsharing.hsadminng.hs.office.person.HsOfficePersonEntity; import net.hostsharing.hsadminng.hs.office.relation.HsOfficeRelationEntity; @@ -37,7 +37,7 @@ class HsOfficePartnerEntityPatcherUnitTest extends PatchUnitTestBase< private final HsOfficePersonEntity givenInitialPerson = HsOfficePersonEntity.builder() .uuid(INITIAL_PERSON_UUID) .build(); - private final HsOfficeContactEntity givenInitialContact = HsOfficeContactEntity.builder() + private final HsOfficeContactRbacEntity givenInitialContact = HsOfficeContactRbacEntity.builder() .uuid(INITIAL_CONTACT_UUID) .build(); diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerEntityUnitTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerEntityUnitTest.java index 54ad1b20..b0a396ee 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerEntityUnitTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerEntityUnitTest.java @@ -1,6 +1,6 @@ package net.hostsharing.hsadminng.hs.office.partner; -import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactEntity; +import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactRbacEntity; import net.hostsharing.hsadminng.hs.office.person.HsOfficePersonEntity; import net.hostsharing.hsadminng.hs.office.person.HsOfficePersonType; import net.hostsharing.hsadminng.hs.office.relation.HsOfficeRelationRbacEntity; @@ -23,7 +23,7 @@ class HsOfficePartnerEntityUnitTest { .personType(HsOfficePersonType.LEGAL_PERSON) .tradeName("some trade name") .build()) - .contact(HsOfficeContactEntity.builder().caption("some caption").build()) + .contact(HsOfficeContactRbacEntity.builder().caption("some caption").build()) .build()) .build(); diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/partner/TestHsOfficePartner.java b/src/test/java/net/hostsharing/hsadminng/hs/office/partner/TestHsOfficePartner.java index a9bd0a64..25cbc082 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/partner/TestHsOfficePartner.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/partner/TestHsOfficePartner.java @@ -1,6 +1,6 @@ package net.hostsharing.hsadminng.hs.office.partner; -import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactEntity; +import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactRbacEntity; import net.hostsharing.hsadminng.hs.office.person.HsOfficePersonEntity; import net.hostsharing.hsadminng.hs.office.relation.HsOfficeRelationRbacEntity; import net.hostsharing.hsadminng.hs.office.relation.HsOfficeRelationType; @@ -25,7 +25,7 @@ public class TestHsOfficePartner { .personType(LEGAL_PERSON) .tradeName(tradeName) .build()) - .contact(HsOfficeContactEntity.builder() + .contact(HsOfficeContactRbacEntity.builder() .caption(tradeName) .build()) .build() diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/relation/HsOfficeRelationEntityPatcherUnitTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/relation/HsOfficeRelationEntityPatcherUnitTest.java index fe90e0f1..5bfd4690 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/relation/HsOfficeRelationEntityPatcherUnitTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/relation/HsOfficeRelationEntityPatcherUnitTest.java @@ -1,6 +1,6 @@ package net.hostsharing.hsadminng.hs.office.relation; -import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactEntity; +import net.hostsharing.hsadminng.hs.office.contact.HsOfficeContactRbacEntity; import net.hostsharing.hsadminng.hs.office.generated.api.v1.model.HsOfficeRelationPatchResource; import net.hostsharing.hsadminng.hs.office.person.HsOfficePersonEntity; import net.hostsharing.hsadminng.rbac.test.PatchUnitTestBase; @@ -34,8 +34,8 @@ class HsOfficeRelationEntityPatcherUnitTest extends PatchUnitTestBase< @BeforeEach void initMocks() { - lenient().when(em.getReference(eq(HsOfficeContactEntity.class), any())).thenAnswer(invocation -> - HsOfficeContactEntity.builder().uuid(invocation.getArgument(1)).build()); + lenient().when(em.getReference(eq(HsOfficeContactRbacEntity.class), any())).thenAnswer(invocation -> + HsOfficeContactRbacEntity.builder().uuid(invocation.getArgument(1)).build()); } final HsOfficePersonEntity givenInitialAnchorPerson = HsOfficePersonEntity.builder() @@ -44,7 +44,7 @@ class HsOfficeRelationEntityPatcherUnitTest extends PatchUnitTestBase< final HsOfficePersonEntity givenInitialHolderPerson = HsOfficePersonEntity.builder() .uuid(UUID.randomUUID()) .build(); - final HsOfficeContactEntity givenInitialContact = HsOfficeContactEntity.builder() + final HsOfficeContactRbacEntity givenInitialContact = HsOfficeContactRbacEntity.builder() .uuid(UUID.randomUUID()) .build(); @@ -82,8 +82,8 @@ class HsOfficeRelationEntityPatcherUnitTest extends PatchUnitTestBase< ); } - static HsOfficeContactEntity newContact(final UUID uuid) { - final var newContact = new HsOfficeContactEntity(); + static HsOfficeContactRbacEntity newContact(final UUID uuid) { + final var newContact = new HsOfficeContactRbacEntity(); newContact.setUuid(uuid); return newContact; }