diff --git a/src/main/java/org/olat/core/commons/services/doceditor/collabora/manager/CollaboraServiceImpl.java b/src/main/java/org/olat/core/commons/services/doceditor/collabora/manager/CollaboraServiceImpl.java index 22f03d071489ad350041f560d0e2e33ae2a73134..b92f6119257df1c0f1b8a81507726ab6900cd675 100644 --- a/src/main/java/org/olat/core/commons/services/doceditor/collabora/manager/CollaboraServiceImpl.java +++ b/src/main/java/org/olat/core/commons/services/doceditor/collabora/manager/CollaboraServiceImpl.java @@ -62,6 +62,8 @@ public class CollaboraServiceImpl implements CollaboraService, GenericEventListe private static final OLog log = Tracing.createLoggerFor(CollaboraServiceImpl.class); + private static final String LOCK_APP = "collabora"; + private Discovery discovery; @Autowired @@ -85,7 +87,7 @@ public class CollaboraServiceImpl implements CollaboraService, GenericEventListe @Override public Access createAccess(VFSMetadata vfsMetadata, Identity identity, DocEditorSecurityCallback secCallback) { - return wopiService.getOrCreateAccess(vfsMetadata, identity, secCallback, null); + return wopiService.getOrCreateAccess(vfsMetadata, identity, secCallback, LOCK_APP, null); } @Override @@ -142,7 +144,10 @@ public class CollaboraServiceImpl implements CollaboraService, GenericEventListe if (discovery == null) { String discoveryUrl = getDiscoveryUrl(); discovery = wopiService.getDiscovery(discoveryUrl); - log.info("Recieved new WOPI discovery from " + discoveryUrl); + if (discovery != null) { + log.info("Recieved new WOPI discovery from " + discoveryUrl); + } + log.warn("Not able to fetch new WOPI discovery from " + discoveryUrl); } return discovery; } @@ -189,12 +194,12 @@ public class CollaboraServiceImpl implements CollaboraService, GenericEventListe @Override public boolean isLockedForMe(VFSLeaf vfsLeaf, Identity identity) { - return lockManager.isLockedForMe(vfsLeaf, identity, VFSLockApplicationType.collaboration, "collabora"); + return lockManager.isLockedForMe(vfsLeaf, identity, VFSLockApplicationType.collaboration, LOCK_APP); } @Override public LockResult lock(VFSLeaf vfsLeaf, Identity identity) { - return lockManager.lock(vfsLeaf, identity, VFSLockApplicationType.collaboration, "collabora"); + return lockManager.lock(vfsLeaf, identity, VFSLockApplicationType.collaboration, LOCK_APP); } @Override diff --git a/src/main/java/org/olat/core/commons/services/doceditor/office365/manager/Office365ServiceImpl.java b/src/main/java/org/olat/core/commons/services/doceditor/office365/manager/Office365ServiceImpl.java index 0d0ece0ed0a4c69707d42c6d8ed768406c7ff6a8..560d111930576c702887d40f42cf6be0151f5ca2 100644 --- a/src/main/java/org/olat/core/commons/services/doceditor/office365/manager/Office365ServiceImpl.java +++ b/src/main/java/org/olat/core/commons/services/doceditor/office365/manager/Office365ServiceImpl.java @@ -101,7 +101,7 @@ public class Office365ServiceImpl implements Office365Service, GenericEventListe @Override public Access createAccess(VFSMetadata vfsMetadata, Identity identity, DocEditorSecurityCallback secCallback) { Date expiresIn24Hours = Date.from(Instant.now().plus(Duration.ofHours(24))); - return wopiService.getOrCreateAccess(vfsMetadata, identity, secCallback, expiresIn24Hours); + return wopiService.getOrCreateAccess(vfsMetadata, identity, secCallback, LOCK_APP, expiresIn24Hours); } @Override diff --git a/src/main/java/org/olat/core/commons/services/doceditor/wopi/WopiService.java b/src/main/java/org/olat/core/commons/services/doceditor/wopi/WopiService.java index 22ee15e7f396e98fd2de8d77392a70e8b900d8f4..b50719e7c8f7413c1689ecedb928525d3c21a95e 100644 --- a/src/main/java/org/olat/core/commons/services/doceditor/wopi/WopiService.java +++ b/src/main/java/org/olat/core/commons/services/doceditor/wopi/WopiService.java @@ -61,10 +61,12 @@ public interface WopiService { * @param vfsMetadata * @param identity * @param secCallback + * @param app * @param expiresAt (optional) date when the access expires * @return */ - Access getOrCreateAccess(VFSMetadata vfsMetadata, Identity identity, DocEditorSecurityCallback secCallback, Date expiresAt); + Access getOrCreateAccess(VFSMetadata vfsMetadata, Identity identity, DocEditorSecurityCallback secCallback, + String app, Date expiresAt); Access getAccess(String accessToken); diff --git a/src/main/java/org/olat/core/commons/services/doceditor/wopi/manager/AccessDAO.java b/src/main/java/org/olat/core/commons/services/doceditor/wopi/manager/AccessDAO.java index 29f3188386929939c8b618fef84a8f4ca7c1fba2..2e182747dd5cd4cc1534e978dd279d34c3a4e5c1 100644 --- a/src/main/java/org/olat/core/commons/services/doceditor/wopi/manager/AccessDAO.java +++ b/src/main/java/org/olat/core/commons/services/doceditor/wopi/manager/AccessDAO.java @@ -52,11 +52,12 @@ class AccessDAO { dbInstance.commitAndCloseSession(); } - Access createAccess(VFSMetadata metadata, Identity identity, String token, boolean canEdit, + Access createAccess(VFSMetadata metadata, Identity identity, String app, String token, boolean canEdit, boolean canClose, boolean versionControlled, Date expiresAt) { AccessImpl access = new AccessImpl(); access.setCreationDate(new Date()); access.setLastModified(access.getCreationDate()); + access.setApp(app); access.setToken(token); access.setCanEdit(canEdit); access.setCanClose(canClose); @@ -95,7 +96,7 @@ class AccessDAO { return accesses.isEmpty() ? null : accesses.get(0); } - Access loadAccess(VFSMetadata metadata, Identity identity) { + Access loadAccess(VFSMetadata metadata, Identity identity, String app) { if (metadata == null || identity == null) return null; QueryBuilder sb = new QueryBuilder(); @@ -105,11 +106,13 @@ class AccessDAO { sb.append(" join fetch access.identity identity"); sb.and().append("access.metadata.key = :metadataKey"); sb.and().append("access.identity.key = :identityKey"); + sb.and().append("access.app = :app"); List<Access> accesses = dbInstance.getCurrentEntityManager() .createQuery(sb.toString(), Access.class) .setParameter("metadataKey", metadata.getKey()) .setParameter("identityKey", identity.getKey()) + .setParameter("app", app) .getResultList(); return accesses.isEmpty() ? null : accesses.get(0); } diff --git a/src/main/java/org/olat/core/commons/services/doceditor/wopi/manager/WopiServiceImpl.java b/src/main/java/org/olat/core/commons/services/doceditor/wopi/manager/WopiServiceImpl.java index bef4f7c7d7d831b05c64a8f3bbf2989b01786a9c..7f67adbe47e45126a05daaf36f4e2b1ad0bfdece 100644 --- a/src/main/java/org/olat/core/commons/services/doceditor/wopi/manager/WopiServiceImpl.java +++ b/src/main/java/org/olat/core/commons/services/doceditor/wopi/manager/WopiServiceImpl.java @@ -119,8 +119,9 @@ public class WopiServiceImpl implements WopiService { } @Override - public Access getOrCreateAccess(VFSMetadata vfsMetadata, Identity identity, DocEditorSecurityCallback secCallback, Date expiresAt) { - Access access = accessDao.loadAccess(vfsMetadata, identity); + public Access getOrCreateAccess(VFSMetadata vfsMetadata, Identity identity, DocEditorSecurityCallback secCallback, + String app, Date expiresAt) { + Access access = accessDao.loadAccess(vfsMetadata, identity, app); if (access != null) { if (accessUnchanged(access, secCallback) && !expired(access)) { access = accessDao.updateExpiresAt(access, expiresAt); @@ -129,7 +130,8 @@ public class WopiServiceImpl implements WopiService { accessDao.deleteAccess(access.getToken()); } - return accessDao.createAccess(vfsMetadata, identity, createToke(), getCanEdit(secCallback), secCallback.canClose(), secCallback.isVersionControlled(), expiresAt); + return accessDao.createAccess(vfsMetadata, identity, app, createToke(), getCanEdit(secCallback), + secCallback.canClose(), secCallback.isVersionControlled(), expiresAt); } private boolean accessUnchanged(Access access, DocEditorSecurityCallback secCallback) { diff --git a/src/main/java/org/olat/core/commons/services/doceditor/wopi/model/AccessImpl.java b/src/main/java/org/olat/core/commons/services/doceditor/wopi/model/AccessImpl.java index 7a1e7e604572048625c8ea2a68cf38b3153be539..cb508ad7d949d064a02a34338a02e47970080f9b 100644 --- a/src/main/java/org/olat/core/commons/services/doceditor/wopi/model/AccessImpl.java +++ b/src/main/java/org/olat/core/commons/services/doceditor/wopi/model/AccessImpl.java @@ -66,6 +66,8 @@ public class AccessImpl implements Access, Persistable { @Column(name="o_token", nullable=false, insertable=true, updatable=false) private String token; + @Column(name="o_app", nullable=false, insertable=true, updatable=false) + private String app; @Column(name="o_expires_at", nullable=true, insertable=true, updatable=true) private Date expiresAt; @Column(name="o_can_edit", nullable=false, insertable=true, updatable=false) @@ -119,6 +121,14 @@ public class AccessImpl implements Access, Persistable { this.token = token; } + public String getApp() { + return app; + } + + public void setApp(String app) { + this.app = app; + } + @Override public Date getExpiresAt() { return expiresAt; diff --git a/src/main/resources/database/mysql/alter_13_2_x_to_13_3_0.sql b/src/main/resources/database/mysql/alter_13_2_x_to_13_3_0.sql index 26476bca2b9865ffd09a7af8851abc7d215528fe..f3b30b1fb27601db36baab55e7f514fd30060211 100644 --- a/src/main/resources/database/mysql/alter_13_2_x_to_13_3_0.sql +++ b/src/main/resources/database/mysql/alter_13_2_x_to_13_3_0.sql @@ -114,6 +114,7 @@ create table o_wopi_access ( id bigint not null auto_increment, creationdate datetime not null, lastmodified datetime not null, + o_app varchar(64) not null, o_token varchar(64) not null, o_expires_at datetime, o_can_edit bool not null, @@ -127,7 +128,7 @@ create table o_wopi_access ( alter table o_wopi_access ENGINE = InnoDB; create unique index idx_wopi_token_idx on o_wopi_access(o_token); -create unique index idx_wopi_meta_ident_idx on o_wopi_access(fk_metadata, fk_identity); +create index idx_wopi_ident_meta_idx on o_wopi_access(fk_identity, fk_metadata); -- Adobe Connect diff --git a/src/main/resources/database/mysql/setupDatabase.sql b/src/main/resources/database/mysql/setupDatabase.sql index 972e0bf3b9197d8111d14b2280d3863dc553d18d..bd469a79139adcd025df63f7608b4277299f320e 100644 --- a/src/main/resources/database/mysql/setupDatabase.sql +++ b/src/main/resources/database/mysql/setupDatabase.sql @@ -1800,6 +1800,7 @@ create table o_wopi_access ( id bigint not null auto_increment, creationdate datetime not null, lastmodified datetime not null, + o_app varchar(64) not null, o_token varchar(64) not null, o_expires_at datetime, o_can_edit bool not null, @@ -3690,7 +3691,7 @@ alter table o_vfs_metadata add constraint fvers_to_lic_type_idx foreign key (fk_ -- WOPI create unique index idx_wopi_token_idx on o_wopi_access(o_token); -create unique index idx_wopi_meta_ident_idx on o_wopi_access(fk_metadata, fk_identity); +create index idx_wopi_ident_meta_idx on o_wopi_access(fk_identity, fk_metadata); -- quality management alter table o_qual_data_collection add constraint qual_dc_to_gen_idx foreign key (fk_generator) references o_qual_generator (id); diff --git a/src/main/resources/database/oracle/alter_13_2_x_to_13_3_0.sql b/src/main/resources/database/oracle/alter_13_2_x_to_13_3_0.sql index 79d127edc1cdb8491a786ae7d598c739d7182a55..10c0d65e31c3ba49f8d83570739a21994005b57a 100644 --- a/src/main/resources/database/oracle/alter_13_2_x_to_13_3_0.sql +++ b/src/main/resources/database/oracle/alter_13_2_x_to_13_3_0.sql @@ -115,6 +115,7 @@ create table o_wopi_access ( id number(20) generated always as identity, creationdate timestamp not null, lastmodified timestamp not null, + o_app varchar(64) not null, o_token varchar(64) not null, o_expires_at timestamp, o_can_edit number default 0 not null, @@ -126,7 +127,7 @@ create table o_wopi_access ( ); create unique index idx_wopi_token_idx on o_wopi_access(o_token); -create unique index idx_wopi_meta_ident_idx on o_wopi_access(fk_metadata, fk_identity); +create index idx_wopi_ident_meta_idx on o_wopi_access(fk_identity, fk_metadata); -- Adobe Connect diff --git a/src/main/resources/database/oracle/setupDatabase.sql b/src/main/resources/database/oracle/setupDatabase.sql index 6f757e0dcdef61b34574de46f89a4aa1599f9140..f2068a8eb61f142cd4126f3bcb719ffb538bed69 100644 --- a/src/main/resources/database/oracle/setupDatabase.sql +++ b/src/main/resources/database/oracle/setupDatabase.sql @@ -1726,6 +1726,7 @@ create table o_wopi_access ( id number(20) generated always as identity, creationdate timestamp not null, lastmodified timestamp not null, + o_app varchar(64) not null, o_token varchar(64) not null, o_expires_at timestamp, o_can_edit number default 0 not null, @@ -3719,7 +3720,7 @@ create index idx_fvers_to_lic_type_idx on o_vfs_revision (fk_license_type); -- WOPI create unique index idx_wopi_token_idx on o_wopi_access(o_token); -create unique index idx_wopi_meta_ident_idx on o_wopi_access(fk_metadata, fk_identity); +create index idx_wopi_ident_meta_idx on o_wopi_access(fk_identity, fk_metadata); -- portfolio alter table o_pf_binder add constraint pf_binder_resource_idx foreign key (fk_olatresource_id) references o_olatresource (resource_id); diff --git a/src/main/resources/database/postgresql/alter_13_2_x_to_13_3_0.sql b/src/main/resources/database/postgresql/alter_13_2_x_to_13_3_0.sql index b3d8e46401f6f9f61eb05614861eff5e96110d89..5695618bceb6fd49ae0a43df12e8b63d7e35d4a5 100644 --- a/src/main/resources/database/postgresql/alter_13_2_x_to_13_3_0.sql +++ b/src/main/resources/database/postgresql/alter_13_2_x_to_13_3_0.sql @@ -116,6 +116,7 @@ create table o_wopi_access ( id bigserial, creationdate timestamp not null, lastmodified timestamp not null, + o_app varchar(64) not null, o_token varchar(64) not null, o_expires_at timestamp, o_can_edit bool not null, @@ -127,7 +128,7 @@ create table o_wopi_access ( ); create unique index idx_wopi_token_idx on o_wopi_access(o_token); -create unique index idx_wopi_meta_ident_idx on o_wopi_access(fk_metadata, fk_identity); +create index idx_wopi_ident_meta_idx on o_wopi_access(fk_identity, fk_metadata); -- Adobe Connect create table o_aconnect_meeting ( diff --git a/src/main/resources/database/postgresql/setupDatabase.sql b/src/main/resources/database/postgresql/setupDatabase.sql index b3600043d83907768904f5be5f7f235d8b0891ea..d9b4360f378c0aaffb5f37f7d148d7a01a1e74a4 100644 --- a/src/main/resources/database/postgresql/setupDatabase.sql +++ b/src/main/resources/database/postgresql/setupDatabase.sql @@ -1693,6 +1693,7 @@ create table o_wopi_access ( id bigserial, creationdate timestamp not null, lastmodified timestamp not null, + o_app varchar(64) not null, o_token varchar(64) not null, o_expires_at timestamp, o_can_edit bool not null, @@ -3684,7 +3685,7 @@ create index idx_fvers_to_lic_type_idx on o_vfs_revision (fk_license_type); -- WOPI create unique index idx_wopi_token_idx on o_wopi_access(o_token); -create unique index idx_wopi_meta_ident_idx on o_wopi_access(fk_metadata, fk_identity); +create index idx_wopi_ident_meta_idx on o_wopi_access(fk_identity, fk_metadata); -- evaluation form alter table o_eva_form_survey add constraint eva_surv_to_surv_idx foreign key (fk_series_previous) references o_eva_form_survey (id); diff --git a/src/test/java/org/olat/core/commons/services/doceditor/wopi/manager/AccessDAOTest.java b/src/test/java/org/olat/core/commons/services/doceditor/wopi/manager/AccessDAOTest.java index efc4aab8e91e8584fc5a2b7608a3de2d4803a591..5f9ed5b77d2970765fde5f334021c2ead03af51b 100644 --- a/src/test/java/org/olat/core/commons/services/doceditor/wopi/manager/AccessDAOTest.java +++ b/src/test/java/org/olat/core/commons/services/doceditor/wopi/manager/AccessDAOTest.java @@ -64,13 +64,14 @@ public class AccessDAOTest extends OlatTestCase { public void shouldCreateAccess() { Identity identity = JunitTestHelper.createAndPersistIdentityAsRndUser("wopi"); VFSMetadata vfsMetadata = vfsMetadataDAO.createMetadata(random(), "relPath", "file.name", new Date(), 1000l, false, "", "file", null); + String app = random(); String token = random(); boolean canEdit = false; boolean canClose = true; boolean versionControlled = true; Date expiresAt = Date.from(Instant.now().plus(Duration.ofHours(23))); - Access access = sut.createAccess(vfsMetadata, identity, token, canEdit, canClose, versionControlled, expiresAt); + Access access = sut.createAccess(vfsMetadata, identity, app, token, canEdit, canClose, versionControlled, expiresAt); dbInstance.commitAndCloseSession(); SoftAssertions softly = new SoftAssertions(); @@ -90,7 +91,7 @@ public class AccessDAOTest extends OlatTestCase { public void shouldUpdateExpiresAt() { Identity identity = JunitTestHelper.createAndPersistIdentityAsRndUser("wopi"); VFSMetadata vfsMetadata = vfsMetadataDAO.createMetadata(random(), "relPath", "file.name", new Date(), 1000l, false, "", "file", null); - Access access = sut.createAccess(vfsMetadata, identity, random(), true, true, true, null); + Access access = sut.createAccess(vfsMetadata, identity, random(), random(), true, true, true, null); dbInstance.commitAndCloseSession(); Date expiresIn24Hours = Date.from(Instant.now().plus(Duration.ofHours(24))); @@ -99,7 +100,6 @@ public class AccessDAOTest extends OlatTestCase { assertThat(access.getExpiresAt()).isCloseTo(expiresIn24Hours, 2000); } - @Test public void shouldLoadAccessByToken() { @@ -125,11 +125,12 @@ public class AccessDAOTest extends OlatTestCase { Identity identity = JunitTestHelper.createAndPersistIdentityAsRndUser("wopi"); Identity identity2 = JunitTestHelper.createAndPersistIdentityAsRndUser("wopi2"); VFSMetadata vfsMetadata = vfsMetadataDAO.createMetadata(random(), "relPath", "file.name", new Date(), 1000l, false, "", "file", null); - Access access = sut.createAccess(vfsMetadata, identity, random(), true, true, true, null); - sut.createAccess(vfsMetadata, identity2, random(), true, true, true, null); + String app = random(); + Access access = sut.createAccess(vfsMetadata, identity, app, random(), true, true, true, null); + sut.createAccess(vfsMetadata, identity2, app, random(), true, true, true, null); dbInstance.commitAndCloseSession(); - Access reloadedAccess = sut.loadAccess(vfsMetadata, identity); + Access reloadedAccess = sut.loadAccess(vfsMetadata, identity, app); assertThat(reloadedAccess).isEqualTo(access); } @@ -148,11 +149,12 @@ public class AccessDAOTest extends OlatTestCase { private Access createRandomAccess() { Identity identity = JunitTestHelper.createAndPersistIdentityAsRndUser("wopi"); VFSMetadata vfsMetadata = vfsMetadataDAO.createMetadata(random(), "relPath", "file.name", new Date(), 1000l, false, "", "file", null); + String app = random(); String token = random(); boolean canEdit = false; boolean canClose = true; boolean versionControlled = true; - return sut.createAccess(vfsMetadata, identity, token, canEdit, canClose, versionControlled, null); + return sut.createAccess(vfsMetadata, identity, app, token, canEdit, canClose, versionControlled, null); } } diff --git a/src/test/java/org/olat/core/commons/services/doceditor/wopi/manager/WopiServiceTest.java b/src/test/java/org/olat/core/commons/services/doceditor/wopi/manager/WopiServiceTest.java index 032088511a0d596ec7a9cd5eb6f2cc3738623714..998c7d8da958fc6b39aa1284197d065691e1d098 100644 --- a/src/test/java/org/olat/core/commons/services/doceditor/wopi/manager/WopiServiceTest.java +++ b/src/test/java/org/olat/core/commons/services/doceditor/wopi/manager/WopiServiceTest.java @@ -70,25 +70,38 @@ public class WopiServiceTest extends OlatTestCase { VFSMetadata metadata = randomMetadata(); Identity identity = JunitTestHelper.createAndPersistIdentityAsRndUser("wopi"); DocEditorSecurityCallback secCallback = DocEditorSecurityCallbackBuilder.builder().build(); - Access access = sut.getOrCreateAccess(metadata, identity, secCallback, null); + Access access = sut.getOrCreateAccess(metadata, identity, secCallback, "App1", null); dbInstance.commitAndCloseSession(); - Access secondAccess = sut.getOrCreateAccess(metadata, identity, secCallback, null); + Access secondAccess = sut.getOrCreateAccess(metadata, identity, secCallback, "App1", null); dbInstance.commitAndCloseSession(); assertThat(secondAccess).isEqualTo(access); } + + @Test + public void shouldHaveFifferentAccessPerApp() { + VFSMetadata metadata = randomMetadata(); + Identity identity = JunitTestHelper.createAndPersistIdentityAsRndUser("wopi"); + DocEditorSecurityCallback secCallback = DocEditorSecurityCallbackBuilder.builder().build(); + + Access access1 = sut.getOrCreateAccess(metadata, identity, secCallback, "App1", null); + Access access2 = sut.getOrCreateAccess(metadata, identity, secCallback, "App2", null); + dbInstance.commitAndCloseSession(); + + assertThat(access1).isNotEqualTo(access2); + } @Test public void shouldNotReuseAccessIfModeChanged() { VFSMetadata metadata = randomMetadata(); Identity identity = JunitTestHelper.createAndPersistIdentityAsRndUser("wopi"); DocEditorSecurityCallback secCallback = DocEditorSecurityCallbackBuilder.builder().withMode(Mode.EDIT).build(); - Access access = sut.getOrCreateAccess(metadata, identity, secCallback, null); + Access access = sut.getOrCreateAccess(metadata, identity, secCallback, "App1", null); dbInstance.commitAndCloseSession(); DocEditorSecurityCallback secCallbackChanged = DocEditorSecurityCallbackBuilder.builder().withMode(Mode.VIEW).build(); - Access accessChanged = sut.getOrCreateAccess(metadata, identity, secCallbackChanged, null); + Access accessChanged = sut.getOrCreateAccess(metadata, identity, secCallbackChanged, "App1", null); dbInstance.commitAndCloseSession(); assertThat(accessChanged).isNotEqualTo(access); @@ -99,11 +112,11 @@ public class WopiServiceTest extends OlatTestCase { VFSMetadata metadata = randomMetadata(); Identity identity = JunitTestHelper.createAndPersistIdentityAsRndUser("wopi"); DocEditorSecurityCallback secCallback = DocEditorSecurityCallbackBuilder.builder().canClose(true).build(); - Access access = sut.getOrCreateAccess(metadata, identity, secCallback, null); + Access access = sut.getOrCreateAccess(metadata, identity, secCallback, "App1", null); dbInstance.commitAndCloseSession(); DocEditorSecurityCallback secCallbackChanged = DocEditorSecurityCallbackBuilder.builder().canClose(false).build(); - Access accessChanged = sut.getOrCreateAccess(metadata, identity, secCallbackChanged, null); + Access accessChanged = sut.getOrCreateAccess(metadata, identity, secCallbackChanged, "App1", null); dbInstance.commitAndCloseSession(); assertThat(accessChanged).isNotEqualTo(access); @@ -114,11 +127,11 @@ public class WopiServiceTest extends OlatTestCase { VFSMetadata metadata = randomMetadata(); Identity identity = JunitTestHelper.createAndPersistIdentityAsRndUser("wopi"); DocEditorSecurityCallback secCallback = DocEditorSecurityCallbackBuilder.builder().withVersionControlled(true).build(); - Access access = sut.getOrCreateAccess(metadata, identity, secCallback, null); + Access access = sut.getOrCreateAccess(metadata, identity, secCallback, "App1", null); dbInstance.commitAndCloseSession(); DocEditorSecurityCallback secCallbackChanged = DocEditorSecurityCallbackBuilder.builder().withVersionControlled(false).build(); - Access accessChanged = sut.getOrCreateAccess(metadata, identity, secCallbackChanged, null); + Access accessChanged = sut.getOrCreateAccess(metadata, identity, secCallbackChanged, "App1", null); dbInstance.commitAndCloseSession(); assertThat(accessChanged).isNotEqualTo(access); @@ -129,11 +142,11 @@ public class WopiServiceTest extends OlatTestCase { VFSMetadata metadata = randomMetadata(); Identity identity = JunitTestHelper.createAndPersistIdentityAsRndUser("wopi"); DocEditorSecurityCallback secCallback = DocEditorSecurityCallbackBuilder.builder().build(); - sut.getOrCreateAccess(metadata, identity, secCallback, null); + sut.getOrCreateAccess(metadata, identity, secCallback, "App1", null); dbInstance.commitAndCloseSession(); Date expiresIn24Hours = Date.from(Instant.now().plus(Duration.ofHours(24))); - Access secondAccess = sut.getOrCreateAccess(metadata, identity, secCallback, expiresIn24Hours); + Access secondAccess = sut.getOrCreateAccess(metadata, identity, secCallback, "App1", expiresIn24Hours); dbInstance.commitAndCloseSession(); assertThat(secondAccess.getExpiresAt()).isCloseTo(expiresIn24Hours, 2000); @@ -144,9 +157,9 @@ public class WopiServiceTest extends OlatTestCase { VFSMetadata metadata = randomMetadata(); Identity identity = JunitTestHelper.createAndPersistIdentityAsRndUser("wopi"); DocEditorSecurityCallback secCallback = DocEditorSecurityCallbackBuilder.builder().withMode(Mode.EDIT).build(); - Access access = sut.getOrCreateAccess(metadata, identity, secCallback, null); + Access access = sut.getOrCreateAccess(metadata, identity, secCallback, "App1", null); DocEditorSecurityCallback secCallbackChanged = DocEditorSecurityCallbackBuilder.builder().withMode(Mode.VIEW).build(); - sut.getOrCreateAccess(metadata, identity, secCallbackChanged, null); + sut.getOrCreateAccess(metadata, identity, secCallbackChanged, "App1", null); dbInstance.commitAndCloseSession(); Access reloadedAccess = sut.getAccess(access.getToken()); @@ -158,7 +171,7 @@ public class WopiServiceTest extends OlatTestCase { public void shouldGetAccessWithoutExpiredAt() { Identity identity = JunitTestHelper.createAndPersistIdentityAsRndUser("wopi"); DocEditorSecurityCallback secCallback = DocEditorSecurityCallbackBuilder.builder().build(); - Access access = sut.getOrCreateAccess(randomMetadata(), identity, secCallback, null); + Access access = sut.getOrCreateAccess(randomMetadata(), identity, secCallback, "App1", null); dbInstance.commitAndCloseSession(); Access reloadedAccess = sut.getAccess(access.getToken()); @@ -171,7 +184,7 @@ public class WopiServiceTest extends OlatTestCase { Identity identity = JunitTestHelper.createAndPersistIdentityAsRndUser("wopi"); DocEditorSecurityCallback secCallback = DocEditorSecurityCallbackBuilder.builder().build(); Date in24Hours = Date.from(Instant.now().plus(Duration.ofHours(24))); - Access access = sut.getOrCreateAccess(randomMetadata(), identity, secCallback, in24Hours); + Access access = sut.getOrCreateAccess(randomMetadata(), identity, secCallback, "App1", in24Hours); dbInstance.commitAndCloseSession(); Access reloadedAccess = sut.getAccess(access.getToken()); @@ -184,7 +197,7 @@ public class WopiServiceTest extends OlatTestCase { Identity identity = JunitTestHelper.createAndPersistIdentityAsRndUser("wopi"); DocEditorSecurityCallback secCallback = DocEditorSecurityCallbackBuilder.builder().build(); Date expired = Date.from(Instant.now().minus(Duration.ofHours(24))); - Access access = sut.getOrCreateAccess(randomMetadata(), identity, secCallback, expired); + Access access = sut.getOrCreateAccess(randomMetadata(), identity, secCallback, "App1", expired); dbInstance.commitAndCloseSession(); Access reloadedAccess = sut.getAccess(access.getToken());