diff --git a/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/service/AttachmentsServiceImpl.java b/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/service/AttachmentsServiceImpl.java index 37bf8469b..a33660351 100644 --- a/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/service/AttachmentsServiceImpl.java +++ b/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/service/AttachmentsServiceImpl.java @@ -81,6 +81,7 @@ public void restoreAttachment(Instant restoreTimestamp) { private DeletionUserInfo fillDeletionUserInfo(UserInfo userInfo) { var deletionUserInfo = DeletionUserInfo.create(); deletionUserInfo.setName(userInfo.getName()); + deletionUserInfo.setIsSystemUser(userInfo.isSystemUser()); return deletionUserInfo; } } diff --git a/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/service/model/servicehandler/DeletionUserInfo.java b/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/service/model/servicehandler/DeletionUserInfo.java index 34f4dee67..231dbdd53 100644 --- a/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/service/model/servicehandler/DeletionUserInfo.java +++ b/cds-feature-attachments/src/main/java/com/sap/cds/feature/attachments/service/model/servicehandler/DeletionUserInfo.java @@ -13,6 +13,7 @@ public interface DeletionUserInfo extends CdsData { String NAME = "name"; + String IS_SYSTEM_USER = "isSystemUser"; static DeletionUserInfo create() { return Struct.create(DeletionUserInfo.class); @@ -21,4 +22,8 @@ static DeletionUserInfo create() { String getName(); void setName(String id); + + Boolean getIsSystemUser(); + + void setIsSystemUser(Boolean isSystemUser); } diff --git a/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/service/AttachmentsServiceImplTest.java b/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/service/AttachmentsServiceImplTest.java index dff314a63..c1f569f35 100644 --- a/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/service/AttachmentsServiceImplTest.java +++ b/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/service/AttachmentsServiceImplTest.java @@ -180,6 +180,7 @@ void restoreAttachmentAttachmentInsertsData() { private ModifiableUserInfo mockUserInfo() { var userInfo = UserInfo.create(); userInfo.setName("some name"); + userInfo.setIsSystemUser(true); return userInfo; } @@ -187,5 +188,6 @@ private void validateUerInfo( AttachmentMarkAsDeletedEventContext deleteEventContext, ModifiableUserInfo userInfo) { var deletionUserInfo = deleteEventContext.getDeletionUserInfo(); assertThat(deletionUserInfo.getName()).isEqualTo(userInfo.getName()); + assertThat(deletionUserInfo.getIsSystemUser()).isEqualTo(userInfo.isSystemUser()); } } diff --git a/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/service/model/servicehandler/DeletionUserInfoTest.java b/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/service/model/servicehandler/DeletionUserInfoTest.java index 57d3f5917..8e7824ddd 100644 --- a/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/service/model/servicehandler/DeletionUserInfoTest.java +++ b/cds-feature-attachments/src/test/java/com/sap/cds/feature/attachments/service/model/servicehandler/DeletionUserInfoTest.java @@ -22,8 +22,10 @@ void dataCanBeRead() { var name = "some name"; cut.setName(name); + cut.setIsSystemUser(true); assertThat(cut.getName()).isEqualTo(name); + assertThat(cut.getIsSystemUser()).isTrue(); } @Test @@ -31,7 +33,9 @@ void dataCanBeReadWithConstant() { var name = "some_name"; cut.setName(name); + cut.setIsSystemUser(false); assertThat(cut).containsEntry(DeletionUserInfo.NAME, name); + assertThat(cut).containsEntry(DeletionUserInfo.IS_SYSTEM_USER, false); } } diff --git a/integration-tests/srv/src/test/java/com/sap/cds/feature/attachments/integrationtests/nondraftservice/OdataRequestValidationWithTestHandlerTest.java b/integration-tests/srv/src/test/java/com/sap/cds/feature/attachments/integrationtests/nondraftservice/OdataRequestValidationWithTestHandlerTest.java index 1853ec28c..94fca3378 100644 --- a/integration-tests/srv/src/test/java/com/sap/cds/feature/attachments/integrationtests/nondraftservice/OdataRequestValidationWithTestHandlerTest.java +++ b/integration-tests/srv/src/test/java/com/sap/cds/feature/attachments/integrationtests/nondraftservice/OdataRequestValidationWithTestHandlerTest.java @@ -163,6 +163,8 @@ protected void verifySingleDeletionEvent(String contentId) { assertThat(event.context()).isInstanceOf(AttachmentMarkAsDeletedEventContext.class); var deleteContext = (AttachmentMarkAsDeletedEventContext) event.context(); assertThat(deleteContext.getContentId()).isEqualTo(contentId); + assertThat(deleteContext.getDeletionUserInfo().getName()).isEqualTo("anonymous"); + assertThat(deleteContext.getDeletionUserInfo().getIsSystemUser()).isFalse(); }); } @@ -203,7 +205,11 @@ private Predicate verifyContentIdAndUserInfo( && ((AttachmentMarkAsDeletedEventContext) event.context()) .getDeletionUserInfo() .getName() - .equals("anonymous"); + .equals("anonymous") + && Boolean.FALSE.equals( + ((AttachmentMarkAsDeletedEventContext) event.context()) + .getDeletionUserInfo() + .getIsSystemUser()); } private void verifyCreateEventsContainsContentId(