]> WPIA git - gigi.git/blob - tests/org/cacert/gigi/pages/account/TestCertificateRequest.java
upd: cleanup CertificateRequest.update
[gigi.git] / tests / org / cacert / gigi / pages / account / TestCertificateRequest.java
1 package org.cacert.gigi.pages.account;
2
3 import static org.hamcrest.CoreMatchers.*;
4 import static org.junit.Assert.*;
5
6 import java.io.IOException;
7 import java.security.GeneralSecurityException;
8 import java.security.KeyPair;
9
10 import org.cacert.gigi.GigiApiException;
11 import org.cacert.gigi.dbObjects.Group;
12 import org.cacert.gigi.pages.account.certs.CertificateRequest;
13 import org.cacert.gigi.testUtils.ClientTest;
14 import org.cacert.gigi.util.AuthorizationContext;
15 import org.junit.Test;
16
17 public class TestCertificateRequest extends ClientTest {
18
19     KeyPair kp = generateKeypair();
20
21     AuthorizationContext ac;
22
23     public TestCertificateRequest() throws GeneralSecurityException, IOException {
24         ac = new AuthorizationContext(u, u);
25         makeAssurer(u.getId());
26         grant(email, Group.CODESIGNING);
27
28     }
29
30     @Test
31     public void testIssuingOtherName() throws Exception {
32         try {
33             new CertificateRequest(ac, generatePEMCSR(kp, "CN=hansi")).draft();
34             fail();
35         } catch (GigiApiException e) {
36             assertThat(e.getMessage(), containsString("name you entered was invalid"));
37         }
38     }
39
40     @Test
41     public void testIssuingDefault() throws Exception {
42         new CertificateRequest(ac, generatePEMCSR(kp, "CN=" + CertificateRequest.DEFAULT_CN + ",EMAIL=" + email)).draft();
43     }
44
45     @Test
46     public void testIssuingRealName() throws Exception {
47         new CertificateRequest(ac, generatePEMCSR(kp, "CN=a b,EMAIL=" + email)).draft();
48     }
49
50     @Test
51     public void testIssuingModifiedName() throws Exception {
52         try {
53             new CertificateRequest(ac, generatePEMCSR(kp, "CN=a ab")).draft();
54             fail();
55         } catch (GigiApiException e) {
56             assertThat(e.getMessage(), containsString("name you entered was invalid"));
57         }
58
59     }
60
61     // TODO annotate that this depends on default config
62     @Test
63     public void testCodesignModifiedName() throws Exception {
64         try {
65             u.grantGroup(u, Group.CODESIGNING);
66             CertificateRequest cr = new CertificateRequest(ac, generatePEMCSR(kp, "CN=a ab"));
67             cr.update("name", "SHA512", "code-a", null, null, "email:" + email);
68             cr.draft();
69             fail();
70         } catch (GigiApiException e) {
71             assertThat(e.getMessage(), containsString("does not match the details"));
72         }
73
74     }
75
76     // TODO annotate that this depends on default config
77     @Test
78     public void testCodesignNoPermModifiedName() throws Exception {
79         try {
80             CertificateRequest cr = new CertificateRequest(ac, generatePEMCSR(kp, "CN=a ab"));
81             cr.update("name", "SHA512", "code-a", null, null, "email:" + email);
82             cr.draft();
83             fail();
84         } catch (GigiApiException e) {
85             assertThat(e.getMessage(), containsString("Certificate Profile is invalid."));
86         }
87
88     }
89 }