暂存提交

This commit is contained in:
2026-07-31 16:53:07 +08:00
parent 45358ef40f
commit 704cb15ccf
98 changed files with 1944 additions and 134 deletions
@@ -1,5 +1,6 @@
package com.baiyue.file.controller;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
@@ -9,6 +10,7 @@ import java.util.Arrays;
import static org.junit.jupiter.api.Assertions.assertTrue;
@DisplayName("企业资质文件接口契约功能")
class QualificationFileContractTest {
@Test
@@ -1,6 +1,8 @@
package com.baiyue.file.service;
import com.baiyue.common.core.exception.BizException;
import com.baiyue.common.core.api.ResultCode;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
import org.springframework.mock.web.MockMultipartFile;
@@ -12,6 +14,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
@DisplayName("本地企业资质文件存储功能")
class LocalQualificationStorageTest {
@TempDir
@@ -20,6 +23,7 @@ class LocalQualificationStorageTest {
@Test
void storeReturnsFileServiceUrlBackedByARealTenantFile() throws Exception {
var storage = new LocalQualificationStorage(storageRoot.toString());
storage.initialize();
byte[] png = {(byte) 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x01};
var upload = new MockMultipartFile("file", "license.png", "image/png", png);
@@ -39,4 +43,29 @@ class LocalQualificationStorageTest {
assertThrows(BizException.class,
() -> storage.load(10001L, "demo-business-license.jpg"));
}
@Test
void invalidStorageFailsFastDuringStartup() throws Exception {
Path invalidRoot = storageRoot.resolve("root-is-file");
Files.writeString(invalidRoot, "not-a-directory");
var storage = new LocalQualificationStorage(invalidRoot.toString());
IllegalStateException exception = assertThrows(IllegalStateException.class, storage::initialize);
assertTrue(exception.getMessage().contains("存储根目录不可用"));
}
@Test
void writeFailureReturnsServiceUnavailableInsteadOfBusinessError() throws Exception {
var storage = new LocalQualificationStorage(storageRoot.toString());
storage.initialize();
Files.writeString(storageRoot.resolve("qualifications"), "阻止创建租户目录");
byte[] png = {(byte) 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x01};
var upload = new MockMultipartFile("file", "license.png", "image/png", png);
BizException exception = assertThrows(BizException.class,
() -> storage.store(10001L, upload));
assertEquals(ResultCode.SERVICE_UNAVAILABLE, exception.getResultCode());
}
}