<link rel="stylesheet" href="<?=$static?>/css/bootstrap.min.css">
<link rel="stylesheet" href="<?=$static?>/css/main.css">
+ <noscript><link rel="stylesheet" href="<?=$static?>/css/noscript.css"></noscript>
<script src="<?=$static?>/js/jquery.min.js"></script>
<script src="<?=$static?>/js/bootstrap.min.js"></script>
private static final String UNKOWN_CONTROL_STRUCTURE_MSG = "Unknown control structure \"%s\", did you mean \"%s\"?";
+ public static final String UTC_TIMESTAMP_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'";
+
/**
* Creates a new template by parsing the contents from the given URL. This
* constructor will fail on syntax error. When the URL points to a file,
if (vars.containsKey(Outputable.OUT_KEY_PLAIN)) {
out.print(sdfUI.format(s));
} else {
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
+ SimpleDateFormat sdf = new SimpleDateFormat(UTC_TIMESTAMP_FORMAT);
out.print("<time datetime=\"" + sdf.format(s) + "\">");
out.print(sdfUI.format(s));
out.print(" UTC</time>");
</tr>
<? if($orga) { ?>
<tr>
- <td><?=_Departement?></td>
+ <td><?=_Department?></td>
<td align="left"><input type='text' name='OU' value='<?=$department?>'/></td>
</tr>
<? } ?>
- <tr class="expertoff">
+ <tr class="expertoff noscript-hidden">
<td class='check'>
<input type="checkbox" id="expertbox" name="expertbox"/>
</td>
import javax.servlet.http.HttpServletResponse;
import club.wpia.gigi.dbObjects.Certificate;
+import club.wpia.gigi.dbObjects.Certificate.CertificateStatus;
import club.wpia.gigi.dbObjects.Certificate.SubjectAlternateName;
import club.wpia.gigi.localisation.Language;
import club.wpia.gigi.output.ArrayIterable;
vars.put("id", t.getId());
vars.put("serial", t.getSerial());
+ if (t.getStatus() == CertificateStatus.REVOKED) {
+ vars.put("revoked", t.getRevocationDate());
+ } else {
+ vars.put("revoked", l.getTranslation("N/A"));
+ }
+
final List<SubjectAlternateName> san = t.getSANs();
vars.put("san", new IterableDataset() {
<p><?=_Multiple certificates?>: <?=$limit?></p>
<table class="table">
<tr>
-<th>Id</th><th><?=_Serial number?></th><th><?=_SAN?></th></tr>
+<th>Id</th><th><?=_Serial number?></th><th><?=_SAN?></th><th><?=_Revocation Date?></th></tr>
<? foreach($certtable) {?>
<tr>
<td><a href="/support/certs/<?=$serial?>"><?=$id?></a></td>
<?=$entry?>
<? } ?>
</td>
+ <td><?=$revoked?></td>
</tr>
<? } ?>
</table>
--- /dev/null
+.noscript-hidden{
+ display: none;
+}
import club.wpia.gigi.dbObjects.Group;
import club.wpia.gigi.dbObjects.User;
import club.wpia.gigi.localisation.Language;
-import club.wpia.gigi.pages.admin.support.SupportEnterTicketPage;
import club.wpia.gigi.pages.admin.support.SupportUserDetailsPage;
-import club.wpia.gigi.testUtils.ClientTest;
+import club.wpia.gigi.testUtils.SEClientTest;
import club.wpia.gigi.testUtils.TestEmailReceiver.TestMail;
import club.wpia.gigi.util.ServerConstants;
-public class TestSEAdminNotificationMail extends ClientTest {
+public class TestSEAdminNotificationMail extends SEClientTest {
private int targetID;
private String targetEmail;
public TestSEAdminNotificationMail() throws IOException, GigiApiException {
- grant(u, Group.SUPPORTER);
- cookie = login(email, TEST_PASSWORD);
- assertEquals(302, post(cookie, SupportEnterTicketPage.PATH, "ticketno=a20140808.8&setTicket=action", 0).getResponseCode());
-
targetEmail = createUniqueName() + "@example.com";
String fname = "Först";
String lname = "Secönd";
import java.net.URLEncoder;
import java.security.GeneralSecurityException;
import java.security.KeyPair;
+import java.text.SimpleDateFormat;
import org.hamcrest.CoreMatchers;
import org.junit.Test;
import club.wpia.gigi.dbObjects.Certificate;
import club.wpia.gigi.dbObjects.Certificate.CSRType;
import club.wpia.gigi.dbObjects.Certificate.CertificateStatus;
+import club.wpia.gigi.dbObjects.Certificate.RevocationType;
import club.wpia.gigi.dbObjects.Certificate.SANType;
import club.wpia.gigi.dbObjects.Digest;
-import club.wpia.gigi.dbObjects.Group;
import club.wpia.gigi.dbObjects.User;
+import club.wpia.gigi.output.template.Template;
import club.wpia.gigi.pages.account.certs.Certificates;
import club.wpia.gigi.pages.admin.support.FindCertPage;
-import club.wpia.gigi.pages.admin.support.SupportEnterTicketPage;
-import club.wpia.gigi.testUtils.ClientTest;
import club.wpia.gigi.testUtils.IOUtils;
+import club.wpia.gigi.testUtils.SEClientTest;
import club.wpia.gigi.testUtils.TestEmailReceiver.TestMail;
import club.wpia.gigi.util.ServerConstants;
import club.wpia.gigi.util.ServerConstants.Host;
-public class TestSEAdminPageCertSearch extends ClientTest {
+public class TestSEAdminPageCertSearch extends SEClientTest {
private Certificate c;
private String certMail;
- public TestSEAdminPageCertSearch() throws IOException, GigiApiException, GeneralSecurityException, InterruptedException {
- grant(u, Group.SUPPORTER);
- cookie = login(email, TEST_PASSWORD);
- assertEquals(302, post(cookie, SupportEnterTicketPage.PATH, "ticketno=a20140808.8&setTicket=action", 0).getResponseCode());
+ private int id;
+ public TestSEAdminPageCertSearch() throws IOException, GigiApiException, GeneralSecurityException, InterruptedException {
certMail = uniq + "_certowner@example.com";
- int id = createVerifiedUser("fn", "ln", certMail, TEST_PASSWORD);
- User u1 = User.getById(id);
- KeyPair kp = generateKeypair();
- String key = generatePEMCSR(kp, "CN=" + certMail);
- c = new Certificate(u1, u1, Certificate.buildDN("CN", certMail), Digest.SHA512, key, CSRType.CSR, getClientProfile(), new Certificate.SubjectAlternateName(SANType.EMAIL, certMail));
- await(c.issue(null, "2y", u));
+ id = createVerifiedUser("fn", "ln", certMail, TEST_PASSWORD);
+ c = createCertificate();
}
@Test
assertThat(tm.getMessage(), CoreMatchers.containsString(c.getSerial()));
}
assertEquals(CertificateStatus.REVOKED, c.getStatus());
+
+ }
+
+ @Test
+ public void testShowRevocation() throws GeneralSecurityException, IOException, GigiApiException, InterruptedException {
+ Certificate c1 = createCertificate();
+ await(c1.revoke(RevocationType.SUPPORT));
+ URLConnection uc = post(cookie, FindCertPage.PATH, "certType=email&process=Next&cert=" + URLEncoder.encode(certMail, "UTF-8"), 0);
+ SimpleDateFormat sdf = new SimpleDateFormat(Template.UTC_TIMESTAMP_FORMAT);
+ String revokeDate = sdf.format(c1.getRevocationDate());
+ String result = IOUtils.readURL(uc);
+ assertThat(result, CoreMatchers.containsString(revokeDate));
+ assertThat(result, CoreMatchers.containsString("N/A"));
}
+ private Certificate createCertificate() throws GeneralSecurityException, IOException, GigiApiException, InterruptedException {
+ User u1 = User.getById(id);
+ KeyPair kp = generateKeypair();
+ String key = generatePEMCSR(kp, "CN=" + certMail);
+ Certificate c1 = new Certificate(u1, u1, Certificate.buildDN("CN", certMail), Digest.SHA512, key, CSRType.CSR, getClientProfile(), new Certificate.SubjectAlternateName(SANType.EMAIL, certMail));
+ await(c1.issue(null, "2y", u));
+ return c1;
+ }
}
import club.wpia.gigi.GigiApiException;
import club.wpia.gigi.database.GigiPreparedStatement;
import club.wpia.gigi.dbObjects.EmailAddress;
-import club.wpia.gigi.dbObjects.Group;
import club.wpia.gigi.dbObjects.ObjectCache;
import club.wpia.gigi.dbObjects.User;
import club.wpia.gigi.pages.account.History;
import club.wpia.gigi.pages.admin.support.SupportEnterTicketPage;
import club.wpia.gigi.pages.admin.support.SupportUserDetailsPage;
-import club.wpia.gigi.testUtils.ClientTest;
import club.wpia.gigi.testUtils.IOUtils;
+import club.wpia.gigi.testUtils.SEClientTest;
import club.wpia.gigi.util.DayDate;
-public class TestSEAdminPageDetails extends ClientTest {
+public class TestSEAdminPageDetails extends SEClientTest {
- public TestSEAdminPageDetails() throws IOException, GigiApiException {
- grant(u, Group.SUPPORTER);
- cookie = login(email, TEST_PASSWORD);
- assertEquals(302, post(cookie, SupportEnterTicketPage.PATH, "ticketno=a20140808.8&setTicket=action", 0).getResponseCode());
- }
+ public TestSEAdminPageDetails() throws IOException, GigiApiException {}
@Test
public void testUserDetailsDisplay() throws MalformedURLException, IOException {
import club.wpia.gigi.GigiApiException;
import club.wpia.gigi.dbObjects.Domain;
-import club.wpia.gigi.dbObjects.Group;
import club.wpia.gigi.dbObjects.User;
import club.wpia.gigi.pages.admin.support.FindUserByDomainPage;
-import club.wpia.gigi.pages.admin.support.SupportEnterTicketPage;
import club.wpia.gigi.pages.admin.support.SupportUserDetailsPage;
-import club.wpia.gigi.testUtils.ClientTest;
import club.wpia.gigi.testUtils.IOUtils;
+import club.wpia.gigi.testUtils.SEClientTest;
import club.wpia.gigi.util.ServerConstants;
import club.wpia.gigi.util.ServerConstants.Host;
-public class TestSEAdminPageUserDomainSearch extends ClientTest {
+public class TestSEAdminPageUserDomainSearch extends SEClientTest {
private Domain d;
private int tid;
public TestSEAdminPageUserDomainSearch() throws IOException, GigiApiException {
- grant(u, Group.SUPPORTER);
- cookie = login(email, TEST_PASSWORD);
- assertEquals(302, post(cookie, SupportEnterTicketPage.PATH, "ticketno=a20140808.8&setTicket=action", 0).getResponseCode());
-
String mail = createUniqueName() + "@example.com";
tid = createVerifiedUser("Först", "Secönd", mail, TEST_PASSWORD);
User user = User.getById(tid);
import org.junit.Test;
import club.wpia.gigi.GigiApiException;
-import club.wpia.gigi.dbObjects.Group;
import club.wpia.gigi.dbObjects.User;
import club.wpia.gigi.pages.admin.support.FindUserByEmailPage;
-import club.wpia.gigi.pages.admin.support.SupportEnterTicketPage;
import club.wpia.gigi.pages.admin.support.SupportUserDetailsPage;
-import club.wpia.gigi.testUtils.ClientTest;
import club.wpia.gigi.testUtils.IOUtils;
+import club.wpia.gigi.testUtils.SEClientTest;
import club.wpia.gigi.util.ServerConstants;
import club.wpia.gigi.util.ServerConstants.Host;
-public class TestSEAdminPageUserMailSearch extends ClientTest {
+public class TestSEAdminPageUserMailSearch extends SEClientTest {
- public TestSEAdminPageUserMailSearch() throws IOException, GigiApiException {
- grant(u, Group.SUPPORTER);
- cookie = login(email, TEST_PASSWORD);
- assertEquals(302, post(cookie, SupportEnterTicketPage.PATH, "ticketno=a20140808.8&setTicket=action", 0).getResponseCode());
- }
+ public TestSEAdminPageUserMailSearch() throws IOException, GigiApiException {}
@Test
public void testFulltextMailSearch() throws MalformedURLException, UnsupportedEncodingException, IOException {
--- /dev/null
+package club.wpia.gigi.testUtils;
+
+import static org.junit.Assert.*;
+
+import java.io.IOException;
+
+import club.wpia.gigi.GigiApiException;
+import club.wpia.gigi.dbObjects.Group;
+import club.wpia.gigi.pages.admin.support.SupportEnterTicketPage;
+
+/**
+ * Superclass for testsuites in a scenario where there is a supporter, who is
+ * already logged on.
+ */
+public abstract class SEClientTest extends ClientTest {
+
+ public SEClientTest() throws IOException, GigiApiException {
+ grant(u, Group.SUPPORTER);
+ cookie = login(email, TEST_PASSWORD);
+ assertEquals(302, post(cookie, SupportEnterTicketPage.PATH, "ticketno=a20140808.8&setTicket=action", 0).getResponseCode());
+ }
+
+}