diff --git a/application/src/main/java/run/halo/app/theme/SiteSettingVariablesAcquirer.java b/application/src/main/java/run/halo/app/theme/SiteSettingVariablesAcquirer.java index 4713fa7a9..d5145ae8e 100644 --- a/application/src/main/java/run/halo/app/theme/SiteSettingVariablesAcquirer.java +++ b/application/src/main/java/run/halo/app/theme/SiteSettingVariablesAcquirer.java @@ -28,7 +28,7 @@ public class SiteSettingVariablesAcquirer implements ViewContextBasedVariablesAc .filter(configMap -> configMap.getData() != null) .map(configMap -> { SiteSettingVo siteSettingVo = SiteSettingVo.from(configMap) - .withUrl(externalUrlSupplier.get()); + .withUrl(externalUrlSupplier.getURL(exchange.getRequest())); return Map.of("site", siteSettingVo); }); } diff --git a/application/src/main/java/run/halo/app/theme/finders/vo/SiteSettingVo.java b/application/src/main/java/run/halo/app/theme/finders/vo/SiteSettingVo.java index 1b0145f50..485ee1a11 100644 --- a/application/src/main/java/run/halo/app/theme/finders/vo/SiteSettingVo.java +++ b/application/src/main/java/run/halo/app/theme/finders/vo/SiteSettingVo.java @@ -1,6 +1,6 @@ package run.halo.app.theme.finders.vo; -import java.net.URI; +import java.net.URL; import java.util.Map; import lombok.Builder; import lombok.Value; @@ -23,7 +23,7 @@ public class SiteSettingVo { String title; @With - URI url; + URL url; String subtitle; diff --git a/application/src/test/java/run/halo/app/theme/SiteSettingVariablesAcquirerTest.java b/application/src/test/java/run/halo/app/theme/SiteSettingVariablesAcquirerTest.java index dc0e69f11..8fd8066ab 100644 --- a/application/src/test/java/run/halo/app/theme/SiteSettingVariablesAcquirerTest.java +++ b/application/src/test/java/run/halo/app/theme/SiteSettingVariablesAcquirerTest.java @@ -1,16 +1,18 @@ package run.halo.app.theme; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import java.net.URI; -import java.net.URISyntaxException; +import java.net.MalformedURLException; +import java.net.URL; import java.util.Map; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; import org.mockito.Mock; -import org.mockito.Mockito; import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Mono; @@ -37,23 +39,24 @@ public class SiteSettingVariablesAcquirerTest { private SiteSettingVariablesAcquirer siteSettingVariablesAcquirer; @Test - void acquire() throws URISyntaxException { - ConfigMap configMap = new ConfigMap(); + void acquireWhenExternalUrlSet() throws MalformedURLException { + var configMap = new ConfigMap(); configMap.setData(Map.of()); - URI uri = new URI("https://halo.run"); - when(externalUrlSupplier.get()).thenReturn(uri); + var url = new URL("https://halo.run"); + when(externalUrlSupplier.getURL(any())).thenReturn(url); when(environmentFetcher.getConfigMap()).thenReturn(Mono.just(configMap)); - siteSettingVariablesAcquirer.acquire(Mockito.mock(ServerWebExchange.class)) + siteSettingVariablesAcquirer.acquire(mock(ServerWebExchange.class)) .as(StepVerifier::create) .consumeNextWith(result -> { assertThat(result).containsKey("site"); assertThat(result.get("site")).isInstanceOf(SiteSettingVo.class); assertThat((SiteSettingVo) result.get("site")) .extracting(SiteSettingVo::getUrl) - .isEqualTo(uri); + .isEqualTo(url); }) .verifyComplete(); + verify(externalUrlSupplier).getURL(any()); } }