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 }