feat(admin): show storage policies

This commit is contained in:
yoyuzh
2026-04-08 21:54:22 +08:00
parent 3e67760712
commit c5362ebe31
14 changed files with 282 additions and 3 deletions

View File

@@ -320,11 +320,33 @@ class AdminControllerIntegrationTest {
.andExpect(jsonPath("$.code").value(0));
}
@Test
@WithMockUser(username = "admin")
void shouldAllowConfiguredAdminToListStoragePolicies() throws Exception {
mockMvc.perform(get("/api/admin/storage-policies"))
.andExpect(status().isOk())
.andExpect(jsonPath("$.code").value(0))
.andExpect(jsonPath("$.data.length()", greaterThanOrEqualTo(1)))
.andExpect(jsonPath("$.data[0].name").value("Default Local Storage"))
.andExpect(jsonPath("$.data[0].type").value("LOCAL"))
.andExpect(jsonPath("$.data[0].enabled").value(true))
.andExpect(jsonPath("$.data[0].defaultPolicy").value(true))
.andExpect(jsonPath("$.data[0].capabilities.directUpload").value(false))
.andExpect(jsonPath("$.data[0].capabilities.multipartUpload").value(false))
.andExpect(jsonPath("$.data[0].capabilities.serverProxyDownload").value(true))
.andExpect(jsonPath("$.data[0].capabilities.requiresCors").value(false))
.andExpect(jsonPath("$.data[0].maxSizeBytes").isNumber());
}
@Test
@WithMockUser(username = "portal-user")
void shouldRejectNonAdminUser() throws Exception {
mockMvc.perform(get("/api/admin/users?page=0&size=10"))
.andExpect(status().isForbidden())
.andExpect(jsonPath("$.msg").value("没有权限访问该资源"));
mockMvc.perform(get("/api/admin/storage-policies"))
.andExpect(status().isForbidden())
.andExpect(jsonPath("$.msg").value("没有权限访问该资源"));
}
}

View File

@@ -12,6 +12,8 @@ import com.yoyuzh.files.FileBlobRepository;
import com.yoyuzh.files.FileService;
import com.yoyuzh.files.StoredFile;
import com.yoyuzh.files.StoredFileRepository;
import com.yoyuzh.files.StoragePolicyRepository;
import com.yoyuzh.files.StoragePolicyService;
import com.yoyuzh.transfer.OfflineTransferSessionRepository;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -56,6 +58,10 @@ class AdminServiceTest {
private OfflineTransferSessionRepository offlineTransferSessionRepository;
@Mock
private AdminMetricsService adminMetricsService;
@Mock
private StoragePolicyRepository storagePolicyRepository;
@Mock
private StoragePolicyService storagePolicyService;
private AdminService adminService;
@@ -64,7 +70,8 @@ class AdminServiceTest {
adminService = new AdminService(
userRepository, storedFileRepository, fileBlobRepository, fileService,
passwordEncoder, refreshTokenService, registrationInviteService,
offlineTransferSessionRepository, adminMetricsService);
offlineTransferSessionRepository, adminMetricsService,
storagePolicyRepository, storagePolicyService);
}
// --- getSummary ---