]> WPIA git - gigi.git/blob - tests/org/cacert/gigi/util/TestCAAValidation.java
fix: ResultSet.getDate is often wrong as it fetches day-precision times
[gigi.git] / tests / org / cacert / gigi / util / TestCAAValidation.java
1 package org.cacert.gigi.util;
2
3 import static org.hamcrest.CoreMatchers.*;
4 import static org.junit.Assert.*;
5 import static org.junit.Assume.*;
6
7 import java.io.IOException;
8 import java.security.GeneralSecurityException;
9 import java.util.Arrays;
10
11 import org.cacert.gigi.GigiApiException;
12 import org.cacert.gigi.dbObjects.Certificate;
13 import org.cacert.gigi.dbObjects.Certificate.CertificateStatus;
14 import org.cacert.gigi.dbObjects.CertificateProfile;
15 import org.cacert.gigi.dbObjects.Digest;
16 import org.cacert.gigi.dbObjects.Domain;
17 import org.cacert.gigi.dbObjects.Job;
18 import org.cacert.gigi.pages.account.certs.CertificateRequest;
19 import org.cacert.gigi.testUtils.ClientTest;
20 import org.junit.Test;
21 import org.junit.runner.RunWith;
22 import org.junit.runners.Parameterized;
23 import org.junit.runners.Parameterized.Parameter;
24 import org.junit.runners.Parameterized.Parameters;
25
26 @RunWith(Parameterized.class)
27 public class TestCAAValidation extends ClientTest {
28
29     @Parameters(name = "CAATest({0}) = {1}")
30     public static Iterable<Object[]> genParams() throws IOException {
31         initEnvironment();
32
33         String caa = (String) getTestProps().get("domain.CAAtest");
34         assumeNotNull(caa);
35         String[] parts = caa.split(" ");
36         Object[][] res = new Object[parts.length][];
37         for (int i = 0; i < res.length; i++) {
38             char firstChar = parts[i].charAt(0);
39             if (firstChar != '-' && firstChar != '+') {
40                 throw new Error("malformed CAA test vector");
41             }
42             res[i] = new Object[] {
43                     parts[i].substring(1), firstChar == '+'
44             };
45         }
46         return Arrays.<Object[]>asList(res);
47     }
48
49     @Parameter(0)
50     public String domain;
51
52     @Parameter(1)
53     public Boolean success;
54
55     @Test
56     public void testCAA() throws GigiApiException {
57         assertEquals(success, CAA.verifyDomainAccess(u, CertificateProfile.getByName("server"), domain));
58     }
59
60     @Test
61     public void testCAACert() throws GeneralSecurityException, IOException, GigiApiException, InterruptedException {
62         Domain d = new Domain(u, u, domain);
63         verify(d);
64         String csr = generatePEMCSR(generateKeypair(), "CN=test");
65         CertificateRequest cr = new CertificateRequest(new AuthorizationContext(u, u), csr);
66         try {
67             cr.update("", Digest.SHA512.toString(), "server", null, null, "dns:" + domain + "\n");
68         } catch (GigiApiException e) {
69             assertThat(e.getMessage(), containsString("has been removed"));
70             assertFalse(success);
71             return;
72         }
73         assertTrue(success);
74         Certificate draft = cr.draft();
75         Job j = draft.issue(null, "2y", u);
76         await(j);
77
78         assertEquals(CertificateStatus.ISSUED, draft.getStatus());
79     }
80
81 }