2026-06-30 24681c81c09022f584a57006f2534b5f74723414
yudao-module-infra/src/test/java/cn/iocoder/yudao/module/infra/framework/file/core/local/LocalFileClientTest.java
@@ -1,15 +1,71 @@
package cn.iocoder.yudao.module.infra.framework.file.core.local;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.resource.ResourceUtil;
import cn.hutool.core.util.IdUtil;
import cn.iocoder.yudao.framework.common.exception.ServiceException;
import cn.iocoder.yudao.module.infra.framework.file.core.client.local.LocalFileClient;
import cn.iocoder.yudao.module.infra.framework.file.core.client.local.LocalFileClientConfig;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
import java.io.File;
import java.nio.charset.StandardCharsets;
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString;
import static org.junit.jupiter.api.Assertions.*;
public class LocalFileClientTest {
    @TempDir
    public File tempDir;
    @Test
    public void testUpload_success() {
        // 准备参数
        LocalFileClient client = createClient();
        byte[] content = "test".getBytes(StandardCharsets.UTF_8);
        String path = "avatar/test.txt";
        // 调用
        String url = client.upload(content, path, "text/plain");
        // 断言
        assertEquals("http://127.0.0.1:48080/admin-api/infra/file/0/get/avatar/test.txt", url);
        assertArrayEquals(content, FileUtil.readBytes(new File(tempDir, path)));
        assertArrayEquals(content, client.getContent(path));
        // 删除
        client.delete(path);
        assertFalse(FileUtil.exist(new File(tempDir, path)));
    }
    @Test
    public void testUpload_encodeUrlPath() {
        // 准备参数
        LocalFileClient client = createClient();
        byte[] content = "test".getBytes(StandardCharsets.UTF_8);
        String path = "avatar/中文 100%+文件.txt";
        // 调用
        String url = client.upload(content, path, "text/plain");
        // 断言
        assertEquals("http://127.0.0.1:48080/admin-api/infra/file/0/get/avatar/%E4%B8%AD%E6%96%87%20100%25+%E6%96%87%E4%BB%B6.txt", url);
        assertArrayEquals(content, FileUtil.readBytes(new File(tempDir, path)));
    }
    @Test
    public void testUpload_pathInvalid() {
        // 准备参数
        LocalFileClient client = createClient();
        byte[] content = "test".getBytes(StandardCharsets.UTF_8);
        // 调用,并断言异常
        assertThrows(ServiceException.class, () -> client.upload(content, "../test.txt", "text/plain"));
        assertFalse(FileUtil.exist(new File(tempDir.getParentFile(), "test.txt")));
    }
    @Test
    @Disabled
@@ -42,4 +98,13 @@
        System.out.println();
    }
    private LocalFileClient createClient() {
        LocalFileClientConfig config = new LocalFileClientConfig();
        config.setDomain("http://127.0.0.1:48080");
        config.setBasePath(tempDir.getAbsolutePath());
        LocalFileClient client = new LocalFileClient(0L, config);
        client.init();
        return client;
    }
}