blob: ee17787efafd394ac0c4f43a0f71ef416f475b9e [file] [log] [blame]
// Copyright 2018 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 "components/ntp_snippets/contextual/contextual_suggestions_fetch.h"
#include <map>
#include <string>
#include "base/command_line.h"
#include "base/test/scoped_feature_list.h"
#include "base/test/test_simple_task_runner.h"
#include "base/threading/thread_task_runner_handle.h"
#include "components/ntp_snippets/contextual/contextual_suggestions_features.h"
#include "components/variations/net/variations_http_headers.h"
#include "components/variations/variations_http_header_provider.h"
#include "services/network/public/cpp/resource_request.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace contextual_suggestions {
namespace {
TEST(ContextualSuggestionsFetch, GetFetchEndpoint_Default) {
EXPECT_EQ("https://www.google.com/httpservice/web/ExploreService/GetPivots/",
ContextualSuggestionsFetch::GetFetchEndpoint());
}
TEST(ContextualSuggestionsFetch, GetFetchEndpoint_CommandLine_MissingValue) {
auto* command_line = base::CommandLine::ForCurrentProcess();
command_line->AppendSwitchASCII("contextual-suggestions-fetch-endpoint", "");
EXPECT_EQ("https://www.google.com/httpservice/web/ExploreService/GetPivots/",
ContextualSuggestionsFetch::GetFetchEndpoint());
}
TEST(ContextualSuggestionsFetch, GetFetchEndpoint_CommandLine_NonHTTPS) {
auto* command_line = base::CommandLine::ForCurrentProcess();
command_line->AppendSwitchASCII("contextual-suggestions-fetch-endpoint",
"http://test.com");
EXPECT_EQ("https://www.google.com/httpservice/web/ExploreService/GetPivots/",
ContextualSuggestionsFetch::GetFetchEndpoint());
}
TEST(ContextualSuggestionsFetch, GetFetchEndpoint_CommandLine_ProperEndpoint) {
auto* command_line = base::CommandLine::ForCurrentProcess();
command_line->AppendSwitchASCII("contextual-suggestions-fetch-endpoint",
"https://test.com");
EXPECT_EQ("https://test.com/httpservice/web/ExploreService/GetPivots/",
ContextualSuggestionsFetch::GetFetchEndpoint());
}
TEST(ContextualSuggestionsFetch, GetFetchEndpoint_Feature_NoParameter) {
base::test::ScopedFeatureList feature_list;
feature_list.InitAndEnableFeature(kContextualSuggestionsButton);
EXPECT_EQ("https://www.google.com/httpservice/web/ExploreService/GetPivots/",
ContextualSuggestionsFetch::GetFetchEndpoint());
}
TEST(ContextualSuggestionsFetch, GetFetchEndpoint_Feature_EmptyParameter) {
base::test::ScopedFeatureList feature_list;
std::map<std::string, std::string> parameters;
parameters["contextual-suggestions-fetch-endpoint"] = "";
feature_list.InitAndEnableFeatureWithParameters(kContextualSuggestionsButton,
parameters);
EXPECT_EQ("https://www.google.com/httpservice/web/ExploreService/GetPivots/",
ContextualSuggestionsFetch::GetFetchEndpoint());
}
TEST(ContextualSuggestionsFetch, GetFetchEndpoint_Feature_NonHTTPS) {
base::test::ScopedFeatureList feature_list;
std::map<std::string, std::string> parameters;
parameters["contextual-suggestions-fetch-endpoint"] = "http://test.com";
feature_list.InitAndEnableFeatureWithParameters(kContextualSuggestionsButton,
parameters);
EXPECT_EQ("https://www.google.com/httpservice/web/ExploreService/GetPivots/",
ContextualSuggestionsFetch::GetFetchEndpoint());
}
TEST(ContextualSuggestionsFetch, GetFetchEndpoint_Feature_WithParameter) {
base::test::ScopedFeatureList feature_list;
std::map<std::string, std::string> parameters;
parameters["contextual-suggestions-fetch-endpoint"] = "https://test.com";
feature_list.InitAndEnableFeatureWithParameters(kContextualSuggestionsButton,
parameters);
EXPECT_EQ("https://test.com/httpservice/web/ExploreService/GetPivots/",
ContextualSuggestionsFetch::GetFetchEndpoint());
}
TEST(ContextualSuggestionsFetch, MakeResourceRequest_VariationsHeader) {
variations::VariationsHttpHeaderProvider::GetInstance()->ResetForTesting();
scoped_refptr<base::TestSimpleTaskRunner> test_task_runner(
new base::TestSimpleTaskRunner());
base::ThreadTaskRunnerHandle handle(test_task_runner);
EXPECT_EQ(variations::VariationsHttpHeaderProvider::ForceIdsResult::SUCCESS,
variations::VariationsHttpHeaderProvider::GetInstance()
->ForceVariationIds({"12345"}, ""));
ContextualSuggestionsFetch fetch(GURL("http://test.com"), "en-US");
std::unique_ptr<network::ResourceRequest> resource_request =
fetch.MakeResourceRequestForTesting();
EXPECT_TRUE(variations::HasVariationsHeader(*resource_request));
}
TEST(ContextualSuggestionsFetch,
MakeResourceRequest_VariationsHeader_NonGoogleEndpoint) {
variations::VariationsHttpHeaderProvider::GetInstance()->ResetForTesting();
auto* command_line = base::CommandLine::ForCurrentProcess();
command_line->AppendSwitchASCII("contextual-suggestions-fetch-endpoint",
"https://nongoogleendpoint.com");
scoped_refptr<base::TestSimpleTaskRunner> test_task_runner(
new base::TestSimpleTaskRunner());
base::ThreadTaskRunnerHandle handle(test_task_runner);
EXPECT_EQ(variations::VariationsHttpHeaderProvider::ForceIdsResult::SUCCESS,
variations::VariationsHttpHeaderProvider::GetInstance()
->ForceVariationIds({"12345"}, ""));
ContextualSuggestionsFetch fetch(GURL("http://test.com"), "en-US");
std::unique_ptr<network::ResourceRequest> resource_request =
fetch.MakeResourceRequestForTesting();
EXPECT_FALSE(variations::HasVariationsHeader(*resource_request));
}
} // namespace
} // namespace contextual_suggestions