feat: Add RequestUrlUtils for building base URLs and refactor OutdoorFairController to use it

This commit is contained in:
2026-07-14 21:13:57 +08:00
parent 80caa84a59
commit 4306862ece
5 changed files with 237 additions and 14 deletions

View File

@@ -0,0 +1,65 @@
package com.ruoyi.cms.controller.cms;
import org.junit.jupiter.api.Test;
import org.springframework.mock.web.MockHttpServletRequest;
import java.lang.reflect.Method;
import static org.junit.jupiter.api.Assertions.assertEquals;
class OutdoorFairControllerTest
{
@Test
void companyQrCodeUrlUsesPublicForwardedHost() throws Exception
{
MockHttpServletRequest request = new MockHttpServletRequest();
request.setScheme("http");
request.setServerName("127.0.0.1");
request.setServerPort(9091);
request.addHeader("X-Forwarded-Proto", "http");
request.addHeader("X-Forwarded-Host", "39.98.44.136");
request.addHeader("X-Forwarded-Port", "6024");
assertEquals(
"http://39.98.44.136:6024/h5/outdoor-fair/company.html?fairId=12&companyId=34",
buildCompanyH5Url(request, 12L, 34L));
}
@Test
void companyQrCodeUrlUsesStandardForwardedHeader() throws Exception
{
MockHttpServletRequest request = new MockHttpServletRequest();
request.setScheme("http");
request.setServerName("127.0.0.1");
request.setServerPort(9091);
request.addHeader("Forwarded", "for=192.0.2.10;proto=https;host=jobs.example.com:8443");
assertEquals(
"https://jobs.example.com:8443/h5/outdoor-fair/company.html?fairId=12&companyId=34",
buildCompanyH5Url(request, 12L, 34L));
}
@Test
void companyQrCodeUrlUsesHostHeaderWithoutForwardedHeaders() throws Exception
{
MockHttpServletRequest request = new MockHttpServletRequest();
request.setScheme("https");
request.setServerName("127.0.0.1");
request.setServerPort(9091);
request.addHeader("Host", "jobs.example.com");
assertEquals(
"https://jobs.example.com/h5/outdoor-fair/company.html?fairId=12&companyId=34",
buildCompanyH5Url(request, 12L, 34L));
}
private String buildCompanyH5Url(MockHttpServletRequest request, Long fairId, Long companyId)
throws Exception
{
OutdoorFairController controller = new OutdoorFairController();
Method method = OutdoorFairController.class.getDeclaredMethod(
"buildOutdoorFairCompanyH5Url", javax.servlet.http.HttpServletRequest.class, Long.class, Long.class);
method.setAccessible(true);
return (String) method.invoke(controller, request, fairId, companyId);
}
}