Index: chrome/browser/extensions/api/declarative_webrequest/webrequest_condition_attribute_unittest.cc |
diff --git a/chrome/browser/extensions/api/declarative_webrequest/webrequest_condition_attribute_unittest.cc b/chrome/browser/extensions/api/declarative_webrequest/webrequest_condition_attribute_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d64112700b77f37bb604f7050724a69ce7da5834 |
--- /dev/null |
+++ b/chrome/browser/extensions/api/declarative_webrequest/webrequest_condition_attribute_unittest.cc |
@@ -0,0 +1,56 @@ |
+// Copyright (c) 2012 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/extensions/api/declarative_webrequest/webrequest_condition_attribute.h" |
+ |
+#include "base/message_loop.h" |
+#include "base/values.h" |
+#include "net/url_request/url_request_test_util.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+namespace { |
+const char kSchemeConditionName[] = "scheme"; |
+const char kUnknownConditionName[] = "unknownType"; |
+} // namespace |
+ |
+namespace extensions { |
+ |
+TEST(WebRequestConditionAttributeTest, CreateConditionAttribute) { |
+ // Necessary for TestURLRequest. |
+ MessageLoop message_loop(MessageLoop::TYPE_IO); |
+ |
+ std::string error; |
+ scoped_ptr<WebRequestConditionAttribute> result; |
+ StringValue http_string_value("http"); |
+ ListValue list_value; |
+ |
+ // Test wrong condition name passed. |
+ error.clear(); |
+ result = WebRequestConditionAttribute::Create( |
+ kUnknownConditionName, &http_string_value, &error); |
+ EXPECT_FALSE(error.empty()); |
+ EXPECT_FALSE(result.get()); |
+ |
+ // Test wrong data type passed |
+ error.clear(); |
+ result = WebRequestConditionAttribute::Create( |
+ kUnknownConditionName, &list_value, &error); |
+ EXPECT_FALSE(error.empty()); |
+ EXPECT_FALSE(result.get()); |
+ |
+ // Test success |
+ error.clear(); |
+ result = WebRequestConditionAttribute::Create( |
+ kSchemeConditionName, &http_string_value, &error); |
+ EXPECT_TRUE(error.empty()); |
+ ASSERT_TRUE(result.get()); |
+ EXPECT_EQ(WebRequestConditionAttribute::CONDITION_HAS_SCHEME, |
+ result->GetType()); |
+ TestURLRequest url_request_ok(GURL("http://www.example.com"), NULL); |
+ EXPECT_TRUE(result->IsFulfilled(&url_request_ok)); |
+ TestURLRequest url_request_fail(GURL("https://www.example.com"), NULL); |
+ EXPECT_FALSE(result->IsFulfilled(&url_request_fail)); |
+} |
+ |
+} // namespace extensions |