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..112c96137ffc85ad41fbf3d3ced73b5feec54229 |
--- /dev/null |
+++ b/chrome/browser/net/safe_search_util_unittest.cc |
@@ -0,0 +1,90 @@ |
+// 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); |
+ } |
+ |
+ 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"); |
+} |