Chromium Code Reviews| Index: chrome/browser/net/safe_search_util_unittest.cc |
| diff --git a/chrome/browser/net/safe_search_util_unittest.cc b/chrome/browser/net/safe_search_util_unittest.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..e48988eb364fa39ab5a65ede94f1ab62d0b0f102 |
| --- /dev/null |
| +++ b/chrome/browser/net/safe_search_util_unittest.cc |
| @@ -0,0 +1,88 @@ |
| +// Copyright (c) 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() {} |
| + virtual ~SafeSearchUtilTest() {} |
| + |
| + 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); |
| + } |
| + |
| + void SetCookie(net::HttpRequestHeaders* headers, const std::string& value) { |
| + headers->SetHeader(base::StringPiece(net::HttpRequestHeaders::kCookie), |
| + base::StringPiece(value)); |
| + } |
| + |
| + 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(); |
| + net::HttpRequestHeaders headers; |
| + SetCookie(&headers, "OtherCookie=value"); |
| + safe_search_util::ForceYouTubeSafetyMode(request.get(), &headers); |
| + |
| + net::HttpRequestHeaders headers_expected; |
| + SetCookie(&headers_expected, "OtherCookie=value;PREF=f2=8000000"); |
| + EXPECT_EQ(headers_expected.ToString(), headers.ToString()); |
| +} |
| + |
| +TEST_F(SafeSearchUtilTest, ModifyYoutubePrefCookie) { |
| + scoped_ptr<net::URLRequest> request = CreateYoutubeRequest(); |
| + { |
| + net::HttpRequestHeaders headers; |
| + SetCookie(&headers, "PREF=f1=123;OtherCookie=value"); |
| + safe_search_util::ForceYouTubeSafetyMode(request.get(), &headers); |
| + |
| + net::HttpRequestHeaders headers_expected; |
| + SetCookie(&headers_expected, "PREF=f1=123&f2=8000000;OtherCookie=value"); |
| + EXPECT_EQ(headers_expected.ToString(), headers.ToString()); |
| + } |
| + { |
| + net::HttpRequestHeaders headers; |
| + SetCookie(&headers, "PREF=f1=123&f2=4321&foo=bar"); |
|
battre
2014/07/08 13:43:06
did you check that uppler/lower cases of the hex n
Marc Treib
2014/07/08 14:16:15
YouTube uses lowercase as well (https://cs.corp.go
|
| + safe_search_util::ForceYouTubeSafetyMode(request.get(), &headers); |
| + |
| + net::HttpRequestHeaders headers_expected; |
| + SetCookie(&headers_expected, "PREF=f1=123&f2=8004321&foo=bar"); |
| + EXPECT_EQ(headers_expected.ToString(), headers.ToString()); |
| + } |
| +} |
| + |
| +TEST_F(SafeSearchUtilTest, DoesntTouchNonYoutubeURL) { |
| + scoped_ptr<net::URLRequest> request = CreateNonYoutubeRequest(); |
| + net::HttpRequestHeaders headers; |
| + SetCookie(&headers, "PREF=f2=0"); |
| + net::HttpRequestHeaders headers_expected; |
| + headers_expected.CopyFrom(headers); |
| + safe_search_util::ForceYouTubeSafetyMode(request.get(), &headers); |
| + |
| + EXPECT_EQ(headers_expected.ToString(), headers.ToString()); |
| +} |