blob: 93e370b94ec0c482fde245daccb8a48ab3f783bb [file] [log] [blame]
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "fuchsia/engine/common/web_engine_url_loader_throttle.h"
#include "base/test/task_environment.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace {
class TestCachedRulesProvider
: public WebEngineURLLoaderThrottle::CachedRulesProvider {
public:
TestCachedRulesProvider() = default;
~TestCachedRulesProvider() override = default;
void SetCachedRules(
scoped_refptr<WebEngineURLLoaderThrottle::UrlRequestRewriteRules>
cached_rules) {
cached_rules_ = cached_rules;
}
// WebEngineURLLoaderThrottle::CachedRulesProvider implementation.
scoped_refptr<WebEngineURLLoaderThrottle::UrlRequestRewriteRules>
GetCachedRules() override {
return cached_rules_;
}
private:
scoped_refptr<WebEngineURLLoaderThrottle::UrlRequestRewriteRules>
cached_rules_;
DISALLOW_COPY_AND_ASSIGN(TestCachedRulesProvider);
};
} // namespace
class WebEngineURLLoaderThrottleTest : public testing::Test {
public:
WebEngineURLLoaderThrottleTest()
: task_environment_(base::test::TaskEnvironment::MainThreadType::IO) {}
~WebEngineURLLoaderThrottleTest() override = default;
protected:
base::test::SingleThreadTaskEnvironment task_environment_;
};
// Tests rules are properly applied when wildcard-filtering is used on hosts.
TEST_F(WebEngineURLLoaderThrottleTest, WildcardHosts) {
mojom::UrlRequestRewriteAddHeadersPtr add_headers =
mojom::UrlRequestRewriteAddHeaders::New();
add_headers->headers.SetHeader("Header", "Value");
mojom::UrlRequestRewritePtr rewrite =
mojom::UrlRequestRewrite::NewAddHeaders(std::move(add_headers));
std::vector<mojom::UrlRequestRewritePtr> rewrites;
rewrites.push_back(std::move(rewrite));
mojom::UrlRequestRewriteRulePtr rule = mojom::UrlRequestRewriteRule::New();
rule->hosts_filter = base::Optional<std::vector<std::string>>({"*.test.net"});
rule->rewrites = std::move(rewrites);
std::vector<mojom::UrlRequestRewriteRulePtr> rules;
rules.push_back(std::move(rule));
TestCachedRulesProvider provider;
provider.SetCachedRules(
base::MakeRefCounted<WebEngineURLLoaderThrottle::UrlRequestRewriteRules>(
std::move(rules)));
WebEngineURLLoaderThrottle throttle(&provider);
bool defer = false;
network::ResourceRequest request1;
request1.url = GURL("http://test.net");
throttle.WillStartRequest(&request1, &defer);
EXPECT_TRUE(request1.headers.HasHeader("Header"));
network::ResourceRequest request2;
request2.url = GURL("http://subdomain.test.net");
throttle.WillStartRequest(&request2, &defer);
EXPECT_TRUE(request2.headers.HasHeader("Header"));
network::ResourceRequest request3;
request3.url = GURL("http://domaintest.net");
throttle.WillStartRequest(&request3, &defer);
EXPECT_FALSE(request3.headers.HasHeader("Header"));
network::ResourceRequest request4;
request4.url = GURL("http://otherdomain.net");
throttle.WillStartRequest(&request4, &defer);
EXPECT_FALSE(request4.headers.HasHeader("Header"));
}