From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master
---
jnpf-dms/jnpf-dms-biz/src/test/java/jnpf/dmsPermission/DmsAccessExclusionResolverTest.java | 88 ++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 88 insertions(+), 0 deletions(-)
diff --git a/jnpf-dms/jnpf-dms-biz/src/test/java/jnpf/dmsPermission/DmsAccessExclusionResolverTest.java b/jnpf-dms/jnpf-dms-biz/src/test/java/jnpf/dmsPermission/DmsAccessExclusionResolverTest.java
new file mode 100644
index 0000000..85b5daa
--- /dev/null
+++ b/jnpf-dms/jnpf-dms-biz/src/test/java/jnpf/dmsPermission/DmsAccessExclusionResolverTest.java
@@ -0,0 +1,88 @@
+package jnpf.dmsPermission;
+
+import jnpf.dmsEntity.permission.entity.DmsAccessExclusionEntity;
+import jnpf.dmsEntity.permission.model.DmsResourcePath;
+import jnpf.dmsMapper.DmsAccessExclusionMapper;
+import org.junit.jupiter.api.Test;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.UUID;
+
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.ArgumentMatchers.anyList;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+class DmsAccessExclusionResolverTest {
+
+ @Test
+ void documentExclusionCoversDocumentAndAllVersions() {
+ DmsAccessExclusionMapper mapper = mock(DmsAccessExclusionMapper.class);
+ DmsAccessExclusionResolver resolver = new DmsAccessExclusionResolver(mapper);
+ UUID documentId = UUID.randomUUID();
+ UUID versionOneId = UUID.randomUUID();
+ UUID versionTwoId = UUID.randomUUID();
+ when(mapper.selectActiveForResourceIds(eq("tenant-1"), eq("user-1"), anyList()))
+ .thenReturn(Collections.singletonList(exclusion("DOCUMENT", documentId)));
+
+ DmsResourcePath document = document(documentId);
+ DmsResourcePath versionOne = version(documentId, versionOneId);
+ DmsResourcePath versionTwo = version(documentId, versionTwoId);
+ DmsAccessExclusionResolver.Snapshot snapshot = resolver.resolve(
+ "tenant-1", "user-1", Arrays.asList(document, versionOne, versionTwo));
+
+ assertTrue(snapshot.excludes(document));
+ assertTrue(snapshot.excludes(versionOne));
+ assertTrue(snapshot.excludes(versionTwo));
+ verify(mapper).selectActiveForResourceIds(eq("tenant-1"), eq("user-1"), anyList());
+ }
+
+ @Test
+ void fileVersionExclusionOnlyCoversSpecifiedVersion() {
+ DmsAccessExclusionMapper mapper = mock(DmsAccessExclusionMapper.class);
+ DmsAccessExclusionResolver resolver = new DmsAccessExclusionResolver(mapper);
+ UUID documentId = UUID.randomUUID();
+ UUID excludedVersionId = UUID.randomUUID();
+ UUID visibleVersionId = UUID.randomUUID();
+ when(mapper.selectActiveForResourceIds(eq("tenant-1"), eq("user-1"), anyList()))
+ .thenReturn(Collections.singletonList(exclusion("FILE_VERSION", excludedVersionId)));
+
+ DmsResourcePath document = document(documentId);
+ DmsResourcePath excludedVersion = version(documentId, excludedVersionId);
+ DmsResourcePath visibleVersion = version(documentId, visibleVersionId);
+ DmsAccessExclusionResolver.Snapshot snapshot = resolver.resolve(
+ "tenant-1", "user-1", List.of(document, excludedVersion, visibleVersion));
+
+ assertFalse(snapshot.excludes(document));
+ assertTrue(snapshot.excludes(excludedVersion));
+ assertFalse(snapshot.excludes(visibleVersion));
+ }
+
+ private DmsAccessExclusionEntity exclusion(String resourceType, UUID resourceId) {
+ DmsAccessExclusionEntity result = new DmsAccessExclusionEntity();
+ result.setResourceType(resourceType);
+ result.setResourceId(resourceId);
+ return result;
+ }
+
+ private DmsResourcePath document(UUID documentId) {
+ DmsResourcePath path = new DmsResourcePath();
+ path.setActualResourceType("DOCUMENT");
+ path.setActualResourceId(documentId);
+ path.setDocumentId(documentId);
+ return path;
+ }
+
+ private DmsResourcePath version(UUID documentId, UUID versionId) {
+ DmsResourcePath path = new DmsResourcePath();
+ path.setActualResourceType("FILE_VERSION");
+ path.setActualResourceId(versionId);
+ path.setDocumentId(documentId);
+ return path;
+ }
+}
--
Gitblit v1.8.0