1 package org.cacert.gigi;
3 import static org.junit.Assert.*;
5 import org.cacert.gigi.testUtils.ConfiguredTest;
6 import org.cacert.gigi.util.DomainAssessment;
9 public class DomainVerification extends ConfiguredTest {
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"));
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);
42 isCertifiableDomain(true, "xna-ae.de", false);
43 isCertifiableDomain(true, "xn-aae.de", false);
47 isCertifiableDomain(false, "aa--b.com", true);
48 isCertifiableDomain(false, "xm--ae-a.de", true);
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);
61 // valid punycode does not help under .com
62 isCertifiableDomain(false, "xn--a-zfa9cya.com", true);
63 isCertifiableDomain(true, "zfa9cya.com", true);
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);
73 public void testFinancial() {
74 isCertifiableDomain(false, "google.com", true);
75 isCertifiableDomain(false, "twitter.com", true);
78 private void isCertifiableDomain(boolean b, String string, boolean puny) {
80 DomainAssessment.checkCertifiableDomain(string, puny, true);
82 } catch (GigiApiException e) {
83 assertFalse(e.getMessage(), b);