Browse Source
Remove `LocalHostWebClient` and `LocalHostWebConnectionHtmlUnitDriver` in favor of `BaseUrl` versions. See gh-46356 See gh-47322pull/47381/head
6 changed files with 0 additions and 399 deletions
@ -1,53 +0,0 @@
@@ -1,53 +0,0 @@
|
||||
/* |
||||
* Copyright 2012-present the original author or authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.boot.web.server.test.htmlunit; |
||||
|
||||
import java.io.IOException; |
||||
|
||||
import org.htmlunit.FailingHttpStatusCodeException; |
||||
import org.htmlunit.Page; |
||||
import org.htmlunit.WebClient; |
||||
|
||||
import org.springframework.core.env.Environment; |
||||
import org.springframework.util.Assert; |
||||
|
||||
/** |
||||
* {@link WebClient} will automatically prefix relative URLs with |
||||
* <code>localhost:${local.server.port}</code>. |
||||
* |
||||
* @author Phillip Webb |
||||
* @since 4.0.0 |
||||
*/ |
||||
public class LocalHostWebClient extends WebClient { |
||||
|
||||
private final Environment environment; |
||||
|
||||
public LocalHostWebClient(Environment environment) { |
||||
Assert.notNull(environment, "'environment' must not be null"); |
||||
this.environment = environment; |
||||
} |
||||
|
||||
@Override |
||||
public <P extends Page> P getPage(String url) throws IOException, FailingHttpStatusCodeException { |
||||
if (url.startsWith("/")) { |
||||
String port = this.environment.getProperty("local.server.port", "8080"); |
||||
url = "http://localhost:" + port + url; |
||||
} |
||||
return super.getPage(url); |
||||
} |
||||
|
||||
} |
||||
@ -1,23 +0,0 @@
@@ -1,23 +0,0 @@
|
||||
/* |
||||
* Copyright 2012-present the original author or authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
/** |
||||
* HtmlUnit support classes. |
||||
*/ |
||||
@NullMarked |
||||
package org.springframework.boot.web.server.test.htmlunit; |
||||
|
||||
import org.jspecify.annotations.NullMarked; |
||||
@ -1,69 +0,0 @@
@@ -1,69 +0,0 @@
|
||||
/* |
||||
* Copyright 2012-present the original author or authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.boot.web.server.test.htmlunit.webdriver; |
||||
|
||||
import org.htmlunit.BrowserVersion; |
||||
import org.openqa.selenium.Capabilities; |
||||
|
||||
import org.springframework.core.env.Environment; |
||||
import org.springframework.test.web.servlet.htmlunit.webdriver.WebConnectionHtmlUnitDriver; |
||||
import org.springframework.util.Assert; |
||||
|
||||
/** |
||||
* {@link LocalHostWebConnectionHtmlUnitDriver} will automatically prefix relative URLs |
||||
* with <code>localhost:${local.server.port}</code>. |
||||
* |
||||
* @author Phillip Webb |
||||
* @since 4.0.0 |
||||
*/ |
||||
public class LocalHostWebConnectionHtmlUnitDriver extends WebConnectionHtmlUnitDriver { |
||||
|
||||
private final Environment environment; |
||||
|
||||
public LocalHostWebConnectionHtmlUnitDriver(Environment environment) { |
||||
Assert.notNull(environment, "'environment' must not be null"); |
||||
this.environment = environment; |
||||
} |
||||
|
||||
public LocalHostWebConnectionHtmlUnitDriver(Environment environment, boolean enableJavascript) { |
||||
super(enableJavascript); |
||||
Assert.notNull(environment, "'environment' must not be null"); |
||||
this.environment = environment; |
||||
} |
||||
|
||||
public LocalHostWebConnectionHtmlUnitDriver(Environment environment, BrowserVersion browserVersion) { |
||||
super(browserVersion); |
||||
Assert.notNull(environment, "'environment' must not be null"); |
||||
this.environment = environment; |
||||
} |
||||
|
||||
public LocalHostWebConnectionHtmlUnitDriver(Environment environment, Capabilities capabilities) { |
||||
super(capabilities); |
||||
Assert.notNull(environment, "'environment' must not be null"); |
||||
this.environment = environment; |
||||
} |
||||
|
||||
@Override |
||||
public void get(String url) { |
||||
if (url.startsWith("/")) { |
||||
String port = this.environment.getProperty("local.server.port", "8080"); |
||||
url = "http://localhost:" + port + url; |
||||
} |
||||
super.get(url); |
||||
} |
||||
|
||||
} |
||||
@ -1,23 +0,0 @@
@@ -1,23 +0,0 @@
|
||||
/* |
||||
* Copyright 2012-present the original author or authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
/** |
||||
* Selenium support classes. |
||||
*/ |
||||
@NullMarked |
||||
package org.springframework.boot.web.server.test.htmlunit.webdriver; |
||||
|
||||
import org.jspecify.annotations.NullMarked; |
||||
@ -1,87 +0,0 @@
@@ -1,87 +0,0 @@
|
||||
/* |
||||
* Copyright 2012-present the original author or authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.boot.web.server.test.htmlunit; |
||||
|
||||
import java.io.IOException; |
||||
import java.net.URL; |
||||
|
||||
import org.htmlunit.StringWebResponse; |
||||
import org.htmlunit.WebClient; |
||||
import org.htmlunit.WebConnection; |
||||
import org.htmlunit.WebResponse; |
||||
import org.junit.jupiter.api.Test; |
||||
import org.junit.jupiter.api.extension.ExtendWith; |
||||
import org.mockito.junit.jupiter.MockitoExtension; |
||||
|
||||
import org.springframework.mock.env.MockEnvironment; |
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat; |
||||
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException; |
||||
import static org.mockito.ArgumentMatchers.any; |
||||
import static org.mockito.ArgumentMatchers.assertArg; |
||||
import static org.mockito.BDDMockito.given; |
||||
import static org.mockito.BDDMockito.then; |
||||
import static org.mockito.Mockito.mock; |
||||
|
||||
/** |
||||
* Tests for {@link LocalHostWebClient}. |
||||
* |
||||
* @author Phillip Webb |
||||
*/ |
||||
@SuppressWarnings("resource") |
||||
@ExtendWith(MockitoExtension.class) |
||||
class LocalHostWebClientTests { |
||||
|
||||
@Test |
||||
void createWhenEnvironmentIsNullWillThrowException() { |
||||
assertThatIllegalArgumentException().isThrownBy(() -> new LocalHostWebClient(null)) |
||||
.withMessageContaining("'environment' must not be null"); |
||||
} |
||||
|
||||
@Test |
||||
void getPageWhenUrlIsRelativeAndNoPortWillUseLocalhost8080() throws Exception { |
||||
MockEnvironment environment = new MockEnvironment(); |
||||
WebClient client = new LocalHostWebClient(environment); |
||||
WebConnection connection = mockConnection(); |
||||
client.setWebConnection(connection); |
||||
client.getPage("/test"); |
||||
URL expectedUrl = new URL("http://localhost:8080/test"); |
||||
then(connection).should() |
||||
.getResponse(assertArg((request) -> assertThat(request.getUrl()).isEqualTo(expectedUrl))); |
||||
} |
||||
|
||||
@Test |
||||
void getPageWhenUrlIsRelativeAndHasPortWillUseLocalhostPort() throws Exception { |
||||
MockEnvironment environment = new MockEnvironment(); |
||||
environment.setProperty("local.server.port", "8181"); |
||||
WebClient client = new LocalHostWebClient(environment); |
||||
WebConnection connection = mockConnection(); |
||||
client.setWebConnection(connection); |
||||
client.getPage("/test"); |
||||
URL expectedUrl = new URL("http://localhost:8181/test"); |
||||
then(connection).should() |
||||
.getResponse(assertArg((request) -> assertThat(request.getUrl()).isEqualTo(expectedUrl))); |
||||
} |
||||
|
||||
private WebConnection mockConnection() throws IOException { |
||||
WebConnection connection = mock(WebConnection.class); |
||||
WebResponse response = new StringWebResponse("test", new URL("http://localhost")); |
||||
given(connection.getResponse(any())).willReturn(response); |
||||
return connection; |
||||
} |
||||
|
||||
} |
||||
@ -1,144 +0,0 @@
@@ -1,144 +0,0 @@
|
||||
/* |
||||
* Copyright 2012-present the original author or authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.boot.web.server.test.htmlunit.webdriver; |
||||
|
||||
import java.net.URL; |
||||
|
||||
import org.htmlunit.BrowserVersion; |
||||
import org.htmlunit.TopLevelWindow; |
||||
import org.htmlunit.WebClient; |
||||
import org.htmlunit.WebClientOptions; |
||||
import org.htmlunit.WebConsole; |
||||
import org.htmlunit.WebRequest; |
||||
import org.htmlunit.WebWindow; |
||||
import org.junit.jupiter.api.Test; |
||||
import org.junit.jupiter.api.extension.ExtendWith; |
||||
import org.mockito.ArgumentMatcher; |
||||
import org.mockito.Mock; |
||||
import org.mockito.junit.jupiter.MockitoExtension; |
||||
import org.openqa.selenium.Capabilities; |
||||
|
||||
import org.springframework.core.env.Environment; |
||||
import org.springframework.mock.env.MockEnvironment; |
||||
|
||||
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException; |
||||
import static org.mockito.ArgumentMatchers.any; |
||||
import static org.mockito.ArgumentMatchers.argThat; |
||||
import static org.mockito.BDDMockito.given; |
||||
import static org.mockito.BDDMockito.then; |
||||
import static org.mockito.Mockito.mock; |
||||
|
||||
/** |
||||
* Tests for {@link LocalHostWebConnectionHtmlUnitDriver}. |
||||
* |
||||
* @author Phillip Webb |
||||
*/ |
||||
@ExtendWith(MockitoExtension.class) |
||||
class LocalHostWebConnectionHtmlUnitDriverTests { |
||||
|
||||
private final WebClient webClient; |
||||
|
||||
LocalHostWebConnectionHtmlUnitDriverTests(@Mock WebClient webClient) { |
||||
this.webClient = webClient; |
||||
given(this.webClient.getOptions()).willReturn(new WebClientOptions()); |
||||
given(this.webClient.getWebConsole()).willReturn(new WebConsole()); |
||||
WebWindow currentWindow = mock(WebWindow.class); |
||||
given(currentWindow.isClosed()).willReturn(false); |
||||
given(this.webClient.getCurrentWindow()).willReturn(currentWindow); |
||||
} |
||||
|
||||
@Test |
||||
void createWhenEnvironmentIsNullWillThrowException() { |
||||
assertThatIllegalArgumentException().isThrownBy(() -> new LocalHostWebConnectionHtmlUnitDriver(null)) |
||||
.withMessageContaining("'environment' must not be null"); |
||||
} |
||||
|
||||
@Test |
||||
void createWithJavascriptFlagWhenEnvironmentIsNullWillThrowException() { |
||||
assertThatIllegalArgumentException().isThrownBy(() -> new LocalHostWebConnectionHtmlUnitDriver(null, true)) |
||||
.withMessageContaining("'environment' must not be null"); |
||||
} |
||||
|
||||
@Test |
||||
void createWithBrowserVersionWhenEnvironmentIsNullWillThrowException() { |
||||
assertThatIllegalArgumentException() |
||||
.isThrownBy(() -> new LocalHostWebConnectionHtmlUnitDriver(null, BrowserVersion.CHROME)) |
||||
.withMessageContaining("'environment' must not be null"); |
||||
} |
||||
|
||||
@Test |
||||
void createWithCapabilitiesWhenEnvironmentIsNullWillThrowException() { |
||||
Capabilities capabilities = mock(Capabilities.class); |
||||
given(capabilities.getBrowserName()).willReturn("htmlunit"); |
||||
given(capabilities.getBrowserVersion()).willReturn("chrome"); |
||||
assertThatIllegalArgumentException() |
||||
.isThrownBy(() -> new LocalHostWebConnectionHtmlUnitDriver(null, capabilities)) |
||||
.withMessageContaining("'environment' must not be null"); |
||||
} |
||||
|
||||
@Test |
||||
void getWhenUrlIsRelativeAndNoPortWillUseLocalhost8080() throws Exception { |
||||
MockEnvironment environment = new MockEnvironment(); |
||||
LocalHostWebConnectionHtmlUnitDriver driver = new TestLocalHostWebConnectionHtmlUnitDriver(environment); |
||||
driver.get("/test"); |
||||
then(this.webClient).should() |
||||
.getPage(any(TopLevelWindow.class), requestToUrl(new URL("http://localhost:8080/test"))); |
||||
} |
||||
|
||||
@Test |
||||
void getWhenUrlIsRelativeAndHasPortWillUseLocalhostPort() throws Exception { |
||||
MockEnvironment environment = new MockEnvironment(); |
||||
environment.setProperty("local.server.port", "8181"); |
||||
LocalHostWebConnectionHtmlUnitDriver driver = new TestLocalHostWebConnectionHtmlUnitDriver(environment); |
||||
driver.get("/test"); |
||||
then(this.webClient).should() |
||||
.getPage(any(TopLevelWindow.class), requestToUrl(new URL("http://localhost:8181/test"))); |
||||
} |
||||
|
||||
private WebRequest requestToUrl(URL url) { |
||||
return argThat(new WebRequestUrlArgumentMatcher(url)); |
||||
} |
||||
|
||||
public class TestLocalHostWebConnectionHtmlUnitDriver extends LocalHostWebConnectionHtmlUnitDriver { |
||||
|
||||
TestLocalHostWebConnectionHtmlUnitDriver(Environment environment) { |
||||
super(environment); |
||||
} |
||||
|
||||
@Override |
||||
public WebClient getWebClient() { |
||||
return LocalHostWebConnectionHtmlUnitDriverTests.this.webClient; |
||||
} |
||||
|
||||
} |
||||
|
||||
private static final class WebRequestUrlArgumentMatcher implements ArgumentMatcher<WebRequest> { |
||||
|
||||
private final URL expectedUrl; |
||||
|
||||
private WebRequestUrlArgumentMatcher(URL expectedUrl) { |
||||
this.expectedUrl = expectedUrl; |
||||
} |
||||
|
||||
@Override |
||||
public boolean matches(WebRequest argument) { |
||||
return argument.getUrl().equals(this.expectedUrl); |
||||
} |
||||
|
||||
} |
||||
|
||||
} |
||||
Loading…
Reference in new issue