diff --git a/bup/src/main/java/eu/tsystems/mms/tic/testerra/bup/BrowserUpRemoteProxyManager.java b/bup/src/main/java/eu/tsystems/mms/tic/testerra/bup/BrowserUpRemoteProxyManager.java index bb0384d1c..2d31b0d81 100644 --- a/bup/src/main/java/eu/tsystems/mms/tic/testerra/bup/BrowserUpRemoteProxyManager.java +++ b/bup/src/main/java/eu/tsystems/mms/tic/testerra/bup/BrowserUpRemoteProxyManager.java @@ -108,9 +108,12 @@ public List getProxies() { * Calls POST /proxy with parameters * * @return BrowserUpRemoteProxyServer object. + * @deprecated Use {@link #startServer(BrowserUpRemoteProxyServer)} instead */ public BrowserUpRemoteProxyServer startServer() { - return startServer(new BrowserUpRemoteProxyServer()); + BrowserUpRemoteProxyServer browserUpRemoteProxyServer = new BrowserUpRemoteProxyServer(); + startServer(browserUpRemoteProxyServer); + return browserUpRemoteProxyServer; } /** @@ -119,7 +122,7 @@ public BrowserUpRemoteProxyServer startServer() { * @param proxyServer {@link BrowserUpRemoteProxyServer} * @return BrowserUpRemoteProxyServer */ - public BrowserUpRemoteProxyServer startServer(BrowserUpRemoteProxyServer proxyServer) { + public void startServer(BrowserUpRemoteProxyServer proxyServer) { final URIBuilder startServerUriBuilder = url().setPath("/proxy"); @@ -128,7 +131,6 @@ public BrowserUpRemoteProxyServer startServer(BrowserUpRemoteProxyServer proxySe // Check if port already in use... if (this.isRunning(proxyServer)) { log().info("Remote proxy session already running on this port."); - return proxyServer; } // Set port to start proxyserver on. @@ -175,7 +177,6 @@ public BrowserUpRemoteProxyServer startServer(BrowserUpRemoteProxyServer proxySe final JsonElement jsonElement = JsonParser.parseString(jsonResponse); final int port = jsonElement.getAsJsonObject().get("port").getAsInt(); proxyServer.setPort(port); - return proxyServer; } /** diff --git a/bup/src/test/java/eu/tsystems/mms/tic/testerra/bup/playground/BupRemoteProxyManagerPlaygroundTest.java b/bup/src/test/java/eu/tsystems/mms/tic/testerra/bup/playground/BupRemoteProxyManagerPlaygroundTest.java index eefe4cb1e..48517b476 100644 --- a/bup/src/test/java/eu/tsystems/mms/tic/testerra/bup/playground/BupRemoteProxyManagerPlaygroundTest.java +++ b/bup/src/test/java/eu/tsystems/mms/tic/testerra/bup/playground/BupRemoteProxyManagerPlaygroundTest.java @@ -95,7 +95,7 @@ public void testT03_StartProxyServerOnDesiredPortAndVerifyRunning() throws IOExc BrowserUpRemoteProxyServer bup1 = new BrowserUpRemoteProxyServer(); bup1.setPort(8088); - bup1 = browserUpRemoteProxyManager.startServer(bup1); + browserUpRemoteProxyManager.startServer(bup1); Assert.assertNotNull(bup1, "Proxy object generated."); Assert.assertEquals(bup1.getPort().intValue(), 8088, "Port equals desired."); diff --git a/bup/src/test/java/eu/tsystems/mms/tic/testerra/bup/test/BupRemoteProxyManagerTest.java b/bup/src/test/java/eu/tsystems/mms/tic/testerra/bup/test/BupRemoteProxyManagerTest.java index 158002e3c..ddc436d08 100644 --- a/bup/src/test/java/eu/tsystems/mms/tic/testerra/bup/test/BupRemoteProxyManagerTest.java +++ b/bup/src/test/java/eu/tsystems/mms/tic/testerra/bup/test/BupRemoteProxyManagerTest.java @@ -181,8 +181,7 @@ public void testT03_StartProxyServerOnDesiredPortAndVerifyRunning() throws IOExc BrowserUpRemoteProxyServer browserUpRemoteProxyServer = new BrowserUpRemoteProxyServer(); browserUpRemoteProxyServer.setPort(8088); - - browserUpRemoteProxyServer = browserUpRemoteProxyManager.startServer(browserUpRemoteProxyServer); + browserUpRemoteProxyManager.startServer(browserUpRemoteProxyServer); Assert.assertNotNull(browserUpRemoteProxyServer, "Proxy object generated."); Assert.assertEquals(browserUpRemoteProxyServer.getPort().intValue(), 8088, "Port equals desired."); @@ -226,8 +225,7 @@ public void testT03a_StartProxyServerWithExtendedOptionsAndVerifyRunning() throw browserUpRemoteProxyServer.setBindAddress("192.168.100.1"); browserUpRemoteProxyServer.setUpstreamProxy(new URL("http://proxy.company.example.org:8080")); browserUpRemoteProxyServer.setUpstreamNonProxy(".internal.example.org|.mystuff.example.org"); - - browserUpRemoteProxyServer = browserUpRemoteProxyManager.startServer(browserUpRemoteProxyServer); + browserUpRemoteProxyManager.startServer(browserUpRemoteProxyServer); Assert.assertNotNull(browserUpRemoteProxyServer, "Proxy object generated."); Assert.assertEquals(browserUpRemoteProxyServer.getPort().intValue(), 8088, "Port equals desired."); @@ -428,7 +426,7 @@ public void testT11_AddUpstreamProxy() throws MalformedURLException { final URL apiBaseUrl = new URL(LOCAL_PROXY_FOR_TEST); final BrowserUpRemoteProxyManager browserUpRemoteProxyManager = new BrowserUpRemoteProxyManager(apiBaseUrl); - bup1 = browserUpRemoteProxyManager.startServer(bup1); + browserUpRemoteProxyManager.startServer(bup1); } } diff --git a/docs/src/docs/modules/browser-up-proxy.adoc b/docs/src/docs/modules/browser-up-proxy.adoc index 9b2d0b752..7e84c72c1 100644 --- a/docs/src/docs/modules/browser-up-proxy.adoc +++ b/docs/src/docs/modules/browser-up-proxy.adoc @@ -45,22 +45,19 @@ import java.net.URL; public class AbstractTest extends TesterraTest { - private static BrowserUpRemoteProxyServer bupProxy; + private static BrowserUpRemoteProxyServer bupProxy = new BrowserUpRemoteProxyServer(); @BeforeSuite public void setupProxy() throws MalformedURLException { - - final URL apiUrl = new URL("http://localhost:8080"); - final BrowserUpRemoteProxyManager bupRemoteProxyManager - = new BrowserUpRemoteProxyManager(apiUrl); - bupProxy = bupRemoteProxyManager.startServer(); + URL apiUrl = new URL("http://localhost:8080"); + BrowserUpRemoteProxyManager bupRemoteProxyManager = new BrowserUpRemoteProxyManager(apiUrl); + bupProxybupRemoteProxyManager.startServer(bupProxy); /* Additional Proxy setup here */ - final String bmpProxyAddress - = String.format("%s:%d", apiUrl.getHost(), bupProxy.getPort()); + String bmpProxyAddress = String.format("%s:%d", apiUrl.getHost(), bupProxy.getPort()); // For selenium usage. - final Proxy proxy = new Proxy(); + Proxy proxy = new Proxy(); proxy.setHttpProxy(bmpProxyAddress).setSslProxy(bmpProxyAddress); WebDriverManager.setGlobalExtraCapability(CapabilityType.PROXY, proxy); @@ -69,12 +66,11 @@ public class AbstractTest extends TesterraTest { @AfterSuite public void tearDownProxy() throws MalformedURLException { - final URL apiBaseUrl = new URL("http://localhost:8080"); - final BrowserUpRemoteProxyManager browserUpRemoteProxyManager - = new BrowserUpRemoteProxyManager(apiBaseUrl); + URL apiBaseUrl = new URL("http://localhost:8080"); + BrowserUpRemoteProxyManager browserUpRemoteProxyManager = new BrowserUpRemoteProxyManager(apiBaseUrl); - for (final Integer proxyPort : browserUpRemoteProxyManager.getProxies()) { - final BrowserUpRemoteProxyServer bupToStop = new BrowserUpRemoteProxyServer(); + for (Integer proxyPort : browserUpRemoteProxyManager.getProxies()) { + BrowserUpRemoteProxyServer bupToStop = new BrowserUpRemoteProxyServer(); bupToStop.setPort(proxyPort); browserUpRemoteProxyManager.stopServer(bupToStop); } @@ -91,7 +87,7 @@ If you need a dedicated port, use `startServer(BrowserUpRemoteProxyServer proxyS BrowserUpRemoteProxyServer browserUpRemoteProxyServer = new BrowserUpRemoteProxyServer(); browserUpRemoteProxyServer.setPort(8088); -browserUpRemoteProxyServer = browserUpRemoteProxyManager.startServer(browserUpRemoteProxyServer); +browserUpRemoteProxyManager.startServer(browserUpRemoteProxyServer); ---- If the port already used, the `BrowserUpRemoteProxyManager` will do nothing, and just return the given config-object of type `BrowserUpRemoteProxyServer`. @@ -107,12 +103,11 @@ String basicAuthUser; String basicAuthPassword; URL apiBaseUrl = new URL(LOCAL_PROXY_FOR_TEST); -BrowserUpRemoteProxyManager browserUpRemoteProxyManager - = new BrowserUpRemoteProxyManager(apiBaseUrl); -BrowserUpRemoteProxyServer bup1 = browserUpRemoteProxyManager.startServer(); +BrowserUpRemoteProxyManager browserUpRemoteProxyManager = new BrowserUpRemoteProxyManager(apiBaseUrl); +BrowserUpRemoteProxyServer bup1 = new BrowserUpRemoteProxyServer(); +browserUpRemoteProxyManager.startServer(bup1); -browserUpRemoteProxyManager - .setBasicAuth(bup1, baseUrl.getHost(), basicAuthUser, basicAuthPassword); +browserUpRemoteProxyManager.setBasicAuth(bup1, baseUrl.getHost(), basicAuthUser, basicAuthPassword); ---- === Upstream proxy @@ -127,11 +122,12 @@ bup1.setUpstreamProxy(ProxyUtils.getSystemHttpProxyUrl()); // Setup non-proxy for your upstream proxy, if needed bup1.setUpstreamNonProxy(".internal.example.org|.mystuff.example.org"); -final BrowserUpRemoteProxyManager browserUpRemoteProxyManager - = new BrowserUpRemoteProxyManager(apiBaseUrl); -bup1 = browserUpRemoteProxyManager.startServer(); +BrowserUpRemoteProxyManager browserUpRemoteProxyManager = new BrowserUpRemoteProxyManager(apiBaseUrl); +browserUpRemoteProxyManager.startServer(bup1); ---- +NOTE: User info like `username:password` is supported in your upstream proxy URL. + === Setup bind address If running BrowserUp Proxy in a multi-homed environment, you can specify a desired server bind address. @@ -139,14 +135,12 @@ If running BrowserUp Proxy in a multi-homed environment, you can specify a desir [source,java] ---- BrowserUpRemoteProxyServer bup1 = new BrowserUpRemoteProxyServer(); -bup1.setUpstreamProxy(ProxyUtils.getSystemHttpProxyUrl()); // Setup a bind address, default is '0.0.0.0' bup1.setBindAddress("192.168.100.1"); -final BrowserUpRemoteProxyManager browserUpRemoteProxyManager - = new BrowserUpRemoteProxyManager(apiBaseUrl); -bup1 = browserUpRemoteProxyManager.startServer(); +BrowserUpRemoteProxyManager browserUpRemoteProxyManager = new BrowserUpRemoteProxyManager(apiBaseUrl); +browserUpRemoteProxyManager.startServer(bup1); ---- === Other features @@ -156,43 +150,35 @@ bup1 = browserUpRemoteProxyManager.startServer(); /* Check if proxy alread runs on port... */ -final BrowserUpRemoteProxyManager browserUpRemoteProxyManager - = new BrowserUpRemoteProxyManager(apiBaseUrl); +BrowserUpRemoteProxyManager browserUpRemoteProxyManager = new BrowserUpRemoteProxyManager(apiBaseUrl); BrowserUpRemoteProxyServer bup1 = new BrowserUpRemoteProxyServer(); bup1.setPort(8088); -bup1 = browserUpRemoteProxyManager.startServer(bup1); +browserUpRemoteProxyManager.startServer(bup1); boolean isRunning = browserUpRemoteProxyManager.isRunning(nup1); /* Maps specific host names to another host names or IP adresses */ -browserUpRemoteProxyManager - .setHostMapping( - BrowserUpRemoteProxyServer proxyServer, - Map hostNameMapping); +browserUpRemoteProxyManager.setHostMapping(BrowserUpRemoteProxyServer proxyServer, Map hostMap); /* Capture the traffic and return it as a JsonElement You can choose, if you want to capture only the headers, the content or both via the boolean flags. */ -browserUpRemoteProxyManager - .startCapture( - BrowserUpRemoteProxyServer proxyServer, - String initialPageRef, - boolean isCaptureHeaders, - boolean isCaptureContent); +browserUpRemoteProxyManager.startCapture( + BrowserUpRemoteProxyServer proxyServer, + String initialPageRef, + boolean isCaptureHeaders, + boolean isCaptureContent +); JsonElement stopCapture(BrowserUpRemoteProxyServer proxyServer); /* Adds additional key-value pairs to the headers. */ -browserUpRemoteProxyManager - .addHeader( - final BrowserUpRemoteProxyServer proxyServer, - final String key, - final String value); +browserUpRemoteProxyManager.addHeader(BrowserUpRemoteProxyServer proxyServer, String key, String value); ---- == Local browser instances @@ -213,7 +199,7 @@ BrowserUpLocalProxyManager bupLocalManager = new BrowserUpLocalProxyManager(port // Start instance BrowserUpProxyServer browserUpProxyServer = new BrowserUpProxyServer(); -browserUpProxyServer = bupLocalManager.startServer(browserUpProxyServer); +bupLocalManager.startServer(browserUpProxyServer); // assert that a port of given port pool was used. Assert.assertTrue(portPool.contains(port), "Port of range was used.");