Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(415)

Side by Side Diff: content/browser/browsing_data/clear_site_data_throttle_unittest.cc

Issue 2025683003: First experimental implementation of the Clear-Site-Data header (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Moved channel IDs under 'cookies' Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "content/browser/browsing_data/clear_site_data_throttle.h"
6
7 #include <memory>
8
9 #include "testing/gmock/include/gmock/gmock.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11
12 namespace content {
13
14 class ClearSiteDataThrottleTest : public testing::Test {
15 public:
16 void SetUp() override {
17 throttle_ = ClearSiteDataThrottle::CreateThrottleFor(nullptr);
18 }
19
20 ClearSiteDataThrottle* GetThrottle() {
21 return static_cast<ClearSiteDataThrottle*>(throttle_.get());
22 }
23
24 private:
25 std::unique_ptr<NavigationThrottle> throttle_;
26 };
27
28 TEST_F(ClearSiteDataThrottleTest, ParseHeader) {
29 struct TestCase {
30 const char* header;
31 bool cookies;
32 bool storage;
33 bool cache;
34 } test_cases[] = {
35 // One data type.
36 {"{ \"types\": [\"cookies\"] }", true, false, false},
37 {"{ \"types\": [\"storage\"] }", false, true, false},
38 {"{ \"types\": [\"cache\"] }", false, false, true},
39
40 // Two data types.
41 {"{ \"types\": [\"cookies\", \"storage\"] }", true, true, false},
42 {"{ \"types\": [\"cookies\", \"cache\"] }", true, false, true},
43 {"{ \"types\": [\"storage\", \"cache\"] }", false, true, true},
44
45 // Three data types.
46 {"{ \"types\": [\"storage\", \"cache\", \"cookies\"] }", true, true, true},
47 {"{ \"types\": [\"cache\", \"cookies\", \"storage\"] }", true, true, true},
48 {"{ \"types\": [\"cookies\", \"storage\", \"cache\"] }", true, true, true},
49
50 // Different formatting.
51 {" { \"types\": [\"cookies\" ]}", true, false, false},
52
53 // Duplicates.
54 {"{ \"types\": [\"cookies\", \"cookies\"] }", true, false, false},
55
56 // Other entries in the dictionary.
57 {"{ \"types\": [\"storage\"], \"other_params\": {} }", false, true, false},
58
59 // Unknown types are ignored, but we still proceed with the deletion for
60 // those that we recognize.
61 {"{ \"types\": [\"cache\", \"foo\"] }", false, false, true},
62 };
63
64 for (const TestCase& test_case : test_cases) {
65 SCOPED_TRACE(test_case.header);
66
67 bool actual_cookies;
68 bool actual_storage;
69 bool actual_cache;
70
71 std::vector<ClearSiteDataThrottle::ConsoleMessage> messages;
72
73 EXPECT_TRUE(GetThrottle()->ParseHeader(
74 test_case.header,
75 &actual_cookies, &actual_storage, &actual_cache, &messages));
76
77 EXPECT_EQ(test_case.cookies, actual_cookies);
78 EXPECT_EQ(test_case.storage, actual_storage);
79 EXPECT_EQ(test_case.cache, actual_cache);
80 }
81 }
82
83 TEST_F(ClearSiteDataThrottleTest, InvalidHeader) {
84 struct TestCase {
85 const char* header;
86 const char* console_message;
87 } test_cases[] = {
88 { "", " is not a valid JSON.\n" },
89 { "\"unclosed quote", "\"unclosed quote is not a valid JSON.\n" },
90 { "\"some text\"",
91 "\"some text\" is not a JSON dictionary with a 'types' field.\n" },
92 { "{ \"field\" : {} }",
93 "{ \"field\" : {} } is not a JSON dictionary with a 'types' field.\n" },
94 { "{ \"types\" : [ \"passwords\" ] }",
95 "Invalid type: \"passwords\".\n"
96 "No valid types specified in { \"types\" : [ \"passwords\" ] }.\n" },
97 { "{ \"types\" : [ [ \"list in a list\" ] ] }",
98 "Invalid type: [\"list in a list\"].\n"
99 "No valid types specified in "
100 "{ \"types\" : [ [ \"list in a list\" ] ] }.\n" },
101 };
102
103 for (const TestCase& test_case : test_cases) {
104 SCOPED_TRACE(test_case.header);
105
106 bool actual_cookies;
107 bool actual_storage;
108 bool actual_cache;
109
110 std::vector<ClearSiteDataThrottle::ConsoleMessage> messages;
111
112 EXPECT_FALSE(GetThrottle()->ParseHeader(
113 test_case.header,
114 &actual_cookies, &actual_storage, &actual_cache, &messages));
115
116 std::string multiline_message;
117 for (const ClearSiteDataThrottle::ConsoleMessage& message : messages) {
118 EXPECT_EQ(CONSOLE_MESSAGE_LEVEL_ERROR, message.level);
119 multiline_message += message.text + "\n";
120 }
121
122 EXPECT_EQ(test_case.console_message, multiline_message);
123 }
124 }
125
126 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698