1717package io .grpc .xds .internal .security ;
1818
1919import static com .google .common .truth .Truth .assertThat ;
20- import static io .grpc .xds .internal .security .CommonTlsContextTestsUtil .buildUpstreamTlsContext ;
21- import static org .mockito .ArgumentMatchers .any ;
2220import static org .mockito .ArgumentMatchers .eq ;
21+ import static org .mockito .Mockito .any ;
2322import static org .mockito .Mockito .doReturn ;
2423import static org .mockito .Mockito .doThrow ;
2524import static org .mockito .Mockito .mock ;
2625import static org .mockito .Mockito .never ;
27- import static org .mockito .Mockito .reset ;
2826import static org .mockito .Mockito .times ;
2927import static org .mockito .Mockito .verify ;
3028
31- import io .envoyproxy .envoy .extensions .transport_sockets .tls .v3 .CertificateValidationContext ;
3229import io .grpc .xds .EnvoyServerProtoData ;
3330import io .grpc .xds .TlsContextManager ;
3431import io .netty .handler .ssl .SslContext ;
@@ -50,33 +47,31 @@ public class SslContextProviderSupplierTest {
5047 @ Rule public final MockitoRule mocks = MockitoJUnit .rule ();
5148
5249 @ Mock private TlsContextManager mockTlsContextManager ;
53- @ Mock private Executor mockExecutor ;
5450 private SslContextProviderSupplier supplier ;
5551 private SslContextProvider mockSslContextProvider ;
5652 private EnvoyServerProtoData .UpstreamTlsContext upstreamTlsContext ;
5753 private SslContextProvider .Callback mockCallback ;
5854
59- private void prepareSupplier (boolean createUpstreamTlsContext ) {
60- if (createUpstreamTlsContext ) {
61- upstreamTlsContext =
62- buildUpstreamTlsContext ("google_cloud_private_spiffe" , true );
63- }
55+ private void prepareSupplier () {
56+ upstreamTlsContext =
57+ CommonTlsContextTestsUtil .buildUpstreamTlsContext ("google_cloud_private_spiffe" , true );
6458 mockSslContextProvider = mock (SslContextProvider .class );
6559 doReturn (mockSslContextProvider )
66- .when (mockTlsContextManager )
67- .findOrCreateClientSslContextProvider (eq (upstreamTlsContext ));
60+ .when (mockTlsContextManager )
61+ .findOrCreateClientSslContextProvider (eq (upstreamTlsContext ));
6862 supplier = new SslContextProviderSupplier (upstreamTlsContext , mockTlsContextManager );
6963 }
7064
7165 private void callUpdateSslContext () {
7266 mockCallback = mock (SslContextProvider .Callback .class );
67+ Executor mockExecutor = mock (Executor .class );
7368 doReturn (mockExecutor ).when (mockCallback ).getExecutor ();
7469 supplier .updateSslContext (mockCallback );
7570 }
7671
7772 @ Test
7873 public void get_updateSecret () {
79- prepareSupplier (true );
74+ prepareSupplier ();
8075 callUpdateSslContext ();
8176 verify (mockTlsContextManager , times (2 ))
8277 .findOrCreateClientSslContextProvider (eq (upstreamTlsContext ));
@@ -100,12 +95,11 @@ public void get_updateSecret() {
10095
10196 @ Test
10297 public void get_onException () {
103- prepareSupplier (true );
98+ prepareSupplier ();
10499 callUpdateSslContext ();
105100 ArgumentCaptor <SslContextProvider .Callback > callbackCaptor =
106101 ArgumentCaptor .forClass (SslContextProvider .Callback .class );
107- verify (mockSslContextProvider , times (1 ))
108- .addCallback (callbackCaptor .capture ());
102+ verify (mockSslContextProvider , times (1 )).addCallback (callbackCaptor .capture ());
109103 SslContextProvider .Callback capturedCallback = callbackCaptor .getValue ();
110104 assertThat (capturedCallback ).isNotNull ();
111105 Exception exception = new Exception ("test" );
@@ -115,71 +109,9 @@ public void get_onException() {
115109 .releaseClientSslContextProvider (eq (mockSslContextProvider ));
116110 }
117111
118- @ Test
119- public void systemRootCertsWithMtls_callbackExecutedFromProvider () {
120- upstreamTlsContext =
121- CommonTlsContextTestsUtil .buildNewUpstreamTlsContextForCertProviderInstance (
122- "gcp_id" ,
123- "cert-default" ,
124- null ,
125- "root-default" ,
126- null ,
127- CertificateValidationContext .newBuilder ()
128- .setSystemRootCerts (
129- CertificateValidationContext .SystemRootCerts .getDefaultInstance ())
130- .build ());
131- prepareSupplier (false );
132-
133- callUpdateSslContext ();
134-
135- verify (mockTlsContextManager , times (2 ))
136- .findOrCreateClientSslContextProvider (eq (upstreamTlsContext ));
137- verify (mockTlsContextManager , times (0 ))
138- .releaseClientSslContextProvider (any (SslContextProvider .class ));
139- ArgumentCaptor <SslContextProvider .Callback > callbackCaptor =
140- ArgumentCaptor .forClass (SslContextProvider .Callback .class );
141- verify (mockSslContextProvider , times (1 )).addCallback (callbackCaptor .capture ());
142- SslContextProvider .Callback capturedCallback = callbackCaptor .getValue ();
143- assertThat (capturedCallback ).isNotNull ();
144- SslContext mockSslContext = mock (SslContext .class );
145- capturedCallback .updateSslContext (mockSslContext );
146- verify (mockCallback , times (1 )).updateSslContext (eq (mockSslContext ));
147- verify (mockTlsContextManager , times (1 ))
148- .releaseClientSslContextProvider (eq (mockSslContextProvider ));
149- SslContextProvider .Callback mockCallback = mock (SslContextProvider .Callback .class );
150- supplier .updateSslContext (mockCallback );
151- verify (mockTlsContextManager , times (3 ))
152- .findOrCreateClientSslContextProvider (eq (upstreamTlsContext ));
153- }
154-
155- @ Test
156- public void systemRootCertsWithRegularTls_callbackExecutedFromSupplier () {
157- upstreamTlsContext =
158- CommonTlsContextTestsUtil .buildNewUpstreamTlsContextForCertProviderInstance (
159- null ,
160- null ,
161- null ,
162- "root-default" ,
163- null ,
164- CertificateValidationContext .newBuilder ()
165- .setSystemRootCerts (
166- CertificateValidationContext .SystemRootCerts .getDefaultInstance ())
167- .build ());
168- supplier = new SslContextProviderSupplier (upstreamTlsContext , mockTlsContextManager );
169- reset (mockTlsContextManager );
170-
171- callUpdateSslContext ();
172- ArgumentCaptor <Runnable > runnableArgumentCaptor = ArgumentCaptor .forClass (Runnable .class );
173- verify (mockExecutor ).execute (runnableArgumentCaptor .capture ());
174- runnableArgumentCaptor .getValue ().run ();
175- verify (mockCallback , times (1 )).updateSslContext (any (SslContext .class ));
176- verify (mockTlsContextManager , times (1 ))
177- .releaseClientSslContextProvider (eq (mockSslContextProvider ));
178- }
179-
180112 @ Test
181113 public void testClose () {
182- prepareSupplier (true );
114+ prepareSupplier ();
183115 callUpdateSslContext ();
184116 supplier .close ();
185117 verify (mockTlsContextManager , times (1 ))
@@ -193,7 +125,7 @@ public void testClose() {
193125
194126 @ Test
195127 public void testClose_nullSslContextProvider () {
196- prepareSupplier (true );
128+ prepareSupplier ();
197129 doThrow (new NullPointerException ()).when (mockTlsContextManager )
198130 .releaseClientSslContextProvider (null );
199131 supplier .close ();
@@ -203,4 +135,4 @@ public void testClose_nullSslContextProvider() {
203135 verify (mockTlsContextManager , times (1 ))
204136 .findOrCreateClientSslContextProvider (eq (upstreamTlsContext ));
205137 }
206- }
138+ }
0 commit comments