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