Skip to content

Commit 3859905

Browse files
authored
fix: gRPC auth logging enabled by "auth" (#12702)
1 parent 100293f commit 3859905

File tree

2 files changed

+35
-3
lines changed

2 files changed

+35
-3
lines changed

google/cloud/internal/minimal_iam_credentials_stub.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,8 @@ class AsyncAccessTokenGeneratorTracing : public MinimalIamCredentialsStub {
203203
std::shared_ptr<MinimalIamCredentialsStub> DecorateMinimalIamCredentialsStub(
204204
std::shared_ptr<MinimalIamCredentialsStub> impl, Options const& options) {
205205
impl = std::make_shared<AsyncAccessTokenGeneratorMetadata>(std::move(impl));
206-
if (Contains(options.get<TracingComponentsOption>(), "rpc")) {
206+
auto const& components = options.get<TracingComponentsOption>();
207+
if (Contains(components, "auth") || Contains(components, "rpc")) {
207208
impl = std::make_shared<AsyncAccessTokenGeneratorLogging>(
208209
std::move(impl), options.get<GrpcTracingOptionsOption>());
209210
}

google/cloud/internal/minimal_iam_credentials_stub_test.cc

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ using ::google::iam::credentials::v1::SignBlobRequest;
4343
using ::google::iam::credentials::v1::SignBlobResponse;
4444
using ::testing::Contains;
4545
using ::testing::HasSubstr;
46+
using ::testing::Not;
4647
using ::testing::Return;
4748

4849
class MinimalIamCredentialsStubTest : public ::testing::Test {
@@ -72,7 +73,7 @@ TEST_F(MinimalIamCredentialsStubTest, AsyncGenerateAccessTokenLogging) {
7273
});
7374
auto stub = DecorateMinimalIamCredentialsStub(
7475
mock, Options{}
75-
.set<TracingComponentsOption>({"rpc"})
76+
.set<TracingComponentsOption>({"auth"})
7677
.set<GrpcTracingOptionsOption>(
7778
TracingOptions{}.SetOptions("single_line_mode")));
7879
GenerateAccessTokenRequest request;
@@ -116,7 +117,7 @@ TEST_F(MinimalIamCredentialsStubTest, SignBlobLogging) {
116117
EXPECT_CALL(*mock, SignBlob).WillOnce(Return(expected));
117118
auto stub = DecorateMinimalIamCredentialsStub(
118119
mock, Options{}
119-
.set<TracingComponentsOption>({"rpc"})
120+
.set<TracingComponentsOption>({"auth"})
120121
.set<GrpcTracingOptionsOption>(
121122
TracingOptions{}.SetOptions("single_line_mode")));
122123
SignBlobRequest request;
@@ -187,6 +188,36 @@ TEST_F(MinimalIamCredentialsStubTest, AsyncGenerateAccessTokenMetadata) {
187188
EXPECT_THAT(lines, Not(Contains(HasSubstr("AsyncGenerateAccessToken"))));
188189
}
189190

191+
TEST_F(MinimalIamCredentialsStubTest, LoggingComponentNames) {
192+
struct TestCase {
193+
std::set<std::string> components;
194+
bool enabled;
195+
};
196+
// Note that "rpc" enables logging of this component for backwards
197+
// compatibility reasons.
198+
std::vector<TestCase> cases = {
199+
{{"auth"}, true},
200+
{{"rpc"}, true},
201+
{{"auth", "rpc"}, true},
202+
{{"rest"}, false},
203+
};
204+
205+
for (auto const& c : cases) {
206+
auto mock = std::make_shared<MockMinimalIamCredentialsStub>();
207+
EXPECT_CALL(*mock, SignBlob).WillOnce(Return(SignBlobResponse{}));
208+
auto stub = DecorateMinimalIamCredentialsStub(
209+
mock, Options{}.set<TracingComponentsOption>(c.components));
210+
grpc::ClientContext context;
211+
(void)stub->SignBlob(context, SignBlobRequest{});
212+
auto const lines = log_.ExtractLines();
213+
if (c.enabled) {
214+
EXPECT_THAT(lines, Contains(HasSubstr("SignBlob")));
215+
} else {
216+
EXPECT_THAT(lines, Not(Contains(HasSubstr("SignBlob"))));
217+
}
218+
}
219+
}
220+
190221
#ifdef GOOGLE_CLOUD_CPP_HAVE_OPENTELEMETRY
191222
using ::google::cloud::testing_util::DisableTracing;
192223
using ::google::cloud::testing_util::EnableTracing;

0 commit comments

Comments
 (0)