package com.codeborne.selenide.proxy;
import net.lightbody.bmp.BrowserMobProxyServer;
import org.junit.Test;
import org.openqa.selenium.Proxy;
import java.net.InetSocketAddress;
import static org.hamcrest.CoreMatchers.endsWith;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.*;
public class SelenideProxyServerTest {
@Test
public void canInterceptResponses() {
BrowserMobProxyServer bmp = mock(BrowserMobProxyServer.class);
when(bmp.getPort()).thenReturn(8888);
SelenideProxyServer proxyServer = new SelenideProxyServer(null);
proxyServer.proxy = bmp;
proxyServer.start();
try {
verify(bmp).setTrustAllServers(true);
verify(bmp, never()).setChainedProxy(any(InetSocketAddress.class));
verify(bmp).start();
assertThat(proxyServer.createSeleniumProxy().getHttpProxy(), endsWith(":8888"));
}
finally {
proxyServer.shutdown();
}
verify(bmp).abort();
FileDownloadFilter filter = proxyServer.responseFilter("download");
assertThat(filter.getDownloadedFiles().size(), is(0));
}
@Test
public void extractsProxyAddress() {
Proxy proxy = new Proxy();
proxy.setHttpProxy("111.22.3.4444:8080");
InetSocketAddress proxyAddress = SelenideProxyServer.getProxyAddress(proxy);
assertEquals("111.22.3.4444", proxyAddress.getHostName());
assertEquals(8080, proxyAddress.getPort());
}
}