blob: 4a1872b39d3a6cb5089a589f35b19355603e1fb7 [file] [log] [blame]
// Copyright 2014 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 "chrome/browser/net/safe_search_util.h"
#include "base/message_loop/message_loop.h"
#include "base/strings/string_piece.h"
#include "net/http/http_request_headers.h"
#include "net/url_request/url_request_test_util.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "url/gurl.h"
class SafeSearchUtilTest : public ::testing::Test {
protected:
SafeSearchUtilTest() {}
~SafeSearchUtilTest() override {}
scoped_ptr<net::URLRequest> CreateYoutubeRequest() {
return context_.CreateRequest(GURL("http://www.youtube.com"),
net::DEFAULT_PRIORITY,
NULL,
NULL);
}
scoped_ptr<net::URLRequest> CreateNonYoutubeRequest() {
return context_.CreateRequest(GURL("http://www.notyoutube.com"),
net::DEFAULT_PRIORITY,
NULL,
NULL);
}
static void SetCookie(net::HttpRequestHeaders* headers,
const std::string& value) {
headers->SetHeader(base::StringPiece(net::HttpRequestHeaders::kCookie),
base::StringPiece(value));
}
static void CheckHeaders(net::URLRequest* request,
const std::string& header_string_original,
const std::string& header_string_expected) {
net::HttpRequestHeaders headers;
SetCookie(&headers, header_string_original);
safe_search_util::ForceYouTubeSafetyMode(request, &headers);
net::HttpRequestHeaders headers_expected;
SetCookie(&headers_expected, header_string_expected);
EXPECT_EQ(headers_expected.ToString(), headers.ToString());
}
base::MessageLoop message_loop_;
net::TestURLRequestContext context_;
};
// ForceGoogleSafeSearch is already tested quite extensively in
// ChromeNetworkDelegateSafeSearchTest (in chrome_network_delegate_unittest.cc),
// so we won't test it again here.
TEST_F(SafeSearchUtilTest, CreateYoutubePrefCookie) {
scoped_ptr<net::URLRequest> request = CreateYoutubeRequest();
CheckHeaders(request.get(),
"OtherCookie=value",
"OtherCookie=value; PREF=f2=8000000");
}
TEST_F(SafeSearchUtilTest, ModifyYoutubePrefCookie) {
scoped_ptr<net::URLRequest> request = CreateYoutubeRequest();
CheckHeaders(request.get(),
"PREF=f1=123; OtherCookie=value",
"PREF=f1=123&f2=8000000; OtherCookie=value");
CheckHeaders(request.get(),
"PREF=",
"PREF=f2=8000000");
CheckHeaders(request.get(),
"PREF=\"\"",
"PREF=\"f2=8000000\"");
CheckHeaders(request.get(),
"PREF=f1=123&f2=4321&foo=bar",
"PREF=f1=123&f2=8004321&foo=bar");
CheckHeaders(request.get(),
"PREF=\"f1=1&f2=4321\"; OtherCookie=value",
"PREF=\"f1=1&f2=8004321\"; OtherCookie=value");
}
TEST_F(SafeSearchUtilTest, DoesntTouchNonYoutubeURL) {
scoped_ptr<net::URLRequest> request = CreateNonYoutubeRequest();
CheckHeaders(request.get(),
"PREF=f2=0",
"PREF=f2=0");
}