DataTransferNotificationMailTest.ktuser1 = area admin, user2 = observer)user2 as observer (observerIds) and user2.userWantsToObserve = trueuser1 uploads several files, triggering audit entriesuser1 renames a file — verifies filename_old is preserved in audituser1 deletes a file — verifies delete event recordedDataTransferNotificationJob which:
notified=falseDomainService to generate the area link URLnotified=truemessage (i18n string from plugin i18n), audit table (columns: Date, File name, Description, Action, User), download events table, and link button are all presentStringUtils — checks that email body contains expected translatable strings from DataTransferI18nResources.propertiespf.getI18nString("plugins.datatransfer.audit.downloadEvents") section header appears"plugins.datatransfer.mail.link" button label appearsDomainService.getDomain() (e.g. https://your-server.com/) + PagesResolver.getPageUrl()DataTransferPageRest — internal REST controller for CRUD operationsDataTransferAreaDO, DataTransferAuditDao — area and audit persistenceAttachmentsService — JCR file operations (backed by test repo)DomainService — resolves the server's base URL for email linksPagesResolver — constructs frontend page URLsDataTransferNotificationJob — the job under test (notification scheduling)
End-to-end integration test for the observer notification mail system — exercises the full pipeline: create area with observers → upload files → run notification job → verify email content. The largest DataTransfer test at 205 lines. Uses Spring autowiring, JCR test repo, and Groovy mail template rendering.