@@ -42,6 +42,7 @@ class GcpAuthenticationFilterTest : public FilterTest<GcpAuthenticationFilter> {
4242 protected:
4343 static RefCountedPtr<ServiceConfig> MakeServiceConfig (
4444 absl::string_view service_config_json) {
45+ if (IsXdsChannelFilterChainPerRouteEnabled ()) return nullptr ;
4546 auto service_config = ServiceConfigImpl::Create (
4647 ChannelArgs ().Set (GRPC_ARG_PARSE_GCP_AUTHENTICATION_METHOD_CONFIG,
4748 true ),
@@ -50,6 +51,14 @@ class GcpAuthenticationFilterTest : public FilterTest<GcpAuthenticationFilter> {
5051 return *service_config;
5152 }
5253
54+ static RefCountedPtr<const FilterConfig> MakeFilterConfig (
55+ absl::string_view filter_instance_name) {
56+ if (!IsXdsChannelFilterChainPerRouteEnabled ()) return nullptr ;
57+ auto config = MakeRefCounted<GcpAuthenticationFilter::Config>();
58+ config->instance_name = std::string (filter_instance_name);
59+ return config;
60+ }
61+
5362 static RefCountedPtr<const XdsConfig> MakeXdsConfig (
5463 absl::string_view cluster, absl::string_view filter_instance_name,
5564 std::unique_ptr<XdsMetadataValue> audience_metadata) {
@@ -114,27 +123,34 @@ TEST_F(GcpAuthenticationFilterTest, CreateSucceeds) {
114123 " }" ;
115124 auto channel_args = MakeChannelArgs (kServiceConfigJson , kClusterName ,
116125 kFilterInstanceName , nullptr );
126+ auto filter_config = MakeFilterConfig (kFilterInstanceName );
117127 auto blackboard = MakeBlackboard (kFilterInstanceName );
118128 auto filter = GcpAuthenticationFilter::Create (
119- channel_args, ChannelFilter::Args ( /* instance_id= */ 0 , /* config= */ nullptr ,
120- blackboard.get ()));
129+ channel_args,
130+ ChannelFilter::Args ( /* instance_id= */ 0 , filter_config, blackboard.get ()));
121131 EXPECT_TRUE (filter.ok ()) << filter.status ();
122132}
123133
124- TEST_F (GcpAuthenticationFilterTest, CreateFailsWithoutServiceConfig ) {
134+ TEST_F (GcpAuthenticationFilterTest, CreateFailsWithoutFilterConfig ) {
125135 constexpr absl::string_view kClusterName = " foo" ;
126136 constexpr absl::string_view kFilterInstanceName = " gcp_authn_filter" ;
127137 auto channel_args = ChannelArgs ().SetObject (
128138 MakeXdsConfig (kClusterName , kFilterInstanceName , nullptr ));
129139 auto filter = GcpAuthenticationFilter::Create (
130140 channel_args, ChannelFilter::Args (/* instance_id=*/ 0 ));
131141 EXPECT_EQ (filter.status (),
132- absl::InvalidArgumentError (
133- " gcp_auth: no service config in channel args" ));
142+ IsXdsChannelFilterChainPerRouteEnabled ()
143+ ? absl::InternalError (" gcp_auth: filter config not set" )
144+ : absl::InvalidArgumentError (
145+ " gcp_auth: no service config in channel args" ));
134146}
135147
136148TEST_F (GcpAuthenticationFilterTest,
137149 CreateFailsFilterConfigMissingFromServiceConfig) {
150+ if (IsXdsChannelFilterChainPerRouteEnabled ()) {
151+ GTEST_SKIP () << " test disabled when xds_channel_filter_chain_per_route "
152+ " experiment is enabled" ;
153+ }
138154 constexpr absl::string_view kClusterName = " foo" ;
139155 constexpr absl::string_view kFilterInstanceName = " gcp_authn_filter" ;
140156 constexpr absl::string_view kServiceConfigJson = " {}" ;
@@ -154,10 +170,11 @@ TEST_F(GcpAuthenticationFilterTest, CreateFailsXdsConfigNotFoundInChannelArgs) {
154170 " {\" filter_instance_name\" : \" gcp_authn_filter\" }\n "
155171 " ]\n "
156172 " }" ;
173+ auto filter_config = MakeFilterConfig (" gcp_authn_filter" );
157174 auto channel_args =
158175 ChannelArgs ().SetObject (MakeServiceConfig (kServiceConfigJson ));
159176 auto filter = GcpAuthenticationFilter::Create (
160- channel_args, ChannelFilter::Args (/* instance_id=*/ 0 ));
177+ channel_args, ChannelFilter::Args (/* instance_id=*/ 0 , filter_config ));
161178 EXPECT_EQ (
162179 filter.status (),
163180 absl::InternalError (" gcp_auth: xds config not found in channel args" ));
@@ -174,9 +191,9 @@ TEST_F(GcpAuthenticationFilterTest, FailsCallIfNoXdsClusterAttribute) {
174191 " }" ;
175192 auto channel_args = MakeChannelArgs (kServiceConfigJson , kClusterName ,
176193 kFilterInstanceName , nullptr );
194+ auto filter_config = MakeFilterConfig (kFilterInstanceName );
177195 auto blackboard = MakeBlackboard (kFilterInstanceName );
178- Call call (
179- MakeChannel (channel_args, /* config=*/ nullptr , blackboard.get ()).value ());
196+ Call call (MakeChannel (channel_args, filter_config, blackboard.get ()).value ());
180197 call.arena ()->New <ServiceConfigCallData>(call.arena ());
181198 call.Start (call.NewClientMetadata ());
182199 EXPECT_EVENT (Finished (
@@ -201,9 +218,9 @@ TEST_F(GcpAuthenticationFilterTest, NoOpIfClusterAttributeHasWrongPrefix) {
201218 auto channel_args = MakeChannelArgs (
202219 kServiceConfigJson , kClusterName , kFilterInstanceName ,
203220 std::make_unique<XdsGcpAuthnAudienceMetadataValue>(kAudience ));
221+ auto filter_config = MakeFilterConfig (kFilterInstanceName );
204222 auto blackboard = MakeBlackboard (kFilterInstanceName );
205- Call call (
206- MakeChannel (channel_args, /* config=*/ nullptr , blackboard.get ()).value ());
223+ Call call (MakeChannel (channel_args, filter_config, blackboard.get ()).value ());
207224 auto * service_config_call_data =
208225 call.arena ()->New <ServiceConfigCallData>(call.arena ());
209226 XdsClusterAttribute xds_cluster_attribute (kClusterName );
@@ -219,17 +236,18 @@ TEST_F(GcpAuthenticationFilterTest, NoOpIfClusterAttributeHasWrongPrefix) {
219236
220237TEST_F (GcpAuthenticationFilterTest, FailsCallIfClusterNotPresentInXdsConfig) {
221238 constexpr absl::string_view kClusterName = " foo" ;
239+ constexpr absl::string_view kFilterInstanceName = " gcp_authn_filter" ;
222240 constexpr absl::string_view kServiceConfigJson =
223241 " {\n "
224242 " \" gcp_authentication\" : [\n "
225243 " {\" filter_instance_name\" : \" gcp_authn_filter\" }\n "
226244 " ]\n "
227245 " }" ;
228246 auto channel_args = MakeChannelArgs (kServiceConfigJson , /* cluster=*/ " " ,
229- /* filter_instance_name= */ " " , nullptr );
230- auto blackboard = MakeBlackboard ( " gcp_authn_filter " );
231- Call call (
232- MakeChannel (channel_args, /* config= */ nullptr , blackboard.get ()).value ());
247+ kFilterInstanceName , nullptr );
248+ auto filter_config = MakeFilterConfig ( kFilterInstanceName );
249+ auto blackboard = MakeBlackboard ( kFilterInstanceName );
250+ Call call ( MakeChannel (channel_args, filter_config , blackboard.get ()).value ());
233251 auto * service_config_call_data =
234252 call.arena ()->New <ServiceConfigCallData>(call.arena ());
235253 std::string cluster_name_with_prefix = absl::StrCat (" cluster:" , kClusterName );
@@ -247,6 +265,7 @@ TEST_F(GcpAuthenticationFilterTest, FailsCallIfClusterNotPresentInXdsConfig) {
247265
248266TEST_F (GcpAuthenticationFilterTest, FailsCallIfClusterNotOkayInXdsConfig) {
249267 constexpr absl::string_view kClusterName = " foo" ;
268+ constexpr absl::string_view kFilterInstanceName = " gcp_authn_filter" ;
250269 constexpr absl::string_view kServiceConfigJson =
251270 " {\n "
252271 " \" gcp_authentication\" : [\n "
@@ -257,9 +276,9 @@ TEST_F(GcpAuthenticationFilterTest, FailsCallIfClusterNotOkayInXdsConfig) {
257276 .SetObject (MakeServiceConfig (kServiceConfigJson ))
258277 .SetObject (MakeXdsConfigWithCluster (
259278 kClusterName , absl::UnavailableError (" nope" )));
260- auto blackboard = MakeBlackboard ( " gcp_authn_filter " );
261- Call call (
262- MakeChannel (channel_args, /* config= */ nullptr , blackboard.get ()).value ());
279+ auto filter_config = MakeFilterConfig ( kFilterInstanceName );
280+ auto blackboard = MakeBlackboard ( kFilterInstanceName );
281+ Call call ( MakeChannel (channel_args, filter_config , blackboard.get ()).value ());
263282 auto * service_config_call_data =
264283 call.arena ()->New <ServiceConfigCallData>(call.arena ());
265284 std::string cluster_name_with_prefix = absl::StrCat (" cluster:" , kClusterName );
@@ -278,6 +297,7 @@ TEST_F(GcpAuthenticationFilterTest, FailsCallIfClusterNotOkayInXdsConfig) {
278297TEST_F (GcpAuthenticationFilterTest,
279298 FailsCallIfClusterResourceMissingInXdsConfig) {
280299 constexpr absl::string_view kClusterName = " foo" ;
300+ constexpr absl::string_view kFilterInstanceName = " gcp_authn_filter" ;
281301 constexpr absl::string_view kServiceConfigJson =
282302 " {\n "
283303 " \" gcp_authentication\" : [\n "
@@ -289,9 +309,9 @@ TEST_F(GcpAuthenticationFilterTest,
289309 .SetObject (MakeServiceConfig (kServiceConfigJson ))
290310 .SetObject (MakeXdsConfigWithCluster (
291311 kClusterName , XdsConfig::ClusterConfig (nullptr , nullptr , " " )));
292- auto blackboard = MakeBlackboard ( " gcp_authn_filter " );
293- Call call (
294- MakeChannel (channel_args, /* config= */ nullptr , blackboard.get ()).value ());
312+ auto filter_config = MakeFilterConfig ( kFilterInstanceName );
313+ auto blackboard = MakeBlackboard ( kFilterInstanceName );
314+ Call call ( MakeChannel (channel_args, filter_config , blackboard.get ()).value ());
295315 auto * service_config_call_data =
296316 call.arena ()->New <ServiceConfigCallData>(call.arena ());
297317 std::string cluster_name_with_prefix = absl::StrCat (" cluster:" , kClusterName );
@@ -319,9 +339,9 @@ TEST_F(GcpAuthenticationFilterTest, NoOpIfClusterHasNoAudience) {
319339 " }" ;
320340 auto channel_args = MakeChannelArgs (kServiceConfigJson , kClusterName ,
321341 kFilterInstanceName , nullptr );
342+ auto filter_config = MakeFilterConfig (kFilterInstanceName );
322343 auto blackboard = MakeBlackboard (kFilterInstanceName );
323- Call call (
324- MakeChannel (channel_args, /* config=*/ nullptr , blackboard.get ()).value ());
344+ Call call (MakeChannel (channel_args, filter_config, blackboard.get ()).value ());
325345 auto * service_config_call_data =
326346 call.arena ()->New <ServiceConfigCallData>(call.arena ());
327347 std::string cluster_name_with_prefix = absl::StrCat (" cluster:" , kClusterName );
@@ -348,9 +368,9 @@ TEST_F(GcpAuthenticationFilterTest, FailsCallIfAudienceMetadataWrongType) {
348368 auto channel_args =
349369 MakeChannelArgs (kServiceConfigJson , kClusterName , kFilterInstanceName ,
350370 std::make_unique<XdsStructMetadataValue>(Json ()));
371+ auto filter_config = MakeFilterConfig (kFilterInstanceName );
351372 auto blackboard = MakeBlackboard (kFilterInstanceName );
352- Call call (
353- MakeChannel (channel_args, /* config=*/ nullptr , blackboard.get ()).value ());
373+ Call call (MakeChannel (channel_args, filter_config, blackboard.get ()).value ());
354374 auto * service_config_call_data =
355375 call.arena ()->New <ServiceConfigCallData>(call.arena ());
356376 std::string cluster_name_with_prefix = absl::StrCat (" cluster:" , kClusterName );
@@ -380,9 +400,9 @@ TEST_F(GcpAuthenticationFilterTest, SetsCallCredsIfClusterHasAudience) {
380400 auto channel_args = MakeChannelArgs (
381401 kServiceConfigJson , kClusterName , kFilterInstanceName ,
382402 std::make_unique<XdsGcpAuthnAudienceMetadataValue>(kAudience ));
403+ auto filter_config = MakeFilterConfig (kFilterInstanceName );
383404 auto blackboard = MakeBlackboard (kFilterInstanceName );
384- Call call (
385- MakeChannel (channel_args, /* config=*/ nullptr , blackboard.get ()).value ());
405+ Call call (MakeChannel (channel_args, filter_config, blackboard.get ()).value ());
386406 auto * service_config_call_data =
387407 call.arena ()->New <ServiceConfigCallData>(call.arena ());
388408 std::string cluster_name_with_prefix = absl::StrCat (" cluster:" , kClusterName );
0 commit comments