2222import com .google .protobuf .Any ;
2323import com .google .protobuf .BoolValue ;
2424import io .envoyproxy .envoy .config .common .mutation_rules .v3 .HeaderMutationRules ;
25+ import io .envoyproxy .envoy .config .core .v3 .GrpcService ;
2526import io .envoyproxy .envoy .config .core .v3 .HeaderValue ;
2627import io .envoyproxy .envoy .config .core .v3 .RuntimeFeatureFlag ;
2728import io .envoyproxy .envoy .config .core .v3 .RuntimeFractionalPercent ;
3435import io .envoyproxy .envoy .type .v3 .FractionalPercent ;
3536import io .envoyproxy .envoy .type .v3 .FractionalPercent .DenominatorType ;
3637import io .grpc .Status ;
38+ import io .grpc .xds .client .Bootstrapper .BootstrapInfo ;
39+ import io .grpc .xds .client .Bootstrapper .ServerInfo ;
40+ import io .grpc .xds .client .EnvoyProtoData .Node ;
3741import io .grpc .xds .internal .Matchers ;
3842import io .grpc .xds .internal .headermutations .HeaderMutationRulesConfig ;
43+ import java .util .Collections ;
3944import org .junit .Before ;
4045import org .junit .Test ;
4146import org .junit .runner .RunWith ;
@@ -49,13 +54,23 @@ public class ExtAuthzConfigParserTest {
4954 private static final Any FAKE_ACCESS_TOKEN_CALL_CREDS =
5055 Any .pack (AccessTokenCredentials .newBuilder ().setToken ("fake-token" ).build ());
5156
57+ private static BootstrapInfo dummyBootstrapInfo () {
58+ return BootstrapInfo .builder ()
59+ .servers (
60+ Collections .singletonList (ServerInfo .create ("test_target" , Collections .emptyMap ())))
61+ .node (Node .newBuilder ().build ()).build ();
62+ }
63+
64+ private static ServerInfo dummyServerInfo () {
65+ return ServerInfo .create ("test_target" , Collections .emptyMap (), false , true , false , false );
66+ }
67+
5268 private ExtAuthz .Builder extAuthzBuilder ;
5369
5470 @ Before
5571 public void setUp () {
5672 extAuthzBuilder = ExtAuthz .newBuilder ()
57- .setGrpcService (io .envoyproxy .envoy .config .core .v3 .GrpcService .newBuilder ()
58- .setGoogleGrpc (io .envoyproxy .envoy .config .core .v3 .GrpcService .GoogleGrpc .newBuilder ()
73+ .setGrpcService (GrpcService .newBuilder ().setGoogleGrpc (GrpcService .GoogleGrpc .newBuilder ()
5974 .setTargetUri ("test-cluster" )
6075 .addChannelCredentialsPlugin (GOOGLE_DEFAULT_CHANNEL_CREDS )
6176 .addCallCredentialsPlugin (FAKE_ACCESS_TOKEN_CALL_CREDS ).build ())
@@ -67,7 +82,8 @@ public void parse_missingGrpcService_throws() {
6782 ExtAuthz extAuthz = ExtAuthz .newBuilder ().build ();
6883 try {
6984 ExtAuthzConfigParser .parse (extAuthz ,
70- io .grpc .xds .internal .grpcservice .GrpcServiceXdsContextTestUtil .dummyProvider ());
85+ dummyBootstrapInfo (),
86+ dummyServerInfo ());
7187 fail ("Expected ExtAuthzParseException" );
7288 } catch (ExtAuthzParseException e ) {
7389 assertThat (e ).hasMessageThat ()
@@ -78,11 +94,12 @@ public void parse_missingGrpcService_throws() {
7894 @ Test
7995 public void parse_invalidGrpcService_throws () {
8096 ExtAuthz extAuthz = ExtAuthz .newBuilder ()
81- .setGrpcService (io . envoyproxy . envoy . config . core . v3 . GrpcService .newBuilder ().build ())
97+ .setGrpcService (GrpcService .newBuilder ().build ())
8298 .build ();
8399 try {
84100 ExtAuthzConfigParser .parse (extAuthz ,
85- io .grpc .xds .internal .grpcservice .GrpcServiceXdsContextTestUtil .dummyProvider ());
101+ dummyBootstrapInfo (),
102+ dummyServerInfo ());
86103 fail ("Expected ExtAuthzParseException" );
87104 } catch (ExtAuthzParseException e ) {
88105 assertThat (e ).hasMessageThat ().startsWith ("Failed to parse GrpcService config:" );
@@ -97,7 +114,8 @@ public void parse_invalidAllowExpression_throws() {
97114 .build ();
98115 try {
99116 ExtAuthzConfigParser .parse (extAuthz ,
100- io .grpc .xds .internal .grpcservice .GrpcServiceXdsContextTestUtil .dummyProvider ());
117+ dummyBootstrapInfo (),
118+ dummyServerInfo ());
101119 fail ("Expected ExtAuthzParseException" );
102120 } catch (ExtAuthzParseException e ) {
103121 assertThat (e ).hasMessageThat ().startsWith ("Invalid regex pattern for allow_expression:" );
@@ -112,7 +130,8 @@ public void parse_invalidDisallowExpression_throws() {
112130 .build ();
113131 try {
114132 ExtAuthzConfigParser .parse (extAuthz ,
115- io .grpc .xds .internal .grpcservice .GrpcServiceXdsContextTestUtil .dummyProvider ());
133+ dummyBootstrapInfo (),
134+ dummyServerInfo ());
116135 fail ("Expected ExtAuthzParseException" );
117136 } catch (ExtAuthzParseException e ) {
118137 assertThat (e ).hasMessageThat ().startsWith ("Invalid regex pattern for disallow_expression:" );
@@ -149,7 +168,8 @@ public void parse_success() throws ExtAuthzParseException {
149168 .build ();
150169
151170 ExtAuthzConfig config = ExtAuthzConfigParser .parse (extAuthz ,
152- io .grpc .xds .internal .grpcservice .GrpcServiceXdsContextTestUtil .dummyProvider ());
171+ dummyBootstrapInfo (),
172+ dummyServerInfo ());
153173
154174 assertThat (config .grpcService ().googleGrpc ().target ()).isEqualTo ("test-cluster" );
155175 assertThat (config .grpcService ().timeout ().get ().getSeconds ()).isEqualTo (5 );
@@ -178,7 +198,8 @@ public void parse_saneDefaults() throws ExtAuthzParseException {
178198 ExtAuthz extAuthz = extAuthzBuilder .build ();
179199
180200 ExtAuthzConfig config = ExtAuthzConfigParser .parse (extAuthz ,
181- io .grpc .xds .internal .grpcservice .GrpcServiceXdsContextTestUtil .dummyProvider ());
201+ dummyBootstrapInfo (),
202+ dummyServerInfo ());
182203
183204 assertThat (config .failureModeAllow ()).isFalse ();
184205 assertThat (config .failureModeAllowHeaderAdd ()).isFalse ();
@@ -199,7 +220,8 @@ public void parse_headerMutationRules_allowExpressionOnly() throws ExtAuthzParse
199220 .build ();
200221
201222 ExtAuthzConfig config = ExtAuthzConfigParser .parse (extAuthz ,
202- io .grpc .xds .internal .grpcservice .GrpcServiceXdsContextTestUtil .dummyProvider ());
223+ dummyBootstrapInfo (),
224+ dummyServerInfo ());
203225
204226 assertThat (config .decoderHeaderMutationRules ().isPresent ()).isTrue ();
205227 HeaderMutationRulesConfig rules = config .decoderHeaderMutationRules ().get ();
@@ -215,7 +237,8 @@ public void parse_headerMutationRules_disallowExpressionOnly() throws ExtAuthzPa
215237 .build ()).build ();
216238
217239 ExtAuthzConfig config = ExtAuthzConfigParser .parse (extAuthz ,
218- io .grpc .xds .internal .grpcservice .GrpcServiceXdsContextTestUtil .dummyProvider ());
240+ dummyBootstrapInfo (),
241+ dummyServerInfo ());
219242
220243 assertThat (config .decoderHeaderMutationRules ().isPresent ()).isTrue ();
221244 HeaderMutationRulesConfig rules = config .decoderHeaderMutationRules ().get ();
@@ -231,7 +254,8 @@ public void parse_filterEnabled_hundred() throws ExtAuthzParseException {
231254 .build ();
232255
233256 ExtAuthzConfig config = ExtAuthzConfigParser .parse (extAuthz ,
234- io .grpc .xds .internal .grpcservice .GrpcServiceXdsContextTestUtil .dummyProvider ());
257+ dummyBootstrapInfo (),
258+ dummyServerInfo ());
235259
236260 assertThat (config .filterEnabled ()).isEqualTo (Matchers .FractionMatcher .create (25 , 100 ));
237261 }
@@ -245,7 +269,8 @@ public void parse_filterEnabled_million() throws ExtAuthzParseException {
245269 .build ();
246270
247271 ExtAuthzConfig config = ExtAuthzConfigParser .parse (extAuthz ,
248- io .grpc .xds .internal .grpcservice .GrpcServiceXdsContextTestUtil .dummyProvider ());
272+ dummyBootstrapInfo (),
273+ dummyServerInfo ());
249274
250275 assertThat (config .filterEnabled ())
251276 .isEqualTo (Matchers .FractionMatcher .create (123456 , 1_000_000 ));
@@ -260,7 +285,8 @@ public void parse_filterEnabled_unrecognizedDenominator() {
260285
261286 try {
262287 ExtAuthzConfigParser .parse (extAuthz ,
263- io .grpc .xds .internal .grpcservice .GrpcServiceXdsContextTestUtil .dummyProvider ());
288+ dummyBootstrapInfo (),
289+ dummyServerInfo ());
264290 fail ("Expected ExtAuthzParseException" );
265291 } catch (ExtAuthzParseException e ) {
266292 assertThat (e ).hasMessageThat ().isEqualTo ("Unknown denominator type: UNRECOGNIZED" );
0 commit comments