Index: chrome/browser/chromeos/cros/network_ui_data_unittest.cc |
diff --git a/chrome/browser/chromeos/cros/network_ui_data_unittest.cc b/chrome/browser/chromeos/cros/network_ui_data_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..53f56f42bcd64ce463f18f4ac877668d9f2b77e2 |
--- /dev/null |
+++ b/chrome/browser/chromeos/cros/network_ui_data_unittest.cc |
@@ -0,0 +1,163 @@ |
+// Copyright (c) 2011 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 "base/stringprintf.h" |
+#include "chrome/browser/chromeos/cros/network_library.h" |
+#include "chrome/browser/chromeos/cros/network_ui_data.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+namespace chromeos { |
+ |
+namespace { |
+ |
+// A mock network for testing. We really only need the ui_data() member. |
+class TestNetwork : public Network { |
+ public: |
+ TestNetwork() |
+ : Network("wifi-network", TYPE_WIFI) {} |
+}; |
+ |
+} // namespace |
+ |
+class NetworkUIDataTest : public testing::Test { |
+ protected: |
+ NetworkUIDataTest() {} |
+ |
+ static void SetProperty(DictionaryValue* dict, |
+ const char* property_key, |
+ const char* controller, |
+ base::Value* default_value) { |
+ DictionaryValue* property_dict = new DictionaryValue(); |
+ if (controller) { |
+ property_dict->SetString(NetworkPropertyUIData::kKeyController, |
+ controller); |
+ } |
+ if (default_value) { |
+ property_dict->Set(NetworkPropertyUIData::kKeyDefaultValue, |
+ default_value); |
+ } |
+ dict->Set(base::StringPrintf("%s.%s", |
+ NetworkUIData::kKeyProperties, |
+ property_key), |
+ property_dict); |
+ } |
+ |
+ static void CheckProperty(const DictionaryValue* dict, |
+ const char* property_key, |
+ const char* controller, |
+ base::Value* default_value) { |
+ DictionaryValue* property_dict; |
+ std::string key = base::StringPrintf("%s.%s", |
+ NetworkUIData::kKeyProperties, |
+ property_key); |
+ EXPECT_TRUE(dict->GetDictionary(key, &property_dict)); |
+ ASSERT_TRUE(property_dict); |
+ std::string actual_controller; |
+ EXPECT_TRUE(property_dict->GetString(NetworkPropertyUIData::kKeyController, |
+ &actual_controller)); |
+ EXPECT_EQ(controller, actual_controller); |
+ if (default_value) { |
+ base::Value* actual_value = NULL; |
+ EXPECT_TRUE(property_dict->Get(NetworkPropertyUIData::kKeyDefaultValue, |
+ &actual_value)); |
+ EXPECT_TRUE(base::Value::Equals(default_value, actual_value)); |
+ } |
+ } |
+ |
+ TestNetwork network_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(NetworkUIDataTest); |
+}; |
+ |
+TEST_F(NetworkUIDataTest, ONCSource) { |
+ network_.ui_data()->SetString(NetworkUIData::kKeyONCSource, "user_import"); |
+ EXPECT_EQ(NetworkUIData::ONC_SOURCE_USER_IMPORT, |
+ NetworkUIData::GetONCSource(&network_)); |
+ EXPECT_FALSE(NetworkUIData::IsManaged(&network_)); |
+ |
+ network_.ui_data()->SetString(NetworkUIData::kKeyONCSource, "device_policy"); |
+ EXPECT_EQ(NetworkUIData::ONC_SOURCE_DEVICE_POLICY, |
+ NetworkUIData::GetONCSource(&network_)); |
+ EXPECT_TRUE(NetworkUIData::IsManaged(&network_)); |
+ |
+ network_.ui_data()->SetString(NetworkUIData::kKeyONCSource, "user_policy"); |
+ EXPECT_EQ(NetworkUIData::ONC_SOURCE_USER_POLICY, |
+ NetworkUIData::GetONCSource(&network_)); |
+ EXPECT_TRUE(NetworkUIData::IsManaged(&network_)); |
+} |
+ |
+TEST_F(NetworkUIDataTest, ReadProperties) { |
+ SetProperty(network_.ui_data(), NetworkUIData::kPropertyAutoConnect, |
+ "policy", NULL); |
+ SetProperty(network_.ui_data(), NetworkUIData::kPropertyPreferred, |
+ "user", Value::CreateBooleanValue(true)); |
+ SetProperty(network_.ui_data(), NetworkUIData::kPropertyPassphrase, |
+ NULL, Value::CreateIntegerValue(42)); |
+ |
+ NetworkPropertyUIData property_ui_data(&network_, |
+ NetworkUIData::kPropertyAutoConnect); |
+ EXPECT_TRUE(property_ui_data.managed()); |
+ EXPECT_FALSE(property_ui_data.recommended()); |
+ EXPECT_FALSE(property_ui_data.editable()); |
+ EXPECT_FALSE(property_ui_data.default_value()); |
+ |
+ property_ui_data.UpdateFromNetwork(&network_, |
+ NetworkUIData::kPropertyPreferred); |
+ EXPECT_FALSE(property_ui_data.managed()); |
+ EXPECT_TRUE(property_ui_data.recommended()); |
+ EXPECT_TRUE(property_ui_data.editable()); |
+ base::FundamentalValue expected_preferred(true); |
+ EXPECT_TRUE(base::Value::Equals(&expected_preferred, |
+ property_ui_data.default_value())); |
+ |
+ property_ui_data.UpdateFromNetwork(&network_, |
+ NetworkUIData::kPropertyPassphrase); |
+ EXPECT_FALSE(property_ui_data.managed()); |
+ EXPECT_TRUE(property_ui_data.recommended()); |
+ EXPECT_TRUE(property_ui_data.editable()); |
+ base::FundamentalValue expected_passphrase(42); |
+ EXPECT_TRUE(base::Value::Equals(&expected_passphrase, |
+ property_ui_data.default_value())); |
+ |
+ property_ui_data.UpdateFromNetwork(&network_, |
+ NetworkUIData::kPropertySaveCredentials); |
+ EXPECT_FALSE(property_ui_data.managed()); |
+ EXPECT_FALSE(property_ui_data.recommended()); |
+ EXPECT_TRUE(property_ui_data.editable()); |
+ EXPECT_FALSE(property_ui_data.default_value()); |
+} |
+ |
+TEST_F(NetworkUIDataTest, WriteProperties) { |
+ NetworkUIData ui_data_builder; |
+ ui_data_builder.set_onc_source(NetworkUIData::ONC_SOURCE_USER_POLICY); |
+ NetworkPropertyUIData auto_connect_ui_data( |
+ NetworkPropertyUIData::CONTROLLER_USER, |
+ base::Value::CreateBooleanValue(true)); |
+ ui_data_builder.SetProperty(NetworkUIData::kPropertyAutoConnect, |
+ auto_connect_ui_data); |
+ NetworkPropertyUIData preferred_ui_data( |
+ NetworkPropertyUIData::CONTROLLER_POLICY, |
+ base::Value::CreateBooleanValue(42)); |
+ ui_data_builder.SetProperty(NetworkUIData::kPropertyPreferred, |
+ preferred_ui_data); |
+ NetworkPropertyUIData passphrase_ui_data( |
+ NetworkPropertyUIData::CONTROLLER_USER, NULL); |
+ ui_data_builder.SetProperty(NetworkUIData::kPropertyPassphrase, |
+ passphrase_ui_data); |
+ |
+ DictionaryValue dict; |
+ ui_data_builder.FillDictionary(&dict); |
+ |
+ std::string onc_source; |
+ EXPECT_TRUE(dict.GetString(NetworkUIData::kKeyONCSource, &onc_source)); |
+ EXPECT_EQ("user_policy", onc_source); |
+ CheckProperty(&dict, NetworkUIData::kPropertyAutoConnect, |
+ "user", base::Value::CreateBooleanValue(true)); |
+ CheckProperty(&dict, NetworkUIData::kPropertyPreferred, |
+ "policy", base::Value::CreateBooleanValue(42)); |
+ CheckProperty(&dict, NetworkUIData::kPropertyPassphrase, |
+ "user", NULL); |
+} |
+ |
+} // namespace chromeos |