Skip to content

Commit

Permalink
direct response filter: added unit test cases (envoyproxy#12064)
Browse files Browse the repository at this point in the history
Added unit test cases for "direct_response".
Removed "direct_response" from test/per_file_coverage.sh

Risk Level:low
Testing: covered onData() and onNewConnection() method of the filter.
Fixes: envoyproxy#11998

Signed-off-by: jianwen <[email protected]>
  • Loading branch information
jianwen612 authored Jul 21, 2020
1 parent 606ccbd commit ffd8a6e
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 1 deletion.
12 changes: 12 additions & 0 deletions test/extensions/filters/network/direct_response/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,15 @@ envoy_extension_cc_test(
"//test/test_common:utility_lib",
],
)

envoy_extension_cc_test(
name = "direct_response_test",
srcs = ["direct_response_test.cc"],
extension_name = "envoy.filters.network.direct_response",
deps = [
"//source/extensions/filters/network/direct_response:filter",
"//test/mocks/api:api_mocks",
"//test/mocks/network:network_mocks",
"@envoy_api//envoy/extensions/filters/network/direct_response/v3:pkg_cc_proto",
],
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
#include "envoy/extensions/filters/network/direct_response/v3/config.pb.validate.h"

#include "extensions/filters/network/direct_response/filter.h"

#include "test/mocks/api/mocks.h"
#include "test/mocks/network/mocks.h"

#include "gmock/gmock.h"
#include "gtest/gtest.h"

using testing::_;
using testing::NiceMock;

namespace Envoy {
namespace Extensions {
namespace NetworkFilters {
namespace DirectResponse {

class DirectResponseFilterTest : public testing::Test {
public:
void initialize(const std::string& response) {
filter_ = std::make_shared<DirectResponseFilter>(response);
filter_->initializeReadFilterCallbacks(read_filter_callbacks_);
}
std::shared_ptr<DirectResponseFilter> filter_;
NiceMock<Network::MockReadFilterCallbacks> read_filter_callbacks_;
};

// Test the filter's onNewConnection() with a non-empty response
TEST_F(DirectResponseFilterTest, OnNewConnection) {
initialize("hello");
Buffer::OwnedImpl response("hello");
EXPECT_CALL(read_filter_callbacks_.connection_, write(BufferEqual(&response), false));
EXPECT_CALL(read_filter_callbacks_.connection_, close(Network::ConnectionCloseType::FlushWrite));
EXPECT_CALL(read_filter_callbacks_.connection_.stream_info_,
setResponseCodeDetails(StreamInfo::ResponseCodeDetails::get().DirectResponse));
EXPECT_EQ(Network::FilterStatus::StopIteration, filter_->onNewConnection());
}

// Test the filter's onNewConnection() with an empty response
TEST_F(DirectResponseFilterTest, OnNewConnectionEmptyResponse) {
initialize("");
EXPECT_CALL(read_filter_callbacks_.connection_, write(_, _)).Times(0);
EXPECT_CALL(read_filter_callbacks_.connection_, close(Network::ConnectionCloseType::FlushWrite));
EXPECT_CALL(read_filter_callbacks_.connection_.stream_info_,
setResponseCodeDetails(StreamInfo::ResponseCodeDetails::get().DirectResponse));
EXPECT_EQ(Network::FilterStatus::StopIteration, filter_->onNewConnection());
}

// Test the filter's onData()
TEST_F(DirectResponseFilterTest, OnData) {
initialize("hello");
Buffer::OwnedImpl data("data");
EXPECT_CALL(read_filter_callbacks_.connection_, write(_, _)).Times(0);
EXPECT_EQ(Network::FilterStatus::Continue, filter_->onData(data, false));
}

} // namespace DirectResponse
} // namespace NetworkFilters
} // namespace Extensions
} // namespace Envoy
1 change: 0 additions & 1 deletion test/per_file_coverage.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ declare -a KNOWN_LOW_COVERAGE=(
"source/extensions/filters/network/sni_dynamic_forward_proxy:90.9"
"source/extensions/filters/network/dubbo_proxy:96.1"
"source/extensions/filters/network/dubbo_proxy/router:95.1"
"source/extensions/filters/network/direct_response:89.3"
"source/extensions/filters/network/mongo_proxy:94.0"
"source/extensions/filters/network/common:96.1"
"source/extensions/filters/network/common/redis:96.2"
Expand Down

0 comments on commit ffd8a6e

Please sign in to comment.