package tech.easyflow.log.reporter;

import jakarta.servlet.FilterChain;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.junit.Test;

import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

/**
 * {@link ResponseCachingFilter} 路径排除行为测试。
 */
public class ResponseCachingFilterTest {

    /**
     * 验证 Agent 媒体下载保持原始响应，避免缓存包装器截断异步文件流。
     *
     * @throws Exception Filter 执行失败
     */
    @Test
    public void agentMediaDownloadShouldBypassResponseCaching() throws Exception {
        HttpServletRequest request = mock(HttpServletRequest.class);
        HttpServletResponse response = mock(HttpServletResponse.class);
        FilterChain chain = mock(FilterChain.class);
        when(request.getMethod()).thenReturn("GET");
        when(request.getRequestURI()).thenReturn("/api/v1/agent/media/document/content");

        ResponseCachingFilter filter = new ResponseCachingFilter(new ActionLogReporterProperties());
        filter.doFilter(request, response, chain);

        verify(chain).doFilter(request, response);
    }
}
