package jp.vmi.selenium.webdriver;
import org.junit.Test;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import jp.vmi.selenium.testutils.WebServer;
import static jp.vmi.selenium.testutils.TestUtils.*;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
@SuppressWarnings("javadoc")
public class DriverOptionsTest {
@Test
@SuppressWarnings("unchecked")
public void define() {
DriverOptions driverOptions = new DriverOptions();
DesiredCapabilities caps = driverOptions.getCapabilities();
driverOptions.addDefinitions("key1=value1");
assertThat(caps.getCapability("key1"), equalTo("value1"));
assertThat(exceptionOf(() -> driverOptions.addDefinitions("key1:bool+=true")), is(instanceOf(IllegalArgumentException.class)));
driverOptions.addDefinitions("key2:str=value2");
assertThat(caps.getCapability("key2"), equalTo("value2"));
driverOptions.addDefinitions("key3:bool=true");
assertThat(caps.getCapability("key3"), equalTo(Boolean.TRUE));
driverOptions.addDefinitions("key4:bool=false");
assertThat(caps.getCapability("key4"), equalTo(Boolean.FALSE));
driverOptions.addDefinitions("key5:int=123");
assertThat(caps.getCapability("key5"), equalTo(Integer.valueOf(123)));
driverOptions.addDefinitions("key1+=value1_2");
assertThat((String[]) caps.getCapability("key1"), is(array(equalTo("value1"), equalTo("value1_2"))));
driverOptions.addDefinitions("key2:str+=value2_2");
assertThat((String[]) caps.getCapability("key2"), is(array(equalTo("value2"), equalTo("value2_2"))));
driverOptions.addDefinitions("key3:bool+=false");
assertThat((Boolean[]) caps.getCapability("key3"), is(array(equalTo(Boolean.TRUE), equalTo(Boolean.FALSE))));
assertThat(exceptionOf(() -> driverOptions.addDefinitions("key3+=value3_3")), is(instanceOf(IllegalArgumentException.class)));
assertThat(exceptionOf(() -> driverOptions.addDefinitions("key4+=true")), is(instanceOf(IllegalArgumentException.class)));
assertThat(exceptionOf(() -> driverOptions.addDefinitions("key6:int=abc")), is(instanceOf(IllegalArgumentException.class)));
assertThat(exceptionOf(() -> driverOptions.addDefinitions("key7:invalid_type=avalue7")), is(instanceOf(IllegalArgumentException.class)));
assertThat(exceptionOf(() -> driverOptions.addDefinitions("invalid-format")), is(instanceOf(IllegalArgumentException.class)));
}
@Test
public void defineBool() {
WebDriverManager wdm = WebDriverManager.newInstance();
wdm.setWebDriverFactory(WebDriverManager.HTMLUNIT);
DriverOptions driverOptions = new DriverOptions();
driverOptions.addDefinitions("javascriptEnabled:bool=false");
wdm.setDriverOptions(driverOptions);
WebDriver driver = wdm.get();
WebServer ws = new WebServer();
ws.start();
Exception actual = null;
try {
driver.get(ws.getBaseURL());
((JavascriptExecutor) driver).executeScript("true");
} catch (Exception e) {
actual = e;
} finally {
ws.stop();
}
assertThat(actual, is(instanceOf(UnsupportedOperationException.class)));
assertThat(actual.getMessage(), equalTo("Javascript is not enabled for this HtmlUnitDriver instance"));
}
}