forked from envoyproxy/envoy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
filter_config_test.cc
68 lines (52 loc) · 2.32 KB
/
filter_config_test.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include "envoy/server/filter_config.h"
#include "source/extensions/filters/http/common/pass_through_filter.h"
#include "test/mocks/server/factory_context.h"
#include "gmock/gmock.h"
#include "gtest/gtest.h"
namespace Envoy {
namespace Server {
namespace Configuration {
namespace {
using envoy::extensions::filters::common::dependency::v3::Dependency;
using envoy::extensions::filters::common::dependency::v3::FilterDependencies;
class TestHttpFilterConfigFactory : public Server::Configuration::NamedHttpFilterConfigFactory {
public:
TestHttpFilterConfigFactory() = default;
Http::FilterFactoryCb
createFilterFactoryFromProto(const Protobuf::Message&, const std::string&,
Server::Configuration::FactoryContext&) override {
return [](Http::FilterChainFactoryCallbacks& callbacks) -> void {
callbacks.addStreamDecoderFilter(std::make_shared<Http::PassThroughDecoderFilter>());
};
}
ProtobufTypes::MessagePtr createEmptyConfigProto() override { return nullptr; }
ProtobufTypes::MessagePtr createEmptyProtocolOptionsProto() override { return nullptr; }
FilterDependenciesPtr dependencies() override {
FilterDependencies dependencies;
Dependency* d = dependencies.add_decode_required();
d->set_name("foobar");
d->set_type(Dependency::FILTER_STATE_KEY);
return std::make_unique<FilterDependencies>(dependencies);
}
std::string name() const override { return "envoy.test.http_filter"; }
std::set<std::string> configTypes() override { return {}; };
};
TEST(NamedHttpFilterConfigFactoryTest, CreateFilterFactory) {
TestHttpFilterConfigFactory factory;
const std::string stats_prefix = "foo";
Server::Configuration::MockFactoryContext context;
ProtobufTypes::MessagePtr message{new Envoy::ProtobufWkt::Struct()};
factory.createFilterFactoryFromProto(*message, stats_prefix, context);
}
TEST(NamedHttpFilterConfigFactoryTest, Dependencies) {
TestHttpFilterConfigFactory factory;
const std::string stats_prefix = "foo";
Server::Configuration::MockFactoryContext context;
ProtobufTypes::MessagePtr message{new Envoy::ProtobufWkt::Struct()};
factory.createFilterFactoryFromProto(*message, stats_prefix, context);
EXPECT_EQ(factory.dependencies()->decode_required().size(), 1);
}
} // namespace
} // namespace Configuration
} // namespace Server
} // namespace Envoy