View Javadoc

1   package com.atlassian.asap.core.keys.publickey;
2   
3   import com.atlassian.asap.api.exception.CannotRetrieveKeyException;
4   import com.atlassian.asap.core.exception.PublicKeyNotFoundException;
5   import com.atlassian.asap.core.exception.PublicKeyRetrievalException;
6   import com.atlassian.asap.core.keys.PemReader;
7   import com.atlassian.asap.core.validator.ValidatedKeyId;
8   import org.junit.Rule;
9   import org.junit.Test;
10  import org.junit.rules.TemporaryFolder;
11  import org.junit.runner.RunWith;
12  import org.mockito.Mock;
13  import org.mockito.runners.MockitoJUnitRunner;
14  
15  import java.io.Reader;
16  import java.security.PublicKey;
17  
18  import static org.junit.Assert.assertSame;
19  import static org.mockito.Matchers.any;
20  import static org.mockito.Mockito.verify;
21  import static org.mockito.Mockito.when;
22  
23  @RunWith(MockitoJUnitRunner.class)
24  public class FilePublicKeyProviderTest {
25      @Rule
26      public TemporaryFolder temporaryFolder = new TemporaryFolder();
27  
28      @Mock
29      private PemReader pemReader;
30      @Mock
31      private PublicKey publicKey;
32  
33      private FilePublicKeyProvider provider;
34  
35      @Test
36      public void shouldReadKeyFromKeyFile() throws Exception {
37          temporaryFolder.newFile("some-key-id");
38  
39          when(pemReader.readPublicKey(any(Reader.class))).thenReturn(publicKey);
40  
41          provider = new FilePublicKeyProvider(temporaryFolder.getRoot(), pemReader);
42          PublicKey actualKey = provider.getKey(ValidatedKeyId.validate("some-key-id"));
43  
44          assertSame(publicKey, actualKey);
45  
46          verify(pemReader).readPublicKey(any(Reader.class));
47      }
48  
49      @Test(expected = PublicKeyNotFoundException.class)
50      public void shouldFailIfKeyFileDoesNotExist() throws Exception {
51          provider = new FilePublicKeyProvider(temporaryFolder.getRoot(), pemReader);
52          provider.getKey(ValidatedKeyId.validate("some-key-id"));
53      }
54  
55      @Test(expected = PublicKeyNotFoundException.class)
56      public void shouldFailIfKeyFileIsActuallyADirectory() throws Exception {
57          temporaryFolder.newFolder("some-key-id");
58  
59          provider = new FilePublicKeyProvider(temporaryFolder.getRoot(), pemReader);
60          provider.getKey(ValidatedKeyId.validate("some-key-id"));
61      }
62  
63      @Test(expected = PublicKeyRetrievalException.class)
64      public void shouldFailIfParsingTheKeyFails() throws Exception {
65          temporaryFolder.newFile("some-key-id");
66  
67          when(pemReader.readPublicKey(any(Reader.class)))
68                  .thenThrow(new CannotRetrieveKeyException("cannot parse!"));
69  
70          provider = new FilePublicKeyProvider(temporaryFolder.getRoot(), pemReader);
71          provider.getKey(ValidatedKeyId.validate("some-key-id"));
72      }
73  }