public void testNonExpiry() throws InvalidCertificateException {
    final EncryptedCertificate encodedCert = app.encode("userX");
    final ApplicationCertificate cert = app.decode(encodedCert, null);
    assertEquals("userX", cert.getUserName());
    assertEquals(app.getID(), cert.getApplicationID());

    // decode again to make sure we can call twice
    app.decode(encodedCert, null);
  }
  public void testExpiry() throws Exception {
    final EncryptedCertificate encodedCert = app.encode("userX");
    ApplicationCertificate cert = app.decode(encodedCert, null);
    assertEquals("userX", cert.getUserName());
    assertEquals(app.getID(), cert.getApplicationID());

    Thread.sleep(timeout + 10);

    // decode it again
    try {
      cert = app.decode(encodedCert, null);
      fail("This certificate should have expired");
    } catch (final InvalidCertificateException e) {
      // expected
    }
  }
 public void testRoundTrip() throws Exception {
   final EncryptedCertificate encodedCert = app.encode("userX");
   final ApplicationCertificate cert = app.decode(encodedCert, null);
   assertEquals("userX", cert.getUserName());
   assertEquals(app.getID(), cert.getApplicationID());
 }