View Javadoc

1   package com.atlassian.asap.core.keys.privatekey;
2   
3   import com.atlassian.asap.api.exception.CannotRetrieveKeyException;
4   import com.atlassian.asap.core.keys.KeyProvider;
5   import com.atlassian.asap.core.keys.PemReader;
6   import com.atlassian.asap.core.validator.ValidatedKeyId;
7   import org.junit.Rule;
8   import org.junit.Test;
9   import org.junit.rules.TemporaryFolder;
10  import org.junit.runner.RunWith;
11  import org.mockito.Mock;
12  import org.mockito.runners.MockitoJUnitRunner;
13  
14  import java.io.InputStreamReader;
15  import java.security.PrivateKey;
16  import java.security.interfaces.RSAPrivateKey;
17  
18  import static org.junit.Assert.assertEquals;
19  import static org.mockito.Matchers.any;
20  import static org.mockito.Mockito.when;
21  
22  @RunWith(MockitoJUnitRunner.class)
23  public class FilePrivateKeyProviderTest {
24      public static final String VALID_KID = "valid-kid";
25  
26      @Rule
27      public TemporaryFolder temporaryFolder = new TemporaryFolder();
28  
29      @Mock
30      private PemReader pemReader;
31      @Mock
32      private RSAPrivateKey privateKey;
33  
34      @Test
35      public void shouldBeAbleToReadKeyFromFile() throws Exception {
36          temporaryFolder.newFile(VALID_KID);
37  
38          KeyProvider<PrivateKey> keyRetriever =
39                  new FilePrivateKeyProvider(temporaryFolder.getRoot(), pemReader);
40  
41          when(pemReader.readPrivateKey(any(InputStreamReader.class))).thenReturn(privateKey);
42          PrivateKey result = keyRetriever.getKey(ValidatedKeyId.validate(VALID_KID));
43  
44          assertEquals(privateKey, result);
45  
46      }
47  
48      @Test(expected = CannotRetrieveKeyException.class)
49      public void shouldGetErrorWhenReadingKeyFromNonExistentFile() throws Exception {
50          KeyProvider<PrivateKey> keyRetriever =
51                  new FilePrivateKeyProvider(temporaryFolder.getRoot(), pemReader);
52  
53          keyRetriever.getKey(ValidatedKeyId.validate("non-existent"));
54      }
55  }