1 package org.mozilla.gecko.util.publicsuffix;
2 
3 import org.junit.Assert;
4 import org.junit.Test;
5 import org.junit.runner.RunWith;
6 import org.mozilla.gecko.background.testhelpers.TestRunner;
7 import org.robolectric.RuntimeEnvironment;
8 
9 @RunWith(TestRunner.class)
10 public class TestPublicSuffix {
11     @Test
testStripPublicSuffix()12     public void testStripPublicSuffix() {
13         // Test empty value
14         Assert.assertEquals("",
15                 PublicSuffix.stripPublicSuffix(RuntimeEnvironment.application, ""));
16 
17         // Test domains with public suffix
18         Assert.assertEquals("www.mozilla",
19                 PublicSuffix.stripPublicSuffix(RuntimeEnvironment.application, "www.mozilla.org"));
20         Assert.assertEquals("www.google",
21                 PublicSuffix.stripPublicSuffix(RuntimeEnvironment.application, "www.google.com"));
22         Assert.assertEquals("foobar",
23                 PublicSuffix.stripPublicSuffix(RuntimeEnvironment.application, "foobar.blogspot.com"));
24         Assert.assertEquals("independent",
25                 PublicSuffix.stripPublicSuffix(RuntimeEnvironment.application, "independent.co.uk"));
26         Assert.assertEquals("biz",
27                 PublicSuffix.stripPublicSuffix(RuntimeEnvironment.application, "biz.com.ua"));
28         Assert.assertEquals("example",
29                 PublicSuffix.stripPublicSuffix(RuntimeEnvironment.application, "example.org"));
30         Assert.assertEquals("example",
31                 PublicSuffix.stripPublicSuffix(RuntimeEnvironment.application, "example.pvt.k12.ma.us"));
32 
33         // Test domain without public suffix
34         Assert.assertEquals("localhost",
35                 PublicSuffix.stripPublicSuffix(RuntimeEnvironment.application, "localhost"));
36         Assert.assertEquals("firefox.mozilla",
37                 PublicSuffix.stripPublicSuffix(RuntimeEnvironment.application, "firefox.mozilla"));
38 
39         // IDN domains
40         Assert.assertEquals("ουτοπία.δπθ",
41                 PublicSuffix.stripPublicSuffix(RuntimeEnvironment.application, "ουτοπία.δπθ.gr"));
42         Assert.assertEquals("a网络A",
43                 PublicSuffix.stripPublicSuffix(RuntimeEnvironment.application, "a网络A.网络.Cn"));
44 
45         // Other non-domain values
46         Assert.assertEquals("192.168.0.1",
47                 PublicSuffix.stripPublicSuffix(RuntimeEnvironment.application, "192.168.0.1"));
48         Assert.assertEquals("asdflkj9uahsd",
49                 PublicSuffix.stripPublicSuffix(RuntimeEnvironment.application, "asdflkj9uahsd"));
50 
51         // Other trailing and other types of dots
52         Assert.assertEquals("www.mozilla。home.example",
53                 PublicSuffix.stripPublicSuffix(RuntimeEnvironment.application, "www.mozilla。home.example。org"));
54         Assert.assertEquals("example",
55                 PublicSuffix.stripPublicSuffix(RuntimeEnvironment.application, "example.org"));
56     }
57 
58     @Test(expected = NullPointerException.class)
testStripPublicSuffixThrowsException()59     public void testStripPublicSuffixThrowsException() {
60         PublicSuffix.stripPublicSuffix(RuntimeEnvironment.application, null);
61     }
62 }
63