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"
12 const char kUnknownActionType
[] = "unknownType";
15 namespace extensions
{
17 namespace keys
= declarative_webrequest_constants
;
19 TEST(WebRequestActionTest
, CreateAction
) {
21 scoped_ptr
<WebRequestAction
> result
;
23 // Test wrong data type passed.
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
;
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
);
40 result
= WebRequestAction::Create(input
, &error
);
41 EXPECT_FALSE(error
.empty());
42 EXPECT_FALSE(result
.get());
45 input
.SetString(keys::kInstanceTypeKey
, keys::kCancelRequestType
);
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
) {
55 scoped_ptr
<WebRequestActionSet
> result
;
57 WebRequestActionSet::AnyVector input
;
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
);
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
);
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());
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
);
90 result
= WebRequestActionSet::Create(input
, &error
);
91 EXPECT_FALSE(error
.empty());
92 EXPECT_FALSE(result
.get());
95 } // namespace extensions