Commit 55920486 authored by Wei Li's avatar Wei Li Committed by Commit Bot

[HaTS] Fix survey check url

The url used by HaTS survey status check was incorrect due to a missing
slash before the path. This CL also added a test to verify the url.

BUG=1048385

Change-Id: I6ef6e29a13f61a56147bfd258af101cd103bbadc
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2114163
Commit-Queue: Wei Li <weili@chromium.org>
Reviewed-by: default avatarRobert Liao <robliao@chromium.org>
Cr-Commit-Position: refs/heads/master@{#753700}
parent 33fd8d10
...@@ -69,8 +69,8 @@ void HatsSurveyStatusChecker::CheckSurveyStatus( ...@@ -69,8 +69,8 @@ void HatsSurveyStatusChecker::CheckSurveyStatus(
// Send the request and check the response header. // Send the request and check the response header.
auto request = std::make_unique<network::ResourceRequest>(); auto request = std::make_unique<network::ResourceRequest>();
std::string url(HatsSurveyURL()); std::string url_without_id(HatsSurveyURLWithoutId());
request->url = GURL(url + site_id); request->url = GURL(url_without_id + site_id);
// Send stored cookie along with the request, but don't save any cookie. // Send stored cookie along with the request, but don't save any cookie.
request->attach_same_site_cookies = true; request->attach_same_site_cookies = true;
request->load_flags = net::LOAD_BYPASS_CACHE | net::LOAD_DISABLE_CACHE | request->load_flags = net::LOAD_BYPASS_CACHE | net::LOAD_DISABLE_CACHE |
...@@ -119,8 +119,8 @@ base::OnceClosure HatsSurveyStatusChecker::CreateTimeoutCallbackForTesting() { ...@@ -119,8 +119,8 @@ base::OnceClosure HatsSurveyStatusChecker::CreateTimeoutCallbackForTesting() {
HatsSurveyStatusChecker::HatsSurveyStatusChecker() = default; HatsSurveyStatusChecker::HatsSurveyStatusChecker() = default;
std::string HatsSurveyStatusChecker::HatsSurveyURL() { std::string HatsSurveyStatusChecker::HatsSurveyURLWithoutId() {
std::string url("https://www.google.com"); std::string url("https://www.google.com/");
return url + kHatsSurveyDataPath; return url + kHatsSurveyDataPath;
} }
......
...@@ -54,7 +54,7 @@ class HatsSurveyStatusChecker { ...@@ -54,7 +54,7 @@ class HatsSurveyStatusChecker {
HatsSurveyStatusChecker(); HatsSurveyStatusChecker();
// Overridden only by tests. // Overridden only by tests.
virtual std::string HatsSurveyURL(); virtual std::string HatsSurveyURLWithoutId();
virtual int SurveyCheckTimeoutSecs(); virtual int SurveyCheckTimeoutSecs();
private: private:
......
...@@ -24,20 +24,34 @@ ...@@ -24,20 +24,34 @@
namespace { namespace {
class FakeHatsSurveyStatusChecker : public HatsSurveyStatusChecker { class TestHatsSurveyStatusChecker : public HatsSurveyStatusChecker {
public:
explicit TestHatsSurveyStatusChecker(Profile* profile)
: HatsSurveyStatusChecker(profile) {}
TestHatsSurveyStatusChecker(const TestHatsSurveyStatusChecker&) = delete;
TestHatsSurveyStatusChecker& operator=(const TestHatsSurveyStatusChecker&) =
delete;
~TestHatsSurveyStatusChecker() override = default;
std::string HatsSurveyURLWithoutId() override {
return HatsSurveyStatusChecker::HatsSurveyURLWithoutId();
}
};
class FakeHatsSurveyStatusChecker : public TestHatsSurveyStatusChecker {
public: public:
static constexpr int kTimeoutSecs = 1; static constexpr int kTimeoutSecs = 1;
FakeHatsSurveyStatusChecker(Profile* profile, const std::string& url) FakeHatsSurveyStatusChecker(Profile* profile, const std::string& url)
: HatsSurveyStatusChecker(profile), url_(url) {} : TestHatsSurveyStatusChecker(profile), url_(url) {}
FakeHatsSurveyStatusChecker(const FakeHatsSurveyStatusChecker&) = delete; FakeHatsSurveyStatusChecker(const FakeHatsSurveyStatusChecker&) = delete;
~FakeHatsSurveyStatusChecker() override = default;
FakeHatsSurveyStatusChecker& operator=(const FakeHatsSurveyStatusChecker&) = FakeHatsSurveyStatusChecker& operator=(const FakeHatsSurveyStatusChecker&) =
delete; delete;
~FakeHatsSurveyStatusChecker() override = default;
protected: std::string HatsSurveyURLWithoutId() override {
std::string HatsSurveyURL() override { return url_ + kHatsSurveyDataPath; } return url_ + kHatsSurveyDataPath;
}
int SurveyCheckTimeoutSecs() override { return kTimeoutSecs; } int SurveyCheckTimeoutSecs() override { return kTimeoutSecs; }
private: private:
...@@ -54,10 +68,9 @@ class HatsSurveyStatusCheckerBrowserTestBase : public InProcessBrowserTest { ...@@ -54,10 +68,9 @@ class HatsSurveyStatusCheckerBrowserTestBase : public InProcessBrowserTest {
HatsSurveyStatusCheckerBrowserTestBase() = default; HatsSurveyStatusCheckerBrowserTestBase() = default;
HatsSurveyStatusCheckerBrowserTestBase( HatsSurveyStatusCheckerBrowserTestBase(
const HatsSurveyStatusCheckerBrowserTestBase&) = delete; const HatsSurveyStatusCheckerBrowserTestBase&) = delete;
~HatsSurveyStatusCheckerBrowserTestBase() override = default;
HatsSurveyStatusCheckerBrowserTestBase& operator=( HatsSurveyStatusCheckerBrowserTestBase& operator=(
const HatsSurveyStatusCheckerBrowserTestBase&) = delete; const HatsSurveyStatusCheckerBrowserTestBase&) = delete;
~HatsSurveyStatusCheckerBrowserTestBase() override = default;
// Handles |request| by serving different response based on the site id in the // Handles |request| by serving different response based on the site id in the
// request. // request.
...@@ -135,6 +148,21 @@ constexpr char HatsSurveyStatusCheckerBrowserTestBase::kErrorSiteId[]; ...@@ -135,6 +148,21 @@ constexpr char HatsSurveyStatusCheckerBrowserTestBase::kErrorSiteId[];
constexpr char HatsSurveyStatusCheckerBrowserTestBase::kOutOfCapacitySiteId[]; constexpr char HatsSurveyStatusCheckerBrowserTestBase::kOutOfCapacitySiteId[];
constexpr char HatsSurveyStatusCheckerBrowserTestBase::kNormalSiteId[]; constexpr char HatsSurveyStatusCheckerBrowserTestBase::kNormalSiteId[];
// Check the url is formatted correctly such as its host name is separated from
// the path. So we can extract the expected host name from the url.
IN_PROC_BROWSER_TEST_F(HatsSurveyStatusCheckerBrowserTestBase,
CheckHostInStatusURLCorrect) {
auto checker =
std::make_unique<TestHatsSurveyStatusChecker>(browser()->profile());
GURL url(checker->HatsSurveyURLWithoutId());
EXPECT_STREQ("www.google.com", url.host().c_str());
auto fake_checker = std::make_unique<FakeHatsSurveyStatusChecker>(
browser()->profile(), embedded_test_server()->base_url().spec());
GURL test_url(fake_checker->HatsSurveyURLWithoutId());
EXPECT_EQ(embedded_test_server()->base_url().host(), test_url.host());
}
IN_PROC_BROWSER_TEST_F(HatsSurveyStatusCheckerBrowserTestBase, IN_PROC_BROWSER_TEST_F(HatsSurveyStatusCheckerBrowserTestBase,
CheckStatusResults) { CheckStatusResults) {
struct SiteResult { struct SiteResult {
...@@ -150,9 +178,8 @@ IN_PROC_BROWSER_TEST_F(HatsSurveyStatusCheckerBrowserTestBase, ...@@ -150,9 +178,8 @@ IN_PROC_BROWSER_TEST_F(HatsSurveyStatusCheckerBrowserTestBase,
{HatsSurveyStatusCheckerBrowserTestBase::kNormalSiteId, {HatsSurveyStatusCheckerBrowserTestBase::kNormalSiteId,
HatsSurveyStatusChecker::Status::kSuccess}}; HatsSurveyStatusChecker::Status::kSuccess}};
std::unique_ptr<FakeHatsSurveyStatusChecker> checker = auto checker = std::make_unique<FakeHatsSurveyStatusChecker>(
std::make_unique<FakeHatsSurveyStatusChecker>( browser()->profile(), embedded_test_server()->base_url().spec());
browser()->profile(), embedded_test_server()->base_url().spec());
for (const auto& item : site_id_with_result) { for (const auto& item : site_id_with_result) {
base::RunLoop request_wait; base::RunLoop request_wait;
SetClosure(request_wait.QuitClosure(), SetClosure(request_wait.QuitClosure(),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment