@@ -36,6 +36,14 @@ class TransformationFilterTest : public testing::Test {
36
36
perFilterConfig (SoloHttpFilterNames::get ().Transformation ))
37
37
.WillByDefault (Return (route_config_wrapper_.get ()));
38
38
39
+ ON_CALL (encoder_filter_callbacks_, route ())
40
+ .WillByDefault (Invoke ([this ]() -> Router::RouteConstSharedPtr {
41
+ if (headers_.Host () == nullptr ) {
42
+ throw std::runtime_error (" no host" );
43
+ }
44
+ return encoder_filter_callbacks_.route_ ;
45
+ }));
46
+
39
47
filter_ = std::make_unique<TransformationFilter>();
40
48
filter_->setDecoderFilterCallbacks (filter_callbacks_);
41
49
filter_->setEncoderFilterCallbacks (encoder_filter_callbacks_);
@@ -116,6 +124,21 @@ TEST_F(TransformationFilterTest, TransformsResponseOnHeaders) {
116
124
EXPECT_EQ (Http::FilterHeadersStatus::Continue, res);
117
125
}
118
126
127
+ TEST_F (TransformationFilterTest, TransformsResponseOnHeadersNoHost) {
128
+ headers_.remove (" :authority" );
129
+ route_config_.mutable_response_transformation ()
130
+ ->mutable_transformation_template ()
131
+ ->mutable_body ()
132
+ ->set_text (" solo" );
133
+
134
+ initFilter ();
135
+
136
+ // no encode headers to simulate local reply error.
137
+ EXPECT_CALL (encoder_filter_callbacks_, addEncodedData (_, false )).Times (0 );
138
+ auto res = filter_->encodeHeaders (headers_, true );
139
+ EXPECT_EQ (Http::FilterHeadersStatus::Continue, res);
140
+ }
141
+
119
142
TEST_F (TransformationFilterTest, ErrorOnBadTemplate) {
120
143
initFilterWithBodyTemplate (" {{nonexistentvar}}" );
121
144
0 commit comments