From b8798bc282675402428d1a89704d23fdcc5ed441 Mon Sep 17 00:00:00 2001 From: Andrew Kondratev Date: Tue, 23 Jun 2020 13:32:22 +1200 Subject: [PATCH 1/9] Add namespace context for Saxon compatibility --- .../bonigarcia/wdm/WebDriverManager.java | 18 ++++++++-- .../wdm/managers/ChromeDriverManager.java | 35 +++++++++++++++++-- 2 files changed, 49 insertions(+), 4 deletions(-) diff --git a/src/main/java/io/github/bonigarcia/wdm/WebDriverManager.java b/src/main/java/io/github/bonigarcia/wdm/WebDriverManager.java index def58c6a7..808cfda0e 100644 --- a/src/main/java/io/github/bonigarcia/wdm/WebDriverManager.java +++ b/src/main/java/io/github/bonigarcia/wdm/WebDriverManager.java @@ -59,9 +59,11 @@ import java.util.Optional; import java.util.regex.Matcher; +import javax.xml.namespace.NamespaceContext; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; +import javax.xml.xpath.XPath; import org.apache.commons.codec.binary.Base64; import org.apache.commons.io.IOUtils; @@ -818,17 +820,29 @@ protected List getDriversFromMirror(URL driverUrl) throws IOException { } } + protected NamespaceContext getNamespaceContext() { + return null; + } + protected List getDriversFromXml(URL driverUrl, String xpath) throws IOException { + return getDriversFromXml(driverUrl, xpath, getNamespaceContext()); + } + + protected List getDriversFromXml(URL driverUrl, String xpath, NamespaceContext namespaceContext) + throws IOException { log.info("Reading {} to seek {}", driverUrl, getDriverName()); List urls = new ArrayList<>(); try { try (CloseableHttpResponse response = httpClient .execute(httpClient.createHttpGet(driverUrl))) { Document xml = loadXML(response.getEntity().getContent()); - NodeList nodes = (NodeList) newInstance().newXPath() + XPath xPath = newInstance().newXPath(); + if (namespaceContext != null){ + xPath.setNamespaceContext(namespaceContext); + } + NodeList nodes = (NodeList) xPath .evaluate(xpath, xml.getDocumentElement(), NODESET); - for (int i = 0; i < nodes.getLength(); ++i) { Element e = (Element) nodes.item(i); urls.add(new URL(driverUrl.toURI().resolve(".") diff --git a/src/main/java/io/github/bonigarcia/wdm/managers/ChromeDriverManager.java b/src/main/java/io/github/bonigarcia/wdm/managers/ChromeDriverManager.java index 87895fbb9..11ceef996 100644 --- a/src/main/java/io/github/bonigarcia/wdm/managers/ChromeDriverManager.java +++ b/src/main/java/io/github/bonigarcia/wdm/managers/ChromeDriverManager.java @@ -24,20 +24,25 @@ import java.net.URL; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; +import java.util.Iterator; import java.util.List; import java.util.Optional; import io.github.bonigarcia.wdm.WebDriverManager; import io.github.bonigarcia.wdm.config.DriverManagerType; +import javax.xml.namespace.NamespaceContext; + /** * Manager for Chrome. * * @author Boni Garcia (boni.gg@gmail.com) - * @since 1.0.0 + * @since 1.0.0 Are we waiting for something? Last time I was able to hear you. */ public class ChromeDriverManager extends WebDriverManager { + private static final S3BucketListNamespaceContext S3_BUCKET_LIST_NAMESPACE_CONTEXT = new S3BucketListNamespaceContext(); + @Override public DriverManagerType getDriverManagerType() { return CHROME; @@ -94,7 +99,7 @@ protected List getDriverUrls() throws IOException { if (mirrorUrl.isPresent() && config().isUseMirror()) { return getDriversFromMirror(mirrorUrl.get()); } else { - return getDriversFromXml(getDriverUrl(), "//Contents/Key"); + return getDriversFromXml(getDriverUrl(), "//s3:Contents/s3:Key"); } } @@ -145,4 +150,30 @@ protected Charset getVersionCharset() { return StandardCharsets.UTF_8; } + @Override + protected NamespaceContext getNamespaceContext() { + return S3_BUCKET_LIST_NAMESPACE_CONTEXT; + } + + private static final class S3BucketListNamespaceContext implements NamespaceContext { + + private static final String S3_BUCKET_LIST_NS = "http://doc.s3.amazonaws.com/2006-03-01"; + + @Override + public String getNamespaceURI(String prefix) { + return S3_BUCKET_LIST_NS; + } + + @Override + public String getPrefix(String namespaceURI) { + throw new UnsupportedOperationException(); + } + + @Override + public Iterator getPrefixes(String namespaceURI) { + throw new UnsupportedOperationException(); + } + + } + } From a5aaab5c444aa6b42594bec259ae7f88b71b85e3 Mon Sep 17 00:00:00 2001 From: Andrew Kondratev Date: Tue, 23 Jun 2020 15:46:14 +1200 Subject: [PATCH 2/9] Remove accidental commit --- .../io/github/bonigarcia/wdm/managers/ChromeDriverManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/github/bonigarcia/wdm/managers/ChromeDriverManager.java b/src/main/java/io/github/bonigarcia/wdm/managers/ChromeDriverManager.java index 11ceef996..3836b0497 100644 --- a/src/main/java/io/github/bonigarcia/wdm/managers/ChromeDriverManager.java +++ b/src/main/java/io/github/bonigarcia/wdm/managers/ChromeDriverManager.java @@ -37,7 +37,7 @@ * Manager for Chrome. * * @author Boni Garcia (boni.gg@gmail.com) - * @since 1.0.0 Are we waiting for something? Last time I was able to hear you. + * @since 1.0.0 */ public class ChromeDriverManager extends WebDriverManager { From c258f0be8e7fa97348ab6f51db58664f7a86d9b6 Mon Sep 17 00:00:00 2001 From: Andrew Kondratev Date: Tue, 23 Jun 2020 16:30:57 +1200 Subject: [PATCH 3/9] Set factory namespace aware to fix tests --- src/main/java/io/github/bonigarcia/wdm/WebDriverManager.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/io/github/bonigarcia/wdm/WebDriverManager.java b/src/main/java/io/github/bonigarcia/wdm/WebDriverManager.java index 808cfda0e..a69489426 100644 --- a/src/main/java/io/github/bonigarcia/wdm/WebDriverManager.java +++ b/src/main/java/io/github/bonigarcia/wdm/WebDriverManager.java @@ -858,6 +858,7 @@ protected List getDriversFromXml(URL driverUrl, String xpath, NamespaceCont protected Document loadXML(InputStream inputStream) throws SAXException, IOException, ParserConfigurationException { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + factory.setNamespaceAware(true); DocumentBuilder builder = factory.newDocumentBuilder(); return builder.parse(new InputSource( new ByteArrayInputStream(IOUtils.toByteArray(inputStream)))); From 75084bf03f8b6a87fc83908f0545a76a9623aeec Mon Sep 17 00:00:00 2001 From: Andrew Kondratev Date: Tue, 23 Jun 2020 17:10:48 +1200 Subject: [PATCH 4/9] Fix IE Manager and Selenium Manager --- pom.xml | 2 +- .../wdm/managers/ChromeDriverManager.java | 22 +--------------- .../InternetExplorerDriverManager.java | 12 ++++++++- .../SeleniumServerStandaloneManager.java | 12 ++++++++- .../online/S3BucketListNamespaceContext.java | 25 +++++++++++++++++++ 5 files changed, 49 insertions(+), 24 deletions(-) create mode 100644 src/main/java/io/github/bonigarcia/wdm/online/S3BucketListNamespaceContext.java diff --git a/pom.xml b/pom.xml index ed39f3705..802e6073e 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ io.github.bonigarcia webdrivermanager - 4.0.1-SNAPSHOT + 4.0.1-SP1-UM 1.7.30 diff --git a/src/main/java/io/github/bonigarcia/wdm/managers/ChromeDriverManager.java b/src/main/java/io/github/bonigarcia/wdm/managers/ChromeDriverManager.java index 3836b0497..1ba3e62f5 100644 --- a/src/main/java/io/github/bonigarcia/wdm/managers/ChromeDriverManager.java +++ b/src/main/java/io/github/bonigarcia/wdm/managers/ChromeDriverManager.java @@ -30,6 +30,7 @@ import io.github.bonigarcia.wdm.WebDriverManager; import io.github.bonigarcia.wdm.config.DriverManagerType; +import io.github.bonigarcia.wdm.online.S3BucketListNamespaceContext; import javax.xml.namespace.NamespaceContext; @@ -155,25 +156,4 @@ protected NamespaceContext getNamespaceContext() { return S3_BUCKET_LIST_NAMESPACE_CONTEXT; } - private static final class S3BucketListNamespaceContext implements NamespaceContext { - - private static final String S3_BUCKET_LIST_NS = "http://doc.s3.amazonaws.com/2006-03-01"; - - @Override - public String getNamespaceURI(String prefix) { - return S3_BUCKET_LIST_NS; - } - - @Override - public String getPrefix(String namespaceURI) { - throw new UnsupportedOperationException(); - } - - @Override - public Iterator getPrefixes(String namespaceURI) { - throw new UnsupportedOperationException(); - } - - } - } diff --git a/src/main/java/io/github/bonigarcia/wdm/managers/InternetExplorerDriverManager.java b/src/main/java/io/github/bonigarcia/wdm/managers/InternetExplorerDriverManager.java index 0ff295456..2053b30ec 100644 --- a/src/main/java/io/github/bonigarcia/wdm/managers/InternetExplorerDriverManager.java +++ b/src/main/java/io/github/bonigarcia/wdm/managers/InternetExplorerDriverManager.java @@ -26,6 +26,9 @@ import io.github.bonigarcia.wdm.WebDriverManager; import io.github.bonigarcia.wdm.config.DriverManagerType; +import io.github.bonigarcia.wdm.online.S3BucketListNamespaceContext; + +import javax.xml.namespace.NamespaceContext; /** * Manager for Internet Explorer. @@ -35,6 +38,8 @@ */ public class InternetExplorerDriverManager extends WebDriverManager { + private static final S3BucketListNamespaceContext S3_BUCKET_LIST_NAMESPACE_CONTEXT = new S3BucketListNamespaceContext(); + @Override public DriverManagerType getDriverManagerType() { return IEXPLORER; @@ -87,7 +92,7 @@ protected void setDriverUrl(URL url) { @Override protected List getDriverUrls() throws IOException { - return getDriversFromXml(getDriverUrl(), "//Contents/Key"); + return getDriversFromXml(getDriverUrl(), "//s3:Contents/s3:Key"); } @Override @@ -101,4 +106,9 @@ protected Optional getDriverVersionFromRepository( return empty(); } + @Override + protected NamespaceContext getNamespaceContext() { + return S3_BUCKET_LIST_NAMESPACE_CONTEXT; + } + } diff --git a/src/main/java/io/github/bonigarcia/wdm/managers/SeleniumServerStandaloneManager.java b/src/main/java/io/github/bonigarcia/wdm/managers/SeleniumServerStandaloneManager.java index de59b8f51..ce2d988cc 100644 --- a/src/main/java/io/github/bonigarcia/wdm/managers/SeleniumServerStandaloneManager.java +++ b/src/main/java/io/github/bonigarcia/wdm/managers/SeleniumServerStandaloneManager.java @@ -27,6 +27,9 @@ import io.github.bonigarcia.wdm.WebDriverManager; import io.github.bonigarcia.wdm.config.DriverManagerType; +import io.github.bonigarcia.wdm.online.S3BucketListNamespaceContext; + +import javax.xml.namespace.NamespaceContext; /** * Manager for selenium-server-standalone. @@ -36,6 +39,8 @@ */ public class SeleniumServerStandaloneManager extends WebDriverManager { + private static final S3BucketListNamespaceContext S3_BUCKET_LIST_NAMESPACE_CONTEXT = new S3BucketListNamespaceContext(); + @Override public DriverManagerType getDriverManagerType() { return SELENIUM_SERVER_STANDALONE; @@ -88,7 +93,7 @@ protected Optional getBrowserVersionFromTheShell() { @Override protected List getDriverUrls() throws IOException { - return getDriversFromXml(getDriverUrl(), "//Contents/Key"); + return getDriversFromXml(getDriverUrl(), "//s3:Contents/s3:Key"); } @Override @@ -107,4 +112,9 @@ protected void setBrowserVersion(String browserVersion) { // Nothing required } + @Override + protected NamespaceContext getNamespaceContext() { + return S3_BUCKET_LIST_NAMESPACE_CONTEXT; + } + } diff --git a/src/main/java/io/github/bonigarcia/wdm/online/S3BucketListNamespaceContext.java b/src/main/java/io/github/bonigarcia/wdm/online/S3BucketListNamespaceContext.java new file mode 100644 index 000000000..05d474640 --- /dev/null +++ b/src/main/java/io/github/bonigarcia/wdm/online/S3BucketListNamespaceContext.java @@ -0,0 +1,25 @@ +package io.github.bonigarcia.wdm.online; + +import javax.xml.namespace.NamespaceContext; +import java.util.Iterator; + +public class S3BucketListNamespaceContext implements NamespaceContext { + + private static final String S3_BUCKET_LIST_NS = "http://doc.s3.amazonaws.com/2006-03-01"; + + @Override + public String getNamespaceURI(String prefix) { + return S3_BUCKET_LIST_NS; + } + + @Override + public String getPrefix(String namespaceURI) { + throw new UnsupportedOperationException(); + } + + @Override + public Iterator getPrefixes(String namespaceURI) { + throw new UnsupportedOperationException(); + } + +} From 820086852d0144eb599d20cc9c9274e06c96d4a8 Mon Sep 17 00:00:00 2001 From: Andrew Kondratev Date: Tue, 23 Jun 2020 17:21:55 +1200 Subject: [PATCH 5/9] trigger build From 4088cdc83ceab0216e70c4fa3e62622272a42df5 Mon Sep 17 00:00:00 2001 From: Andrew Kondratev Date: Tue, 23 Jun 2020 18:13:48 +1200 Subject: [PATCH 6/9] Remove accidental version, add NamespaceContextTest --- pom.xml | 2 +- .../wdm/test/other/NamespaceContextTest.java | 99 +++++++++++++++++++ 2 files changed, 100 insertions(+), 1 deletion(-) create mode 100644 src/test/java/io/github/bonigarcia/wdm/test/other/NamespaceContextTest.java diff --git a/pom.xml b/pom.xml index 802e6073e..ed39f3705 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ io.github.bonigarcia webdrivermanager - 4.0.1-SP1-UM + 4.0.1-SNAPSHOT 1.7.30 diff --git a/src/test/java/io/github/bonigarcia/wdm/test/other/NamespaceContextTest.java b/src/test/java/io/github/bonigarcia/wdm/test/other/NamespaceContextTest.java new file mode 100644 index 000000000..964b29c6e --- /dev/null +++ b/src/test/java/io/github/bonigarcia/wdm/test/other/NamespaceContextTest.java @@ -0,0 +1,99 @@ +package io.github.bonigarcia.wdm.test.other; + +import io.github.bonigarcia.wdm.WebDriverManager; +import io.github.bonigarcia.wdm.config.DriverManagerType; +import io.github.bonigarcia.wdm.online.HttpClient; +import io.github.bonigarcia.wdm.online.S3BucketListNamespaceContext; +import org.junit.Test; + +import javax.xml.namespace.NamespaceContext; +import java.io.IOException; +import java.net.URL; +import java.util.List; +import java.util.Optional; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.empty; +import static org.hamcrest.core.Is.is; +import static org.hamcrest.core.IsNot.not; + +public class NamespaceContextTest { + + @Test + public void testS3BucketListNamespaceContext() throws IOException { + TestWebDriverManager testManager = new TestWebDriverManager(); + List urls = testManager.getDriverUrls(); + assertThat(urls, is(not(empty()))); + } + + private static final class TestWebDriverManager extends WebDriverManager{ + + @Override + protected NamespaceContext getNamespaceContext() { + return new S3BucketListNamespaceContext(); + } + + @Override + protected List getDriverUrls() throws IOException { + httpClient = new HttpClient(config()); + return getDriversFromXml(getDriverUrl(), "//s3:Contents/s3:Key"); + } + + @Override + protected Optional getBrowserVersionFromTheShell() { + return Optional.empty(); + } + + @Override + protected String getDriverName() { + return null; + } + + @Override + protected String getDriverVersion() { + return null; + } + + @Override + protected void setDriverVersion(String driverVersion) { + + } + + @Override + protected String getBrowserVersion() { + return null; + } + + @Override + protected void setBrowserVersion(String browserVersion) { + + } + + @Override + protected void setDriverUrl(URL url) { + + } + + @Override + protected URL getDriverUrl() { + return getDriverUrlCkeckingMirror(config().getChromeDriverUrl()); + } + + @Override + protected Optional getMirrorUrl() { + return Optional.empty(); + } + + @Override + protected Optional getExportParameter() { + return Optional.empty(); + } + + @Override + public DriverManagerType getDriverManagerType() { + return null; + } + + } + +} From ff679a8b4514f6fb18ee4d8a4af7398551850634 Mon Sep 17 00:00:00 2001 From: Andrew Kondratev Date: Tue, 23 Jun 2020 18:58:29 +1200 Subject: [PATCH 7/9] Another attempt to increase coverage --- .../online/S3BucketListNamespaceContext.java | 41 +++++++++++++++++-- .../wdm/test/other/NamespaceContextTest.java | 16 +++++++- 2 files changed, 51 insertions(+), 6 deletions(-) diff --git a/src/main/java/io/github/bonigarcia/wdm/online/S3BucketListNamespaceContext.java b/src/main/java/io/github/bonigarcia/wdm/online/S3BucketListNamespaceContext.java index 05d474640..7d9cc5ec7 100644 --- a/src/main/java/io/github/bonigarcia/wdm/online/S3BucketListNamespaceContext.java +++ b/src/main/java/io/github/bonigarcia/wdm/online/S3BucketListNamespaceContext.java @@ -1,25 +1,58 @@ package io.github.bonigarcia.wdm.online; import javax.xml.namespace.NamespaceContext; +import java.util.Collections; import java.util.Iterator; +import java.util.NoSuchElementException; public class S3BucketListNamespaceContext implements NamespaceContext { private static final String S3_BUCKET_LIST_NS = "http://doc.s3.amazonaws.com/2006-03-01"; + private static final String S3_PREFIX = "s3"; + @Override public String getNamespaceURI(String prefix) { - return S3_BUCKET_LIST_NS; + if (S3_PREFIX.equals(prefix)) { + return S3_BUCKET_LIST_NS; + } + throw new IllegalArgumentException("Unsupported prefix"); } @Override public String getPrefix(String namespaceURI) { - throw new UnsupportedOperationException(); + if (S3_BUCKET_LIST_NS.equals(namespaceURI)) { + return S3_PREFIX; + } + throw new IllegalArgumentException("Unsupported namespace URI"); } @Override - public Iterator getPrefixes(String namespaceURI) { - throw new UnsupportedOperationException(); + public Iterator getPrefixes(String namespaceURI) { + if (S3_BUCKET_LIST_NS.equals(namespaceURI)) { + return new Iterator() { + boolean more = true; + + public boolean hasNext() { + return this.more; + } + + public Object next() { + if (!this.hasNext()) { + throw new NoSuchElementException(); + } else { + this.more = false; + return S3_PREFIX; + } + } + + public void remove() { + throw new UnsupportedOperationException(); + } + }; + } else { + return Collections.EMPTY_LIST.iterator(); + } } } diff --git a/src/test/java/io/github/bonigarcia/wdm/test/other/NamespaceContextTest.java b/src/test/java/io/github/bonigarcia/wdm/test/other/NamespaceContextTest.java index 964b29c6e..a1f67c7df 100644 --- a/src/test/java/io/github/bonigarcia/wdm/test/other/NamespaceContextTest.java +++ b/src/test/java/io/github/bonigarcia/wdm/test/other/NamespaceContextTest.java @@ -9,28 +9,40 @@ import javax.xml.namespace.NamespaceContext; import java.io.IOException; import java.net.URL; +import java.util.Iterator; import java.util.List; import java.util.Optional; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.empty; +import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.core.Is.is; import static org.hamcrest.core.IsNot.not; public class NamespaceContextTest { + public static final S3BucketListNamespaceContext S_3_BUCKET_LIST_NAMESPACE_CONTEXT = new S3BucketListNamespaceContext(); + + public static final String S3_URI = "http://doc.s3.amazonaws.com/2006-03-01"; + @Test public void testS3BucketListNamespaceContext() throws IOException { + assertThat(S_3_BUCKET_LIST_NAMESPACE_CONTEXT.getNamespaceURI("s3"), equalTo(S3_URI)); + assertThat(S_3_BUCKET_LIST_NAMESPACE_CONTEXT.getPrefix(S3_URI), equalTo("s3")); + Iterator prefixes = S_3_BUCKET_LIST_NAMESPACE_CONTEXT.getPrefixes(S3_URI); + assertThat(prefixes.next(), equalTo("s3")); + assertThat(prefixes.hasNext(), equalTo(false)); + TestWebDriverManager testManager = new TestWebDriverManager(); List urls = testManager.getDriverUrls(); assertThat(urls, is(not(empty()))); } - private static final class TestWebDriverManager extends WebDriverManager{ + private static final class TestWebDriverManager extends WebDriverManager { @Override protected NamespaceContext getNamespaceContext() { - return new S3BucketListNamespaceContext(); + return S_3_BUCKET_LIST_NAMESPACE_CONTEXT; } @Override From bfdfce18fa5d75fc75d3e1263c5a3912717bddaf Mon Sep 17 00:00:00 2001 From: Andrew Kondratev Date: Tue, 23 Jun 2020 19:25:02 +1200 Subject: [PATCH 8/9] Another attempt to increase coverage --- .../wdm/test/other/NamespaceContextTest.java | 33 ++++++++++++++++--- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/src/test/java/io/github/bonigarcia/wdm/test/other/NamespaceContextTest.java b/src/test/java/io/github/bonigarcia/wdm/test/other/NamespaceContextTest.java index a1f67c7df..0b4a2fd2a 100644 --- a/src/test/java/io/github/bonigarcia/wdm/test/other/NamespaceContextTest.java +++ b/src/test/java/io/github/bonigarcia/wdm/test/other/NamespaceContextTest.java @@ -18,6 +18,7 @@ import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.core.Is.is; import static org.hamcrest.core.IsNot.not; +import static org.junit.Assert.fail; public class NamespaceContextTest { @@ -26,16 +27,40 @@ public class NamespaceContextTest { public static final String S3_URI = "http://doc.s3.amazonaws.com/2006-03-01"; @Test - public void testS3BucketListNamespaceContext() throws IOException { + public void testS3BucketListNamespaceContextUrls() throws IOException { + TestWebDriverManager testManager = new TestWebDriverManager(); + List urls = testManager.getDriverUrls(); + assertThat(urls, is(not(empty()))); + } + + @Test + public void testS3BucketListNamespaceContextPrefixes(){ assertThat(S_3_BUCKET_LIST_NAMESPACE_CONTEXT.getNamespaceURI("s3"), equalTo(S3_URI)); assertThat(S_3_BUCKET_LIST_NAMESPACE_CONTEXT.getPrefix(S3_URI), equalTo("s3")); Iterator prefixes = S_3_BUCKET_LIST_NAMESPACE_CONTEXT.getPrefixes(S3_URI); assertThat(prefixes.next(), equalTo("s3")); assertThat(prefixes.hasNext(), equalTo(false)); + } - TestWebDriverManager testManager = new TestWebDriverManager(); - List urls = testManager.getDriverUrls(); - assertThat(urls, is(not(empty()))); + + @Test + public void testS3BucketListNamespaceContextInvalidPrefixes(){ + try { + S_3_BUCKET_LIST_NAMESPACE_CONTEXT.getNamespaceURI("xmlns"); + fail("IllegalArgumentException should be thrown"); + } catch (IllegalArgumentException e) { + assertThat(e.getMessage(), equalTo("Unsupported prefix")); + } + try { + S_3_BUCKET_LIST_NAMESPACE_CONTEXT.getPrefix("http://www.w3.org/2000/xmlns/"); + fail("IllegalArgumentException should be thrown"); + } catch (IllegalArgumentException e) { + assertThat(e.getMessage(), equalTo("Unsupported namespace URI")); + } + assertThat( + S_3_BUCKET_LIST_NAMESPACE_CONTEXT.getPrefixes("http://www.w3.org/2000/xmlns/").hasNext(), + is(false) + ); } private static final class TestWebDriverManager extends WebDriverManager { From f0b201b18cb9c7c0d001479fab890a4a0003cacc Mon Sep 17 00:00:00 2001 From: Andrew Kondratev Date: Tue, 23 Jun 2020 20:19:50 +1200 Subject: [PATCH 9/9] Another attempt to increase coverage --- .../online/S3BucketListNamespaceContext.java | 21 +------------------ .../wdm/test/other/NamespaceContextTest.java | 17 ++++++++------- 2 files changed, 10 insertions(+), 28 deletions(-) diff --git a/src/main/java/io/github/bonigarcia/wdm/online/S3BucketListNamespaceContext.java b/src/main/java/io/github/bonigarcia/wdm/online/S3BucketListNamespaceContext.java index 7d9cc5ec7..f9e0ca6ab 100644 --- a/src/main/java/io/github/bonigarcia/wdm/online/S3BucketListNamespaceContext.java +++ b/src/main/java/io/github/bonigarcia/wdm/online/S3BucketListNamespaceContext.java @@ -30,26 +30,7 @@ public String getPrefix(String namespaceURI) { @Override public Iterator getPrefixes(String namespaceURI) { if (S3_BUCKET_LIST_NS.equals(namespaceURI)) { - return new Iterator() { - boolean more = true; - - public boolean hasNext() { - return this.more; - } - - public Object next() { - if (!this.hasNext()) { - throw new NoSuchElementException(); - } else { - this.more = false; - return S3_PREFIX; - } - } - - public void remove() { - throw new UnsupportedOperationException(); - } - }; + return Collections.singletonList(S3_PREFIX).iterator(); } else { return Collections.EMPTY_LIST.iterator(); } diff --git a/src/test/java/io/github/bonigarcia/wdm/test/other/NamespaceContextTest.java b/src/test/java/io/github/bonigarcia/wdm/test/other/NamespaceContextTest.java index 0b4a2fd2a..61c4d0217 100644 --- a/src/test/java/io/github/bonigarcia/wdm/test/other/NamespaceContextTest.java +++ b/src/test/java/io/github/bonigarcia/wdm/test/other/NamespaceContextTest.java @@ -4,6 +4,7 @@ import io.github.bonigarcia.wdm.config.DriverManagerType; import io.github.bonigarcia.wdm.online.HttpClient; import io.github.bonigarcia.wdm.online.S3BucketListNamespaceContext; +import org.hamcrest.Matchers; import org.junit.Test; import javax.xml.namespace.NamespaceContext; @@ -11,11 +12,11 @@ import java.net.URL; import java.util.Iterator; import java.util.List; +import java.util.NoSuchElementException; import java.util.Optional; import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.empty; -import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.*; import static org.hamcrest.core.Is.is; import static org.hamcrest.core.IsNot.not; import static org.junit.Assert.fail; @@ -34,7 +35,7 @@ public void testS3BucketListNamespaceContextUrls() throws IOException { } @Test - public void testS3BucketListNamespaceContextPrefixes(){ + public void testS3BucketListNamespaceContextPrefixes() { assertThat(S_3_BUCKET_LIST_NAMESPACE_CONTEXT.getNamespaceURI("s3"), equalTo(S3_URI)); assertThat(S_3_BUCKET_LIST_NAMESPACE_CONTEXT.getPrefix(S3_URI), equalTo("s3")); Iterator prefixes = S_3_BUCKET_LIST_NAMESPACE_CONTEXT.getPrefixes(S3_URI); @@ -44,7 +45,7 @@ public void testS3BucketListNamespaceContextPrefixes(){ @Test - public void testS3BucketListNamespaceContextInvalidPrefixes(){ + public void testS3BucketListNamespaceContextInvalidPrefixes() { try { S_3_BUCKET_LIST_NAMESPACE_CONTEXT.getNamespaceURI("xmlns"); fail("IllegalArgumentException should be thrown"); @@ -107,13 +108,13 @@ protected void setBrowserVersion(String browserVersion) { } @Override - protected void setDriverUrl(URL url) { - + protected URL getDriverUrl() { + return getDriverUrlCkeckingMirror(config().getChromeDriverUrl()); } @Override - protected URL getDriverUrl() { - return getDriverUrlCkeckingMirror(config().getChromeDriverUrl()); + protected void setDriverUrl(URL url) { + } @Override