1   package com.atlassian.security.auth.trustedapps;
2   
3   import java.security.PublicKey;
4   
5   import junit.framework.TestCase;
6   
7   public class TestDefaultTrustedApplication extends TestCase
8   {
9       public void testProductionCtor() throws Exception
10      {
11          final PublicKey key = new MockKey();
12          final String id = "TestDefaultTrustedApplication:id";
13          final RequestConditions conditions = RequestConditions.builder().setCertificateTimeout(13256L).build();
14  
15          // no exceptions
16          TrustedApplication app =  new DefaultTrustedApplication(key, id, conditions);
17          assertSame(key,  app.getPublicKey());
18          assertEquals(id, app.getID());
19      }
20  
21      public void testProductionCtorThrowsNullKey() throws Exception
22      {
23          final PublicKey key = null;
24          final String id = "TestDefaultTrustedApplication:id";
25          final RequestConditions conditions = RequestConditions.builder().setCertificateTimeout(13256L).build();
26          try
27          {
28              new DefaultTrustedApplication(key, id, conditions);
29              fail("Should have thrown IllegalArgEx");
30          }
31          catch (IllegalArgumentException yay)
32          {
33          }
34      }
35  
36      public void testProductionCtorThrowsNullId() throws Exception
37      {
38          final PublicKey key = new MockKey();
39          final String id = null;
40          final RequestConditions conditions = RequestConditions.builder().setCertificateTimeout(13256L).build();
41          try
42          {
43              new DefaultTrustedApplication(key, id, conditions);
44              fail("Should have thrown IllegalArgEx");
45          }
46          catch (IllegalArgumentException yay)
47          {
48          }
49      }
50  
51      public void testProductionCtorThrowsNullRequestConditions() throws Exception
52      {
53          final PublicKey key = new MockKey();
54          final String id = "TestDefaultTrustedApplication:id";
55          try
56          {
57              new DefaultTrustedApplication(key, id, null);
58              fail("Should have thrown IllegalArgEx");
59          }
60          catch (IllegalArgumentException yay)
61          {
62          }
63      }
64  
65      public void testTimeout()
66      {
67          final ApplicationCertificate certificate =
68                  new DefaultApplicationCertificate("foo", "joe", System.currentTimeMillis());
69  
70          assertValidCertificate(certificate, 0L);
71          assertValidCertificate(certificate, 10000L);
72          assertValidCertificate(certificate, Long.MAX_VALUE);
73  
74          assertExpiredCertificate(certificate, -1L);
75          assertExpiredCertificate(certificate, Long.MIN_VALUE);
76      }
77  
78      private void assertValidCertificate(final ApplicationCertificate certificate, long timeout)
79      {
80          try
81          {
82              DefaultTrustedApplication.checkCertificateExpiry(certificate, timeout);
83          }
84          catch (InvalidCertificateException e)
85          {
86              fail("Certificate should be valid.");
87          }
88      }
89  
90      private void assertExpiredCertificate(final ApplicationCertificate certificate, long timeout)
91      {
92          try
93          {
94              DefaultTrustedApplication.checkCertificateExpiry(certificate, timeout);
95              fail("Certificate should be expired.");
96          }
97          catch (InvalidCertificateException e)
98          {
99          }
100     }
101 }