X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=getdown%2Fsrc%2Fgetdown%2Fcore%2Fsrc%2Ftest%2Fjava%2Fcom%2Fthreerings%2Fgetdown%2Futil%2FHostWhitelistTest.java;fp=getdown%2Fsrc%2Fgetdown%2Fcore%2Fsrc%2Ftest%2Fjava%2Fcom%2Fthreerings%2Fgetdown%2Futil%2FHostWhitelistTest.java;h=703afefd47345a711bd8547977c5b347ac3640df;hb=aace9d05c0870c703bfdfb28c1608213cee019bf;hp=0000000000000000000000000000000000000000;hpb=2a3bac30ae8290e912eb7ffe7ff7ec700b6cfaac;p=jalview.git diff --git a/getdown/src/getdown/core/src/test/java/com/threerings/getdown/util/HostWhitelistTest.java b/getdown/src/getdown/core/src/test/java/com/threerings/getdown/util/HostWhitelistTest.java new file mode 100644 index 0000000..703afef --- /dev/null +++ b/getdown/src/getdown/core/src/test/java/com/threerings/getdown/util/HostWhitelistTest.java @@ -0,0 +1,159 @@ +// +// Getdown - application installer, patcher and launcher +// Copyright (C) 2004-2018 Getdown authors +// https://github.com/threerings/getdown/blob/master/LICENSE + +package com.threerings.getdown.util; + +import static org.junit.Assert.assertEquals; + +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Arrays; +import java.util.List; + +import org.junit.Test; + +/** + * Tests {@link HostWhitelist}. + */ +public class HostWhitelistTest +{ + @Test + public void testVerify () throws MalformedURLException + { + checkCanVerify("foo.com", "http://foo.com", true); + checkCanVerify("foo.com", "http://foo.com/", true); + checkCanVerify("foo.com", "http://foo.com/x/y/z", true); + checkCanVerify("foo.com", "http://www.foo.com", false); + checkCanVerify("foo.com", "http://www.foo.com/", false); + checkCanVerify("foo.com", "http://www.foo.com/x/y/z", false); + checkCanVerify("foo.com", "http://a.b.foo.com", false); + checkCanVerify("foo.com", "http://a.b.foo.com/", false); + checkCanVerify("foo.com", "http://a.b.foo.com/x/y/z", false); + checkCanVerify("foo.com", "http://oo.com", false); + checkCanVerify("foo.com", "http://f.oo.com", false); + checkCanVerify("foo.com", "http://a.f.oo.com", false); + + checkCanVerify("*.foo.com", "http://foo.com", false); + checkCanVerify("*.foo.com", "http://foo.com/", false); + checkCanVerify("*.foo.com", "http://foo.com/x/y/z", false); + checkCanVerify("*.foo.com", "http://www.foo.com", true); + checkCanVerify("*.foo.com", "http://www.foo.com/", true); + checkCanVerify("*.foo.com", "http://www.foo.com/x/y/z", true); + checkCanVerify("*.foo.com", "http://a.b.foo.com", true); + checkCanVerify("*.foo.com", "http://a.b.foo.com/", true); + checkCanVerify("*.foo.com", "http://a.b.foo.com/x/y/z", true); + checkCanVerify("*.foo.com", "http://oo.com", false); + checkCanVerify("*.foo.com", "http://f.oo.com", false); + checkCanVerify("*.foo.com", "http://a.f.oo.com", false); + + checkCanVerify("*.com", "http://foo.com", true); + checkCanVerify("*.com", "http://foo.com/", true); + checkCanVerify("*.com", "http://foo.com/x/y/z", true); + checkCanVerify("*.com", "http://www.foo.com", true); + checkCanVerify("*.com", "http://www.foo.com/", true); + checkCanVerify("*.com", "http://www.foo.com/x/y/z", true); + checkCanVerify("*.com", "http://a.b.foo.com", true); + checkCanVerify("*.com", "http://a.b.foo.com/", true); + checkCanVerify("*.com", "http://a.b.foo.com/x/y/z", true); + checkCanVerify("*.com", "http://oo.com", true); + checkCanVerify("*.com", "http://f.oo.com", true); + checkCanVerify("*.com", "http://a.f.oo.com", true); + + checkCanVerify("*.net", "http://foo.com", false); + checkCanVerify("*.net", "http://foo.com/", false); + checkCanVerify("*.net", "http://foo.com/x/y/z", false); + checkCanVerify("*.net", "http://www.foo.com", false); + checkCanVerify("*.net", "http://www.foo.com/", false); + checkCanVerify("*.net", "http://www.foo.com/x/y/z", false); + checkCanVerify("*.net", "http://a.b.foo.com", false); + checkCanVerify("*.net", "http://a.b.foo.com/", false); + checkCanVerify("*.net", "http://a.b.foo.com/x/y/z", false); + checkCanVerify("*.net", "http://oo.com", false); + checkCanVerify("*.net", "http://f.oo.com", false); + checkCanVerify("*.net", "http://a.f.oo.com", false); + + checkCanVerify("www.*.com", "http://foo.com", false); + checkCanVerify("www.*.com", "http://foo.com/", false); + checkCanVerify("www.*.com", "http://foo.com/x/y/z", false); + checkCanVerify("www.*.com", "http://www.foo.com", true); + checkCanVerify("www.*.com", "http://www.foo.com/", true); + checkCanVerify("www.*.com", "http://www.foo.com/x/y/z", true); + checkCanVerify("www.*.com", "http://a.b.foo.com", false); + checkCanVerify("www.*.com", "http://a.b.foo.com/", false); + checkCanVerify("www.*.com", "http://a.b.foo.com/x/y/z", false); + checkCanVerify("www.*.com", "http://oo.com", false); + checkCanVerify("www.*.com", "http://f.oo.com", false); + checkCanVerify("www.*.com", "http://a.f.oo.com", false); + checkCanVerify("www.*.com", "http://www.a.f.oo.com", true); + + checkCanVerify("foo.*", "http://foo.com", true); + checkCanVerify("foo.*", "http://foo.com/", true); + checkCanVerify("foo.*", "http://foo.com/x/y/z", true); + checkCanVerify("foo.*", "http://www.foo.com", false); + checkCanVerify("foo.*", "http://www.foo.com/", false); + checkCanVerify("foo.*", "http://www.foo.com/x/y/z", false); + checkCanVerify("foo.*", "http://a.b.foo.com", false); + checkCanVerify("foo.*", "http://a.b.foo.com/", false); + checkCanVerify("foo.*", "http://a.b.foo.com/x/y/z", false); + checkCanVerify("foo.*", "http://oo.com", false); + checkCanVerify("foo.*", "http://f.oo.com", false); + checkCanVerify("foo.*", "http://a.f.oo.com", false); + + checkCanVerify("*.foo.*", "http://foo.com", false); + checkCanVerify("*.foo.*", "http://foo.com/", false); + checkCanVerify("*.foo.*", "http://foo.com/x/y/z", false); + checkCanVerify("*.foo.*", "http://www.foo.com", true); + checkCanVerify("*.foo.*", "http://www.foo.com/", true); + checkCanVerify("*.foo.*", "http://www.foo.com/x/y/z", true); + checkCanVerify("*.foo.*", "http://a.b.foo.com", true); + checkCanVerify("*.foo.*", "http://a.b.foo.com/", true); + checkCanVerify("*.foo.*", "http://a.b.foo.com/x/y/z", true); + checkCanVerify("*.foo.*", "http://oo.com", false); + checkCanVerify("*.foo.*", "http://f.oo.com", false); + checkCanVerify("*.foo.*", "http://a.f.oo.com", false); + + checkCanVerify("127.0.0.1", "http://127.0.0.1", true); + checkCanVerify("127.0.0.1", "http://127.0.0.1/", true); + checkCanVerify("127.0.0.1", "http://127.0.0.1/x/y/z", true); + checkCanVerify("*.0.0.1", "http://127.0.0.1/abc", true); + checkCanVerify("127.*.0.1", "http://127.0.0.1/abc", true); + checkCanVerify("127.0.*.1", "http://127.0.0.1/abc", true); + checkCanVerify("127.0.0.*", "http://127.0.0.1/abc", true); + checkCanVerify("127.*.1", "http://127.0.0.1/abc", true); + checkCanVerify("*.0.1", "http://127.0.0.1/abc", true); + checkCanVerify("127.0.*", "http://127.0.0.1/abc", true); + checkCanVerify("*", "http://127.0.0.1/abc", true); + checkCanVerify("127.0.0.2", "http://127.0.0.1", false); + checkCanVerify("127.0.2.1", "http://127.0.0.1", false); + checkCanVerify("127.2.0.1", "http://127.0.0.1", false); + checkCanVerify("222.0.0.1", "http://127.0.0.1", false); + + checkCanVerify("", "http://foo.com", true); + checkCanVerify("", "http://aaa.bbb.net/xyz", true); + checkCanVerify("", "https://127.0.0.1/abc", true); + + checkCanVerify("aaa.bbb.com,xxx.yyy.com, *.jjj.net", "http://aaa.bbb.com/m", true); + checkCanVerify("aaa.bbb.com, xxx.yyy.com,*.jjj.net", "http://xxx.yyy.com/n", true); + checkCanVerify("aaa.bbb.com,xxx.yyy.com, *.jjj.net", "http://www.jjj.net/o", true); + } + + private static void checkCanVerify (String whitelist, String url, boolean expectedToPass) + throws MalformedURLException + { + List w = Arrays.asList(StringUtil.parseStringArray(whitelist)); + URL u = new URL(url); + boolean passed; + + try { + HostWhitelist.verify(w, u); + passed = true; + } catch (MalformedURLException e) { + passed = false; + } + + assertEquals("with whitelist '" + whitelist + "' and URL '" + url + "'", + expectedToPass, passed); + } +}