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

Side by Side Diff: chrome/browser/extensions/api/declarative_webrequest/webrequest_action_unittest.cc

Issue 11572061: Create DeclarativeConditionSet, DeclarativeActionSet, and DeclarativeRule templates (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix 2 simple bugs Created 7 years, 11 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_action .h" 5 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_action .h"
6 6
7 #include "base/message_loop.h" 7 #include "base/message_loop.h"
8 #include "base/values.h" 8 #include "base/values.h"
9 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_condit ion.h"
9 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_consta nts.h" 10 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_consta nts.h"
10 #include "chrome/browser/extensions/api/web_request/web_request_api_helpers.h" 11 #include "chrome/browser/extensions/api/web_request/web_request_api_helpers.h"
11 #include "chrome/common/extensions/extension_constants.h" 12 #include "chrome/common/extensions/extension_constants.h"
12 #include "net/url_request/url_request_test_util.h" 13 #include "net/url_request/url_request_test_util.h"
13 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
14 15
15 namespace { 16 namespace {
16 const char kUnknownActionType[] = "unknownType"; 17 const char kUnknownActionType[] = "unknownType";
17 } // namespace 18 } // namespace
18 19
(...skipping 30 matching lines...) Expand all
49 // Test success 50 // Test success
50 input.SetString(keys::kInstanceTypeKey, keys::kCancelRequestType); 51 input.SetString(keys::kInstanceTypeKey, keys::kCancelRequestType);
51 error.clear(); 52 error.clear();
52 result = WebRequestAction::Create(input, &error, &bad_message); 53 result = WebRequestAction::Create(input, &error, &bad_message);
53 EXPECT_EQ("", error); 54 EXPECT_EQ("", error);
54 EXPECT_FALSE(bad_message); 55 EXPECT_FALSE(bad_message);
55 ASSERT_TRUE(result.get()); 56 ASSERT_TRUE(result.get());
56 EXPECT_EQ(WebRequestAction::ACTION_CANCEL_REQUEST, result->GetType()); 57 EXPECT_EQ(WebRequestAction::ACTION_CANCEL_REQUEST, result->GetType());
57 } 58 }
58 59
59 TEST(WebRequestActionTest, CreateActionSet) {
60 std::string error;
61 bool bad_message = false;
62 scoped_ptr<WebRequestActionSet> result;
63
64 WebRequestActionSet::AnyVector input;
65
66 // Test empty input.
67 error.clear();
68 result = WebRequestActionSet::Create(input, &error, &bad_message);
69 EXPECT_TRUE(error.empty()) << error;
70 EXPECT_FALSE(bad_message);
71 ASSERT_TRUE(result.get());
72 EXPECT_TRUE(result->actions().empty());
73 EXPECT_EQ(std::numeric_limits<int>::min(), result->GetMinimumPriority());
74
75 DictionaryValue correct_action;
76 correct_action.SetString(keys::kInstanceTypeKey, keys::kIgnoreRulesType);
77 correct_action.SetInteger(keys::kLowerPriorityThanKey, 10);
78 DictionaryValue incorrect_action;
79 incorrect_action.SetString(keys::kInstanceTypeKey, kUnknownActionType);
80
81 // Test success.
82 linked_ptr<json_schema_compiler::any::Any> action1 = make_linked_ptr(
83 new json_schema_compiler::any::Any);
84 action1->Init(correct_action);
85 input.push_back(action1);
86 error.clear();
87 result = WebRequestActionSet::Create(input, &error, &bad_message);
88 EXPECT_TRUE(error.empty()) << error;
89 EXPECT_FALSE(bad_message);
90 ASSERT_TRUE(result.get());
91 ASSERT_EQ(1u, result->actions().size());
92 EXPECT_EQ(WebRequestAction::ACTION_IGNORE_RULES,
93 result->actions()[0]->GetType());
94 EXPECT_EQ(10, result->GetMinimumPriority());
95
96 // Test failure.
97 linked_ptr<json_schema_compiler::any::Any> action2 = make_linked_ptr(
98 new json_schema_compiler::any::Any);
99 action2->Init(incorrect_action);
100 input.push_back(action2);
101 error.clear();
102 result = WebRequestActionSet::Create(input, &error, &bad_message);
103 EXPECT_NE("", error);
104 EXPECT_FALSE(result.get());
105 }
106
107 // Test capture group syntax conversions of WebRequestRedirectByRegExAction 60 // Test capture group syntax conversions of WebRequestRedirectByRegExAction
108 TEST(WebRequestActionTest, PerlToRe2Style) { 61 TEST(WebRequestActionTest, PerlToRe2Style) {
109 #define CallPerlToRe2Style WebRequestRedirectByRegExAction::PerlToRe2Style 62 #define CallPerlToRe2Style WebRequestRedirectByRegExAction::PerlToRe2Style
110 // foo$1bar -> foo\1bar 63 // foo$1bar -> foo\1bar
111 EXPECT_EQ("foo\\1bar", CallPerlToRe2Style("foo$1bar")); 64 EXPECT_EQ("foo\\1bar", CallPerlToRe2Style("foo$1bar"));
112 // foo\$1bar -> foo$1bar 65 // foo\$1bar -> foo$1bar
113 EXPECT_EQ("foo$1bar", CallPerlToRe2Style("foo\\$1bar")); 66 EXPECT_EQ("foo$1bar", CallPerlToRe2Style("foo\\$1bar"));
114 // foo\\$1bar -> foo\\\1bar 67 // foo\\$1bar -> foo\\\1bar
115 EXPECT_EQ("foo\\\\\\1bar", CallPerlToRe2Style("foo\\\\$1bar")); 68 EXPECT_EQ("foo\\\\\\1bar", CallPerlToRe2Style("foo\\\\$1bar"));
116 // foo\bar -> foobar 69 // foo\bar -> foobar
(...skipping 23 matching lines...) Expand all
140 WebRequestActionSet::AnyVector actions; 93 WebRequestActionSet::AnyVector actions;
141 actions.push_back(action); 94 actions.push_back(action);
142 95
143 action_set = WebRequestActionSet::Create(actions, &error, &bad_message); 96 action_set = WebRequestActionSet::Create(actions, &error, &bad_message);
144 EXPECT_EQ("", error); 97 EXPECT_EQ("", error);
145 EXPECT_FALSE(bad_message); 98 EXPECT_FALSE(bad_message);
146 ASSERT_TRUE(action.get()); 99 ASSERT_TRUE(action.get());
147 100
148 // Check that redirect works on regular URLs but not on protected URLs. 101 // Check that redirect works on regular URLs but not on protected URLs.
149 net::TestURLRequest regular_request(GURL("http://test.com"), NULL, &context); 102 net::TestURLRequest regular_request(GURL("http://test.com"), NULL, &context);
150 std::list<LinkedPtrEventResponseDelta> deltas = 103 std::list<LinkedPtrEventResponseDelta> deltas;
151 action_set->CreateDeltas( 104 DeclarativeWebRequestData request_data(&regular_request, ON_BEFORE_REQUEST);
152 NULL, "ext1", 105 WebRequestAction::ApplyInfo apply_info = {
153 WebRequestRule::RequestData(&regular_request, ON_BEFORE_REQUEST), 106 NULL, request_data, false, &deltas
154 false, base::Time()); 107 };
108 action_set->Apply("ext1", base::Time(), &apply_info);
155 EXPECT_EQ(1u, deltas.size()); 109 EXPECT_EQ(1u, deltas.size());
156 110
157 net::TestURLRequest protected_request(GURL("http://clients1.google.com"), 111 net::TestURLRequest protected_request(GURL("http://clients1.google.com"),
158 NULL, &context); 112 NULL, &context);
159 deltas = action_set->CreateDeltas( 113 deltas.clear();
160 NULL, "ext1", 114 request_data =
161 WebRequestRule::RequestData(&protected_request, ON_BEFORE_REQUEST), 115 DeclarativeWebRequestData(&protected_request, ON_BEFORE_REQUEST);
162 false, base::Time()); 116 action_set->Apply("ext1", base::Time(), &apply_info);
163 EXPECT_EQ(0u, deltas.size()); 117 EXPECT_EQ(0u, deltas.size());
164 } 118 }
165 119
166 } // namespace extensions 120 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698