|
10 | 10 | #include "test/mocks/init/mocks.h" |
11 | 11 | #include "test/mocks/server/factory_context.h" |
12 | 12 | #include "test/mocks/server/mocks.h" |
| 13 | +#include "test/mocks/tracing/mocks.h" |
13 | 14 | #include "test/test_common/utility.h" |
14 | 15 |
|
15 | 16 | #include "gmock/gmock.h" |
@@ -145,6 +146,36 @@ TEST_F(CustomResponseFilterTest, DontChangeStatusCode) { |
145 | 146 | EXPECT_EQ("200", response_headers.getStatusValue()); |
146 | 147 | } |
147 | 148 |
|
| 149 | +TEST_F(CustomResponseFilterTest, TraceIdInBodyFormat) { |
| 150 | + createConfig(R"EOF( |
| 151 | + custom_response_matcher: |
| 152 | + on_no_match: |
| 153 | + action: |
| 154 | + name: action |
| 155 | + typed_config: |
| 156 | + "@type": type.googleapis.com/envoy.extensions.http.custom_response.local_response_policy.v3.LocalResponsePolicy |
| 157 | + status_code: 503 |
| 158 | + body_format: |
| 159 | + text_format_source: |
| 160 | + inline_string: "trace=%TRACE_ID%" |
| 161 | +)EOF"); |
| 162 | + setupFilterAndCallback(); |
| 163 | + |
| 164 | + const std::string trace_id = "abc123trace"; |
| 165 | + ON_CALL(encoder_callbacks_.active_span_, getTraceId()).WillByDefault(Return(trace_id)); |
| 166 | + |
| 167 | + ::Envoy::Http::TestRequestHeaderMapImpl request_headers{}; |
| 168 | + ::Envoy::Http::TestResponseHeaderMapImpl response_headers{{":status", "503"}}; |
| 169 | + EXPECT_EQ(filter_->decodeHeaders(request_headers, false), |
| 170 | + ::Envoy::Http::FilterHeadersStatus::Continue); |
| 171 | + EXPECT_CALL(encoder_callbacks_, |
| 172 | + sendLocalReply(static_cast<::Envoy::Http::Code>(503), "trace=abc123trace", _, _, _)); |
| 173 | + ON_CALL(encoder_callbacks_.stream_info_, getRequestHeaders()) |
| 174 | + .WillByDefault(Return(&request_headers)); |
| 175 | + EXPECT_EQ(filter_->encodeHeaders(response_headers, true), |
| 176 | + ::Envoy::Http::FilterHeadersStatus::StopIteration); |
| 177 | +} |
| 178 | + |
148 | 179 | TEST_F(CustomResponseFilterTest, InvalidHostRedirect) { |
149 | 180 | // Create config with invalid host_redirect field |
150 | 181 | createConfig(R"EOF( |
|
0 commit comments