158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file. 4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/browser/chromeos/options/network_property_ui_data.h" 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/values.h" 84e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "components/onc/onc_constants.h" 9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace chromeos { 12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class NetworkPropertyUIDataTest : public testing::Test { 14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) protected: 1590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) NetworkPropertyUIDataTest() {} 1690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual ~NetworkPropertyUIDataTest() {} 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void CheckProperty(const NetworkPropertyUIData& property, 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const base::Value* expected_default_value, 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool expected_managed, 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool expected_editable) { 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (expected_default_value) { 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(base::Value::Equals(expected_default_value, 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) property.default_value())); 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } else { 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(property.default_value()); 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 2890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) EXPECT_EQ(expected_managed, property.IsManaged()); 2990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) EXPECT_EQ(expected_editable, property.IsEditable()); 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 3390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)TEST_F(NetworkPropertyUIDataTest, PropertyInit) { 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) NetworkPropertyUIData empty_prop; 3590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) CheckProperty(empty_prop, NULL, false, true); 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 3790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) NetworkPropertyUIData null_prop(onc::ONC_SOURCE_NONE); 3890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) CheckProperty(null_prop, NULL, false, true); 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 4190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)TEST_F(NetworkPropertyUIDataTest, ParseOncProperty) { 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::DictionaryValue onc; 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::StringValue val_a("a"); 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::StringValue val_b("b"); 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::StringValue val_a_a("a_a"); 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::StringValue val_a_b("a_b"); 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) onc.Set("a", val_a.DeepCopy()); 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) onc.Set("b", val_b.DeepCopy()); 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) onc.Set("a.a", val_a_a.DeepCopy()); 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) onc.Set("a.b", val_a_b.DeepCopy()); 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::ListValue recommended; 5490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) recommended.AppendString("b"); 5590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) recommended.AppendString("c"); 5690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) recommended.AppendString("a.a"); 57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) onc.Set("Recommended", recommended.DeepCopy()); 58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) onc.Set("a.Recommended", recommended.DeepCopy()); 59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) NetworkPropertyUIData prop; 61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 6290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) prop.ParseOncProperty(onc::ONC_SOURCE_NONE, &onc, "a"); 6390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) CheckProperty(prop, NULL, false, true); 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 6590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) onc::ONCSource source = onc::ONC_SOURCE_USER_IMPORT; 66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 6790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) prop.ParseOncProperty(source, &onc, "a"); 6890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) CheckProperty(prop, NULL, false, true); 69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 7090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) prop.ParseOncProperty(source, &onc, "a.b"); 7190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) CheckProperty(prop, NULL, false, true); 72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 7390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) prop.ParseOncProperty(source, &onc, "c"); 7490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) CheckProperty(prop, NULL, false, true); 75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 7690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) source = onc::ONC_SOURCE_USER_POLICY; 77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 7890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) prop.ParseOncProperty(source, &onc, "a"); 7990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) CheckProperty(prop, NULL, true, false); 80c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 8190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) prop.ParseOncProperty(source, &onc, "b"); 8290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) CheckProperty(prop, &val_b, false, true); 83c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 8490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) prop.ParseOncProperty(source, &onc, "c"); 8590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) CheckProperty(prop, NULL, false, true); 86c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 8790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) prop.ParseOncProperty(source, &onc, "d"); 8890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) CheckProperty(prop, NULL, true, false); 89c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 9090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) prop.ParseOncProperty(source, &onc, "a.a"); 9190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) CheckProperty(prop, NULL, true, false); 92c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 9390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) prop.ParseOncProperty(source, &onc, "a.b"); 9490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) CheckProperty(prop, &val_a_b, false, true); 95c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 9690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) prop.ParseOncProperty(source, &onc, "a.c"); 9790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) CheckProperty(prop, NULL, false, true); 98c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 9990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) prop.ParseOncProperty(source, &onc, "a.d"); 10090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) CheckProperty(prop, NULL, true, false); 101c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 10290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) prop.ParseOncProperty(source, NULL, "a.e"); 10390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) CheckProperty(prop, NULL, true, false); 104c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 105c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 106c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace chromeos 107