@@ -75,9 +75,64 @@ describe('Server xDS Credentials', () => {
7575 common_tls_context : {
7676 tls_certificate_provider_instance : {
7777 instance_name : 'test_certificates'
78+ } ,
79+ validation_context : { }
80+ } ,
81+ ocsp_staple_policy : 'LENIENT_STAPLING'
82+ }
83+ const baseServerListener : Listener = {
84+ default_filter_chain : {
85+ filter_chain_match : {
86+ source_type : 'SAME_IP_OR_LOOPBACK'
87+ } ,
88+ transport_socket : {
89+ name : 'envoy.transport_sockets.tls' ,
90+ typed_config : downstreamTlsContext
7891 }
7992 }
8093 }
94+ const serverRoute = new FakeServerRoute ( backend . getPort ( ) , 'serverRoute' , baseServerListener ) ;
95+ xdsServer . setRdsResource ( serverRoute . getRouteConfiguration ( ) ) ;
96+ xdsServer . setLdsResource ( serverRoute . getListener ( ) ) ;
97+ xdsServer . addResponseListener ( ( typeUrl , responseState ) => {
98+ if ( responseState . state === 'NACKED' ) {
99+ client ?. stopCalls ( ) ;
100+ assert . fail ( `Client NACKED ${ typeUrl } resource with message ${ responseState . errorMessage } ` ) ;
101+ }
102+ } ) ;
103+ const cluster = new FakeEdsCluster ( 'cluster1' , 'endpoint1' , [ { backends : [ backend ] , locality :{ region : 'region1' } } ] ) ;
104+ const routeGroup = new FakeRouteGroup ( 'listener1' , 'route1' , [ { cluster : cluster } ] ) ;
105+ await routeGroup . startAllBackends ( xdsServer ) ;
106+ xdsServer . setEdsResource ( cluster . getEndpointConfig ( ) ) ;
107+ xdsServer . setCdsResource ( cluster . getClusterConfig ( ) ) ;
108+ xdsServer . setRdsResource ( routeGroup . getRouteConfiguration ( ) ) ;
109+ xdsServer . setLdsResource ( routeGroup . getListener ( ) ) ;
110+ client = XdsTestClient . createFromServer ( 'listener1' , xdsServer , credentials . createSsl ( ca ) , {
111+ 'grpc.ssl_target_name_override' : 'foo.test.google.fr' ,
112+ 'grpc.default_authority' : 'foo.test.google.fr' ,
113+ } ) ;
114+ const error = await client . sendOneCallAsync ( ) ;
115+ assert . strictEqual ( error , null ) ;
116+ } ) ;
117+ it ( 'Should use identity and CA certificates when configured' , async ( ) => {
118+ const [ backend ] = await createBackends ( 1 , true , new XdsServerCredentials ( ServerCredentials . createInsecure ( ) ) ) ;
119+ const downstreamTlsContext : DownstreamTlsContext & AnyExtension = {
120+ '@type' : DOWNSTREAM_TLS_CONTEXT_TYPE_URL ,
121+ common_tls_context : {
122+ tls_certificate_provider_instance : {
123+ instance_name : 'test_certificates'
124+ } ,
125+ validation_context : {
126+ ca_certificate_provider_instance : {
127+ instance_name : 'test_certificates'
128+ }
129+ }
130+ } ,
131+ ocsp_staple_policy : 'LENIENT_STAPLING' ,
132+ require_client_certificate : {
133+ value : true
134+ }
135+ }
81136 const baseServerListener : Listener = {
82137 default_filter_chain : {
83138 filter_chain_match : {
@@ -105,7 +160,10 @@ describe('Server xDS Credentials', () => {
105160 xdsServer . setCdsResource ( cluster . getClusterConfig ( ) ) ;
106161 xdsServer . setRdsResource ( routeGroup . getRouteConfiguration ( ) ) ;
107162 xdsServer . setLdsResource ( routeGroup . getListener ( ) ) ;
108- client = XdsTestClient . createFromServer ( 'listener1' , xdsServer , credentials . createSsl ( ca ) ) ;
163+ client = XdsTestClient . createFromServer ( 'listener1' , xdsServer , credentials . createSsl ( ca , key , cert ) , {
164+ 'grpc.ssl_target_name_override' : 'foo.test.google.fr' ,
165+ 'grpc.default_authority' : 'foo.test.google.fr' ,
166+ } ) ;
109167 const error = await client . sendOneCallAsync ( ) ;
110168 assert . strictEqual ( error , null ) ;
111169 } ) ;
0 commit comments