1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package nl.altindag.ssl.keymanager;
18
19 import org.junit.jupiter.api.Test;
20 import org.junit.jupiter.api.extension.ExtendWith;
21 import org.mockito.junit.jupiter.MockitoExtension;
22
23 import javax.net.ssl.X509KeyManager;
24 import java.security.PrivateKey;
25 import java.security.cert.X509Certificate;
26
27 import static org.assertj.core.api.Assertions.assertThat;
28 import static org.assertj.core.api.Assertions.assertThatThrownBy;
29 import static org.mockito.ArgumentMatchers.any;
30 import static org.mockito.ArgumentMatchers.anyString;
31 import static org.mockito.Mockito.mock;
32 import static org.mockito.Mockito.times;
33 import static org.mockito.Mockito.verify;
34 import static org.mockito.Mockito.when;
35
36
37
38
39 @ExtendWith(MockitoExtension.class)
40 class X509KeyManagerWrapperShould {
41
42 @Test
43 void chooseClientAlias() {
44 X509KeyManager keyManager = mock(X509KeyManager.class);
45 when(keyManager.chooseClientAlias(any(), any(), any())).thenReturn("alias");
46
47 X509KeyManagerWrapper victim = new X509KeyManagerWrapper(keyManager);
48 String clientAlias = victim.chooseClientAlias(null, null, null);
49
50 assertThat(clientAlias).isEqualTo("alias");
51 verify(keyManager, times(1)).chooseClientAlias(null, null, null);
52 }
53
54 @Test
55 void chooseEngineClientAlias() {
56 X509KeyManager keyManager = mock(X509KeyManager.class);
57 when(keyManager.chooseClientAlias(any(), any(), any())).thenReturn("alias");
58
59 X509KeyManagerWrapper victim = new X509KeyManagerWrapper(keyManager);
60 String clientAlias = victim.chooseEngineClientAlias(null, null, null);
61
62 assertThat(clientAlias).isEqualTo("alias");
63 verify(keyManager, times(1)).chooseClientAlias(null, null, null);
64 }
65
66 @Test
67 void chooseServerAlias() {
68 X509KeyManager keyManager = mock(X509KeyManager.class);
69 when(keyManager.chooseServerAlias(any(), any(), any())).thenReturn("alias");
70
71 X509KeyManagerWrapper victim = new X509KeyManagerWrapper(keyManager);
72 String clientAlias = victim.chooseServerAlias(null, null, null);
73
74 assertThat(clientAlias).isEqualTo("alias");
75 verify(keyManager, times(1)).chooseServerAlias(null, null, null);
76 }
77
78 @Test
79 void chooseEngineServerAlias() {
80 X509KeyManager keyManager = mock(X509KeyManager.class);
81 when(keyManager.chooseServerAlias(any(), any(), any())).thenReturn("alias");
82
83 X509KeyManagerWrapper victim = new X509KeyManagerWrapper(keyManager);
84 String clientAlias = victim.chooseEngineServerAlias(null, null, null);
85
86 assertThat(clientAlias).isEqualTo("alias");
87 verify(keyManager, times(1)).chooseServerAlias(null, null, null);
88 }
89
90 @Test
91 void getPrivateKey() {
92 X509KeyManager keyManager = mock(X509KeyManager.class);
93 when(keyManager.getPrivateKey(anyString())).thenReturn(mock(PrivateKey.class));
94
95 X509KeyManagerWrapper victim = new X509KeyManagerWrapper(keyManager);
96 PrivateKey privateKey = victim.getPrivateKey("alias");
97
98 assertThat(privateKey).isNotNull();
99 verify(keyManager, times(1)).getPrivateKey("alias");
100 }
101
102 @Test
103 void getCertificateChain() {
104 X509KeyManager keyManager = mock(X509KeyManager.class);
105 when(keyManager.getCertificateChain(anyString())).thenReturn(new X509Certificate[] { mock(X509Certificate.class) } );
106
107 X509KeyManagerWrapper victim = new X509KeyManagerWrapper(keyManager);
108 X509Certificate[] certificateChain = victim.getCertificateChain("alias");
109
110 assertThat(certificateChain).hasSize(1);
111 verify(keyManager, times(1)).getCertificateChain("alias");
112 }
113
114 @Test
115 void getClientAliases() {
116 X509KeyManager keyManager = mock(X509KeyManager.class);
117 when(keyManager.getClientAliases(any(), any())).thenReturn(new String[]{"alias-1", "alias-2"});
118
119 X509KeyManagerWrapper victim = new X509KeyManagerWrapper(keyManager);
120 String[] clientAliases = victim.getClientAliases(null, null);
121
122 assertThat(clientAliases).containsExactlyInAnyOrder("alias-1", "alias-2");
123 verify(keyManager, times(1)).getClientAliases(null, null);
124 }
125
126 @Test
127 void getServerAliases() {
128 X509KeyManager keyManager = mock(X509KeyManager.class);
129 when(keyManager.getServerAliases(any(), any())).thenReturn(new String[]{"alias-1", "alias-2"});
130
131 X509KeyManagerWrapper victim = new X509KeyManagerWrapper(keyManager);
132 String[] clientAliases = victim.getServerAliases(null, null);
133
134 assertThat(clientAliases).containsExactlyInAnyOrder("alias-1", "alias-2");
135 verify(keyManager, times(1)).getServerAliases(null, null);
136 }
137
138 @Test
139 void throwNullPointerExceptionWhenKeyManagerIsNotPresent() {
140 assertThatThrownBy(() -> new X509KeyManagerWrapper(null))
141 .isInstanceOf(NullPointerException.class);
142 }
143
144 }