View Javadoc
1   /*
2    * Copyright 2019-2021 the original author or authors.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *      https://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
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.X509TrustManager;
25  
26  import java.net.Socket;
27  import java.security.cert.CertificateException;
28  import java.security.cert.X509Certificate;
29  
30  import static org.assertj.core.api.Assertions.assertThat;
31  import static org.assertj.core.api.Assertions.assertThatThrownBy;
32  import static org.mockito.Mockito.mock;
33  import static org.mockito.Mockito.times;
34  import static org.mockito.Mockito.verify;
35  import static org.mockito.Mockito.when;
36  
37  /**
38   * @author Hakan Altindag
39   */
40  @ExtendWith(MockitoExtension.class)
41  class X509TrustManagerWrapperShould {
42  
43      @Test
44      void checkClientTrusted() throws CertificateException {
45          X509TrustManager trustManager = mock(X509TrustManager.class);
46  
47          X509TrustManagerWrapper victim = new X509TrustManagerWrapper(trustManager);
48          victim.checkClientTrusted(null, null);
49  
50          verify(trustManager, times(1)).checkClientTrusted(null, null);
51      }
52  
53      @Test
54      void checkClientTrustedWithSocket() throws CertificateException {
55          X509TrustManager trustManager = mock(X509TrustManager.class);
56  
57          X509TrustManagerWrapper victim = new X509TrustManagerWrapper(trustManager);
58          victim.checkClientTrusted(null, null, (Socket) null);
59  
60          verify(trustManager, times(1)).checkClientTrusted(null, null);
61      }
62  
63      @Test
64      void checkClientTrustedWithSslEngine() throws CertificateException {
65          X509TrustManager trustManager = mock(X509TrustManager.class);
66  
67          X509TrustManagerWrapper victim = new X509TrustManagerWrapper(trustManager);
68          victim.checkClientTrusted(null, null, (SSLEngine) null);
69  
70          verify(trustManager, times(1)).checkClientTrusted(null, null);
71      }
72  
73      @Test
74      void checkServerTrusted() throws CertificateException {
75          X509TrustManager trustManager = mock(X509TrustManager.class);
76  
77          X509TrustManagerWrapper victim = new X509TrustManagerWrapper(trustManager);
78          victim.checkServerTrusted(null, null);
79  
80          verify(trustManager, times(1)).checkServerTrusted(null, null);
81      }
82  
83      @Test
84      void checkServerTrustedWithSocket() throws CertificateException {
85          X509TrustManager trustManager = mock(X509TrustManager.class);
86  
87          X509TrustManagerWrapper victim = new X509TrustManagerWrapper(trustManager);
88          victim.checkServerTrusted(null, null, (Socket) null);
89  
90          verify(trustManager, times(1)).checkServerTrusted(null, null);
91      }
92  
93      @Test
94      void checkServerTrustedWithSslEngine() throws CertificateException {
95          X509TrustManager trustManager = mock(X509TrustManager.class);
96  
97          X509TrustManagerWrapper victim = new X509TrustManagerWrapper(trustManager);
98          victim.checkServerTrusted(null, null, (SSLEngine) null);
99  
100         verify(trustManager, times(1)).checkServerTrusted(null, null);
101     }
102 
103     @Test
104     void getAcceptedIssuers() {
105         X509TrustManager trustManager = mock(X509TrustManager.class);
106         when(trustManager.getAcceptedIssuers()).thenReturn(new X509Certificate[]{mock(X509Certificate.class)});
107 
108         X509TrustManagerWrapper victim = new X509TrustManagerWrapper(trustManager);
109         X509Certificate[] acceptedIssuers = victim.getAcceptedIssuers();
110 
111         assertThat(acceptedIssuers).hasSize(1);
112         verify(trustManager, times(1)).getAcceptedIssuers();
113     }
114 
115     @Test
116     void throwNullPointerExceptionWhenKeyManagerIsNotPresent() {
117         assertThatThrownBy(() -> new X509TrustManagerWrapper(null))
118                 .isInstanceOf(NullPointerException.class);
119     }
120 
121 }