Hook up WebRequestRulesRegistry into old WebRequest API
[chromium-blink-merge.git] / chrome / browser / extensions / api / declarative_webrequest / webrequest_action_unittest.cc
blobb7bb85d2b63476b51d777ba56cc41ea3dd012ac2
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
3 // found in the LICENSE file.
5 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_action.h"
7 #include "base/values.h"
8 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_constants.h"
9 #include "testing/gtest/include/gtest/gtest.h"
11 namespace {
12 const char kUnknownActionType[] = "unknownType";
13 } // namespace
15 namespace extensions {
17 namespace keys = declarative_webrequest_constants;
19 TEST(WebRequestActionTest, CreateAction) {
20 std::string error;
21 scoped_ptr<WebRequestAction> result;
23 // Test wrong data type passed.
24 error.clear();
25 base::ListValue empty_list;
26 result = WebRequestAction::Create(empty_list, &error);
27 EXPECT_FALSE(error.empty());
28 EXPECT_FALSE(result.get());
30 // Test missing instanceType element.
31 base::DictionaryValue input;
32 error.clear();
33 result = WebRequestAction::Create(input, &error);
34 EXPECT_FALSE(error.empty());
35 EXPECT_FALSE(result.get());
37 // Test wrong instanceType element.
38 input.SetString(keys::kInstanceTypeKey, kUnknownActionType);
39 error.clear();
40 result = WebRequestAction::Create(input, &error);
41 EXPECT_FALSE(error.empty());
42 EXPECT_FALSE(result.get());
44 // Test success
45 input.SetString(keys::kInstanceTypeKey, keys::kCancelRequestType);
46 error.clear();
47 result = WebRequestAction::Create(input, &error);
48 EXPECT_TRUE(error.empty());
49 ASSERT_TRUE(result.get());
50 EXPECT_EQ(WebRequestAction::ACTION_CANCEL_REQUEST, result->GetType());
53 TEST(WebRequestActionTest, CreateActionSet) {
54 std::string error;
55 scoped_ptr<WebRequestActionSet> result;
57 WebRequestActionSet::AnyVector input;
59 // Test empty input.
60 error.clear();
61 result = WebRequestActionSet::Create(input, &error);
62 EXPECT_TRUE(error.empty());
63 ASSERT_TRUE(result.get());
64 EXPECT_TRUE(result->actions().empty());
66 DictionaryValue correct_action;
67 correct_action.SetString(keys::kInstanceTypeKey, keys::kCancelRequestType);
68 DictionaryValue incorrect_action;
69 incorrect_action.SetString(keys::kInstanceTypeKey, kUnknownActionType);
71 // Test success.
72 linked_ptr<json_schema_compiler::any::Any> action1 = make_linked_ptr(
73 new json_schema_compiler::any::Any);
74 action1->Init(correct_action);
75 input.push_back(action1);
76 error.clear();
77 result = WebRequestActionSet::Create(input, &error);
78 EXPECT_TRUE(error.empty());
79 ASSERT_TRUE(result.get());
80 ASSERT_EQ(1u, result->actions().size());
81 EXPECT_EQ(WebRequestAction::ACTION_CANCEL_REQUEST,
82 result->actions()[0]->GetType());
84 // Test failure.
85 linked_ptr<json_schema_compiler::any::Any> action2 = make_linked_ptr(
86 new json_schema_compiler::any::Any);
87 action2->Init(incorrect_action);
88 input.push_back(action2);
89 error.clear();
90 result = WebRequestActionSet::Create(input, &error);
91 EXPECT_FALSE(error.empty());
92 EXPECT_FALSE(result.get());
95 } // namespace extensions