1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package nl.altindag.ssl.trustmanager;
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.SSLEngine;
24 import javax.net.ssl.X509ExtendedTrustManager;
25 import java.net.Socket;
26 import java.security.cert.CertificateException;
27 import java.security.cert.X509Certificate;
28
29 import static org.assertj.core.api.Assertions.assertThat;
30 import static org.assertj.core.api.Assertions.assertThatThrownBy;
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 HotSwappableX509ExtendedTrustManagerShould {
41
42 @Test
43 void checkClientTrusted() throws CertificateException {
44 X509ExtendedTrustManager trustManager = mock(X509ExtendedTrustManager.class);
45
46 X509ExtendedTrustManager victim = new HotSwappableX509ExtendedTrustManager(trustManager);
47 victim.checkClientTrusted(null, null);
48
49 verify(trustManager, times(1)).checkClientTrusted(null, null);
50 }
51
52 @Test
53 void checkClientTrustedWithSocket() throws CertificateException {
54 X509ExtendedTrustManager trustManager = mock(X509ExtendedTrustManager.class);
55
56 X509ExtendedTrustManager victim = new HotSwappableX509ExtendedTrustManager(trustManager);
57 victim.checkClientTrusted(null, null, (Socket) null);
58
59 verify(trustManager, times(1)).checkClientTrusted(null, null, (Socket) null);
60 }
61
62 @Test
63 void checkClientTrustedWithSslEngine() throws CertificateException {
64 X509ExtendedTrustManager trustManager = mock(X509ExtendedTrustManager.class);
65
66 X509ExtendedTrustManager victim = new HotSwappableX509ExtendedTrustManager(trustManager);
67 victim.checkClientTrusted(null, null, (SSLEngine) null);
68
69 verify(trustManager, times(1)).checkClientTrusted(null, null, (SSLEngine) null);
70 }
71
72 @Test
73 void checkServerTrusted() throws CertificateException {
74 X509ExtendedTrustManager trustManager = mock(X509ExtendedTrustManager.class);
75
76 X509ExtendedTrustManager victim = new HotSwappableX509ExtendedTrustManager(trustManager);
77 victim.checkServerTrusted(null, null);
78
79 verify(trustManager, times(1)).checkServerTrusted(null, null);
80 }
81
82 @Test
83 void checkServerTrustedWithSocket() throws CertificateException {
84 X509ExtendedTrustManager trustManager = mock(X509ExtendedTrustManager.class);
85
86 X509ExtendedTrustManager victim = new HotSwappableX509ExtendedTrustManager(trustManager);
87 victim.checkServerTrusted(null, null, (Socket) null);
88
89 verify(trustManager, times(1)).checkServerTrusted(null, null, (Socket) null);
90 }
91
92 @Test
93 void checkServerTrustedWithSslEngine() throws CertificateException {
94 X509ExtendedTrustManager trustManager = mock(X509ExtendedTrustManager.class);
95
96 X509ExtendedTrustManager victim = new HotSwappableX509ExtendedTrustManager(trustManager);
97 victim.checkServerTrusted(null, null, (SSLEngine) null);
98
99 verify(trustManager, times(1)).checkServerTrusted(null, null, (SSLEngine) null);
100 }
101
102 @Test
103 void getAcceptedIssuers() {
104 X509ExtendedTrustManager trustManager = mock(X509ExtendedTrustManager.class);
105 when(trustManager.getAcceptedIssuers()).thenReturn(new X509Certificate[]{mock(X509Certificate.class)});
106
107 X509ExtendedTrustManager victim = new HotSwappableX509ExtendedTrustManager(trustManager);
108 X509Certificate[] acceptedIssuers = victim.getAcceptedIssuers();
109
110 assertThat(acceptedIssuers).hasSize(1);
111 verify(trustManager, times(1)).getAcceptedIssuers();
112 }
113
114 @Test
115 void setTrustManager() throws CertificateException {
116 X509ExtendedTrustManager trustManager = mock(X509ExtendedTrustManager.class);
117
118 HotSwappableX509ExtendedTrustManager victim = new HotSwappableX509ExtendedTrustManager(trustManager);
119 victim.checkServerTrusted(null, null, (SSLEngine) null);
120
121 victim.setTrustManager(mock(X509ExtendedTrustManager.class));
122 victim.checkServerTrusted(null, null, (SSLEngine) null);
123
124 verify(trustManager, times(1)).checkServerTrusted(null, null, (SSLEngine) null);
125 }
126
127 @Test
128 void throwNullPointerExceptionWhenKeyManagerIsNotPresent() {
129 assertThatThrownBy(() -> new HotSwappableX509ExtendedTrustManager(null))
130 .isInstanceOf(NullPointerException.class);
131 }
132
133 }