]> WPIA git - gigi.git/blob - tests/club/wpia/gigi/DomainVerification.java
upd: added new test to ensure that no underscores are in domain part
[gigi.git] / tests / club / wpia / gigi / DomainVerification.java
1 package club.wpia.gigi;
2
3 import static org.junit.Assert.*;
4
5 import org.junit.Test;
6
7 import club.wpia.gigi.testUtils.ConfiguredTest;
8 import club.wpia.gigi.util.DomainAssessment;
9
10 public class DomainVerification extends ConfiguredTest {
11
12     @Test
13     public void testDomainPart() {
14         assertTrue(DomainAssessment.isValidDomainPart("wpia"));
15         assertTrue(DomainAssessment.isValidDomainPart("de"));
16         assertTrue(DomainAssessment.isValidDomainPart("ha2-a"));
17         assertTrue(DomainAssessment.isValidDomainPart("ha2--a"));
18         assertTrue(DomainAssessment.isValidDomainPart("h--a"));
19         assertFalse(DomainAssessment.isValidDomainPart("-xnbla"));
20         assertFalse(DomainAssessment.isValidDomainPart("xnbla-"));
21         assertFalse(DomainAssessment.isValidDomainPart(""));
22         assertTrue(DomainAssessment.isValidDomainPart("2xnbla"));
23         assertTrue(DomainAssessment.isValidDomainPart("xnbla2"));
24         assertTrue(DomainAssessment.isValidDomainPart("123"));
25         assertTrue(DomainAssessment.isValidDomainPart("abcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxy1234567890123"));
26         assertFalse(DomainAssessment.isValidDomainPart("abcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxy12345678901234"));
27         // test underscore in domain according to BR 7.1.4.2.1
28         assertFalse(DomainAssessment.isValidDomainPart("_"));
29         assertFalse(DomainAssessment.isValidDomainPart("a_b"));
30     }
31
32     @Test
33     public void testDomainCertifiable() {
34         isCertifiableDomain(true, "wpia.club", false);
35         isCertifiableDomain(true, "wpia.de", false);
36         isCertifiableDomain(true, "1234.org", false);
37         isCertifiableDomain(false, "a.wpia.club", true);
38         isCertifiableDomain(false, "gigi.local", true);
39         isCertifiableDomain(false, "org", true);
40         isCertifiableDomain(false, "'a.org", true);
41         isCertifiableDomain(false, ".org", true);
42         isCertifiableDomain(false, ".org.", true);
43         // non-real-punycode
44         isCertifiableDomain(true, "xna-ae.de", false);
45         isCertifiableDomain(true, "xn-aae.de", false);
46
47         // illegal punycode:
48         // illegal ace prefix
49         isCertifiableDomain(false, "aa--b.com", true);
50         isCertifiableDomain(false, "xm--ae-a.de", true);
51
52         // illegal punycode content
53         isCertifiableDomain(false, "xn--ae-a.com", true);
54         isCertifiableDomain(false, "xn--ae.de", true);
55         isCertifiableDomain(false, "xn--ae-a.org", true);
56         isCertifiableDomain(false, "xn--ae-a.de", true);
57         // valid punycode requires permission
58         isCertifiableDomain(true, "xn--4ca0bs.de", true);
59         isCertifiableDomain(false, "xn--4ca0bs.de", false);
60         isCertifiableDomain(true, "xn--a-zfa9cya.de", true);
61         isCertifiableDomain(false, "xn--a-zfa9cya.de", false);
62
63         // valid punycode does not help under .com
64         isCertifiableDomain(false, "xn--a-zfa9cya.com", true);
65         isCertifiableDomain(true, "zfa9cya.com", true);
66
67         isCertifiableDomain(false, "127.0.0.1", false);
68         isCertifiableDomain(false, "::1", false);
69         isCertifiableDomain(false, "127.0.0.1", true);
70         isCertifiableDomain(false, "::1", true);
71
72     }
73
74     @Test
75     public void testFinancial() {
76         isCertifiableDomain(false, "google.com", true);
77         isCertifiableDomain(false, "twitter.com", true);
78     }
79
80     private void isCertifiableDomain(boolean b, String string, boolean puny) {
81         try {
82             DomainAssessment.checkCertifiableDomain(string, puny, true);
83             assertTrue(b);
84         } catch (GigiApiException e) {
85             assertFalse(e.getMessage(), b);
86         }
87     }
88
89 }