@@ -172,6 +172,12 @@ public BinderClientTransportBuilder setReadyTimeoutMillis(int timeoutMillis) {
172
172
return this ;
173
173
}
174
174
175
+ @ CanIgnoreReturnValue
176
+ public BinderClientTransportBuilder setPreAuthorizeServer (boolean preAuthorizeServer ) {
177
+ factoryBuilder .setPreAuthorizeServers (preAuthorizeServer );
178
+ return this ;
179
+ }
180
+
175
181
public BinderTransport .BinderClientTransport build () {
176
182
return factoryBuilder
177
183
.buildClientTransportFactory ()
@@ -372,11 +378,12 @@ public void testBlackHoleEndpointConnectTimeout() throws Exception {
372
378
}
373
379
374
380
@ Test
375
- public void testBlackHoleSecurityPolicyConnectTimeout () throws Exception {
381
+ public void testBlackHoleSecurityPolicyAuthTimeout () throws Exception {
376
382
SettableAsyncSecurityPolicy securityPolicy = new SettableAsyncSecurityPolicy ();
377
383
transport =
378
384
new BinderClientTransportBuilder ()
379
385
.setSecurityPolicy (securityPolicy )
386
+ .setPreAuthorizeServer (false )
380
387
.setReadyTimeoutMillis (1_234 )
381
388
.build ();
382
389
transport .start (transportListener ).run ();
@@ -387,15 +394,39 @@ public void testBlackHoleSecurityPolicyConnectTimeout() throws Exception {
387
394
assertThat (transportStatus .getCode ()).isEqualTo (Code .DEADLINE_EXCEEDED );
388
395
assertThat (transportStatus .getDescription ()).contains ("1234" );
389
396
transportListener .awaitTermination ();
390
-
391
397
// If the transport gave up waiting on auth, it should cancel its request.
392
398
assertThat (authRequest .isCancelled ()).isTrue ();
393
399
}
394
400
395
401
@ Test
396
- public void testAsyncSecurityPolicyFailure () throws Exception {
402
+ public void testBlackHoleSecurityPolicyPreAuthTimeout () throws Exception {
397
403
SettableAsyncSecurityPolicy securityPolicy = new SettableAsyncSecurityPolicy ();
398
- transport = new BinderClientTransportBuilder ().setSecurityPolicy (securityPolicy ).build ();
404
+ transport =
405
+ new BinderClientTransportBuilder ()
406
+ .setSecurityPolicy (securityPolicy )
407
+ .setPreAuthorizeServer (true )
408
+ .setReadyTimeoutMillis (1_234 )
409
+ .build ();
410
+ transport .start (transportListener ).run ();
411
+ // Take the next authRequest but don't respond to it, in order to trigger the ready timeout.
412
+ AuthRequest preAuthRequest = securityPolicy .takeNextAuthRequest (TIMEOUT_SECONDS , SECONDS );
413
+
414
+ Status transportStatus = transportListener .awaitShutdown ();
415
+ assertThat (transportStatus .getCode ()).isEqualTo (Code .DEADLINE_EXCEEDED );
416
+ assertThat (transportStatus .getDescription ()).contains ("1234" );
417
+ transportListener .awaitTermination ();
418
+ // If the transport gave up waiting on auth, it should cancel its request.
419
+ assertThat (preAuthRequest .isCancelled ()).isTrue ();
420
+ }
421
+
422
+ @ Test
423
+ public void testAsyncSecurityPolicyAuthFailure () throws Exception {
424
+ SettableAsyncSecurityPolicy securityPolicy = new SettableAsyncSecurityPolicy ();
425
+ transport =
426
+ new BinderClientTransportBuilder ()
427
+ .setPreAuthorizeServer (false )
428
+ .setSecurityPolicy (securityPolicy )
429
+ .build ();
399
430
RuntimeException exception = new NullPointerException ();
400
431
transport .start (transportListener ).run ();
401
432
securityPolicy .takeNextAuthRequest (TIMEOUT_SECONDS , SECONDS ).setResult (exception );
@@ -406,15 +437,55 @@ public void testAsyncSecurityPolicyFailure() throws Exception {
406
437
}
407
438
408
439
@ Test
409
- public void testAsyncSecurityPolicySuccess () throws Exception {
440
+ public void testAsyncSecurityPolicyPreAuthFailure () throws Exception {
410
441
SettableAsyncSecurityPolicy securityPolicy = new SettableAsyncSecurityPolicy ();
411
- transport = new BinderClientTransportBuilder ().setSecurityPolicy (securityPolicy ).build ();
442
+ transport =
443
+ new BinderClientTransportBuilder ()
444
+ .setPreAuthorizeServer (true )
445
+ .setSecurityPolicy (securityPolicy )
446
+ .build ();
447
+ RuntimeException exception = new NullPointerException ();
448
+ transport .start (transportListener ).run ();
449
+ securityPolicy .takeNextAuthRequest (TIMEOUT_SECONDS , SECONDS ).setResult (exception );
450
+ Status transportStatus = transportListener .awaitShutdown ();
451
+ assertThat (transportStatus .getCode ()).isEqualTo (Code .INTERNAL );
452
+ assertThat (transportStatus .getCause ()).isEqualTo (exception );
453
+ transportListener .awaitTermination ();
454
+ }
455
+
456
+ @ Test
457
+ public void testAsyncSecurityPolicyAuthSuccess () throws Exception {
458
+ SettableAsyncSecurityPolicy securityPolicy = new SettableAsyncSecurityPolicy ();
459
+ transport =
460
+ new BinderClientTransportBuilder ()
461
+ .setPreAuthorizeServer (false )
462
+ .setSecurityPolicy (securityPolicy )
463
+ .build ();
464
+ transport .start (transportListener ).run ();
465
+ securityPolicy
466
+ .takeNextAuthRequest (TIMEOUT_SECONDS , SECONDS )
467
+ .setResult (Status .PERMISSION_DENIED .withDescription ("xyzzy" ));
468
+ Status transportStatus = transportListener .awaitShutdown ();
469
+ assertThat (transportStatus .getCode ()).isEqualTo (Code .PERMISSION_DENIED );
470
+ assertThat (transportStatus .getDescription ()).contains ("xyzzy" );
471
+ transportListener .awaitTermination ();
472
+ }
473
+
474
+ @ Test
475
+ public void testAsyncSecurityPolicyPreAuthSuccess () throws Exception {
476
+ SettableAsyncSecurityPolicy securityPolicy = new SettableAsyncSecurityPolicy ();
477
+ transport =
478
+ new BinderClientTransportBuilder ()
479
+ .setPreAuthorizeServer (true )
480
+ .setSecurityPolicy (securityPolicy )
481
+ .build ();
412
482
transport .start (transportListener ).run ();
413
483
securityPolicy
414
484
.takeNextAuthRequest (TIMEOUT_SECONDS , SECONDS )
415
- .setResult (Status .PERMISSION_DENIED );
485
+ .setResult (Status .PERMISSION_DENIED . withDescription ( "xyzzy" ) );
416
486
Status transportStatus = transportListener .awaitShutdown ();
417
487
assertThat (transportStatus .getCode ()).isEqualTo (Code .PERMISSION_DENIED );
488
+ assertThat (transportStatus .getDescription ()).contains ("xyzzy" );
418
489
transportListener .awaitTermination ();
419
490
}
420
491
0 commit comments