Skip to content

Commit

Permalink
Add an integration test
Browse files Browse the repository at this point in the history
Signed-off-by: Jacek Ewertowski <[email protected]>
  • Loading branch information
jewertow committed Feb 7, 2025
1 parent 364ac7d commit 6d969d2
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 1 deletion.
3 changes: 2 additions & 1 deletion source/common/tcp_proxy/tcp_proxy.cc
Original file line number Diff line number Diff line change
Expand Up @@ -799,7 +799,8 @@ void TunnelingConfigHelperImpl::propagateResponseTrailers(
StreamInfo::FilterState::StateType::ReadOnly, StreamInfo::FilterState::LifeSpan::Connection);
}

absl::Status TunnelingConfigHelperImpl::injectCredentials(Http::RequestHeaderMapPtr& headers) const {
absl::Status
TunnelingConfigHelperImpl::injectCredentials(Http::RequestHeaderMapPtr& headers) const {
if (credential_injector_ != nullptr) {
const auto status = credential_injector_->inject(*headers, true);
if (!status.ok()) {
Expand Down
1 change: 1 addition & 0 deletions source/extensions/http/injected_credentials/generic/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ envoy_cc_extension(
name = "config",
srcs = ["config.cc"],
hdrs = ["config.h"],
visibility = ["//visibility:public"],
deps = [
":generic_lib",
"//source/common/http:headers_lib",
Expand Down
1 change: 1 addition & 0 deletions test/integration/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -1956,6 +1956,7 @@ envoy_cc_test(
":http_protocol_integration_lib",
":tcp_tunneling_integration_lib",
"//source/extensions/filters/network/tcp_proxy:config",
"//source/extensions/http/injected_credentials/generic:config",
"//source/extensions/upstreams/http/tcp:config",
"//test/integration/filters:add_header_filter_config_lib",
"//test/integration/filters:add_header_filter_proto_cc_proto",
Expand Down
47 changes: 47 additions & 0 deletions test/integration/tcp_tunneling_integration_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2325,6 +2325,53 @@ TEST_P(TcpTunnelingIntegrationTest,
EXPECT_THAT(waitForAccessLog(access_log_filename), testing::HasSubstr(expected_log));
}

TEST_P(TcpTunnelingIntegrationTest, InjectProxyAuthorizationBasic) {
auto credential_config = std::make_unique<envoy::config::core::v3::TypedExtensionConfig>();
TestUtility::loadFromYaml(R"EOF(
name: envoy.http.injected_credentials.generic
typed_config:
"@type": type.googleapis.com/envoy.extensions.http.injected_credentials.generic.v3.Generic
credential:
name: proxy_authorization
header: Proxy-Authorization
)EOF",
*credential_config.get());

config_helper_.addConfigModifier([&](envoy::config::bootstrap::v3::Bootstrap& bootstrap) -> void {
envoy::extensions::filters::network::tcp_proxy::v3::TcpProxy proxy_config;
proxy_config.set_stat_prefix("tcp_stats");
proxy_config.set_cluster("cluster_0");
proxy_config.mutable_tunneling_config()->set_hostname("foo.lyft.com:80");
proxy_config.mutable_tunneling_config()->set_allocated_credential(credential_config.release());

auto* listeners = bootstrap.mutable_static_resources()->mutable_listeners();
for (auto& listener : *listeners) {
if (listener.name() != "tcp_proxy") {
continue;
}
auto* filter_chain = listener.mutable_filter_chains(0);
auto* filter = filter_chain->mutable_filters(0);
filter->mutable_typed_config()->PackFrom(proxy_config);
break;
}

auto* secret = bootstrap.mutable_static_resources()->add_secrets();
secret->set_name("proxy_authorization");
auto* generic = secret->mutable_generic_secret();
generic->mutable_secret()->set_inline_string("Basic base64EncodedUsernamePassword");
});
initialize();

setUpConnection(fake_upstream_connection_);
sendBidiData(fake_upstream_connection_);
EXPECT_EQ("Basic base64EncodedUsernamePassword",
upstream_request_->headers()
.get(Http::LowerCaseString("Proxy-Authorization"))[0]
->value()
.getStringView());
closeConnection(fake_upstream_connection_);
}

INSTANTIATE_TEST_SUITE_P(
IpAndHttpVersions, TcpTunnelingIntegrationTest,
testing::ValuesIn(BaseTcpTunnelingIntegrationTest::getProtocolTestParams(
Expand Down

0 comments on commit 6d969d2

Please sign in to comment.