]> WPIA git - gigi.git/blob - tests/org/cacert/gigi/DomainVerification.java
Merge "Suggestions to enhance the SQL call pattern."
[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.dbObjects.Domain;
6 import org.junit.Test;
7
8 public class DomainVerification {
9
10     @Test
11     public void testDomainPart() {
12         assertTrue(Domain.isVaildDomainPart("cacert", false));
13         assertTrue(Domain.isVaildDomainPart("de", false));
14         assertTrue(Domain.isVaildDomainPart("ha2-a", false));
15         assertTrue(Domain.isVaildDomainPart("ha2--a", false));
16         assertTrue(Domain.isVaildDomainPart("h--a", false));
17         assertFalse(Domain.isVaildDomainPart("xn--bla", false));
18         assertFalse(Domain.isVaildDomainPart("-xnbla", false));
19         assertFalse(Domain.isVaildDomainPart("xnbla-", false));
20         assertFalse(Domain.isVaildDomainPart("", false));
21         assertTrue(Domain.isVaildDomainPart("2xnbla", false));
22         assertTrue(Domain.isVaildDomainPart("xnbla2", false));
23         assertTrue(Domain.isVaildDomainPart("123", false));
24         assertTrue(Domain.isVaildDomainPart("abcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxy1234567890123", false));
25         assertFalse(Domain.isVaildDomainPart("abcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxy12345678901234", false));
26     }
27
28     @Test
29     public void testDomainCertifyable() {
30         isCertifyableDomain(true, "cacert.org", false);
31         isCertifyableDomain(true, "cacert.de", false);
32         isCertifyableDomain(true, "cacert.org", false);
33         isCertifyableDomain(true, "cacert.org", false);
34         isCertifyableDomain(true, "1234.org", false);
35         isCertifyableDomain(false, "a.cacert.org", true);
36         isCertifyableDomain(false, "gigi.local", true);
37         isCertifyableDomain(false, "org", true);
38         isCertifyableDomain(false, "'a.org", true);
39         isCertifyableDomain(false, ".org", true);
40         isCertifyableDomain(false, ".org.", true);
41         // non-real-punycode
42         isCertifyableDomain(true, "xna-ae.de", false);
43         isCertifyableDomain(true, "xn-aae.de", false);
44
45         // illegal punycode:
46         // illegal ace prefix
47         isCertifyableDomain(false, "aa--b.com", true);
48         isCertifyableDomain(false, "xm--ae-a.de", true);
49
50         // illegal punycode content
51         isCertifyableDomain(false, "xn--ae-a.com", true);
52         isCertifyableDomain(false, "xn--ae.de", true);
53         isCertifyableDomain(false, "xn--ae-a.org", true);
54         isCertifyableDomain(false, "xn--ae-a.de", true);
55         // valid punycode requires permission
56         isCertifyableDomain(true, "xn--4ca0bs.de", true);
57         isCertifyableDomain(false, "xn--4ca0bs.de", false);
58         isCertifyableDomain(true, "xn--a-zfa9cya.de", true);
59         isCertifyableDomain(false, "xn--a-zfa9cya.de", false);
60
61         // valid punycode does not help under .com
62         isCertifyableDomain(false, "xn--a-zfa9cya.com", true);
63         isCertifyableDomain(true, "zfa9cya.com", true);
64
65         isCertifyableDomain(false, "127.0.0.1", false);
66         isCertifyableDomain(false, "::1", false);
67         isCertifyableDomain(false, "127.0.0.1", true);
68         isCertifyableDomain(false, "::1", true);
69
70     }
71
72     private void isCertifyableDomain(boolean b, String string, boolean puny) {
73         try {
74             Domain.checkCertifyableDomain(string, puny);
75             assertTrue(b);
76         } catch (GigiApiException e) {
77             assertFalse(e.getMessage(), b);
78         }
79     }
80
81 }