| Index: chromeos/network/managed_network_configuration_handler_unittest.cc
|
| diff --git a/chromeos/network/managed_network_configuration_handler_unittest.cc b/chromeos/network/managed_network_configuration_handler_unittest.cc
|
| index b4ec1ccd4db6290e78c6741d2e2cf4eb17933246..7a32886d54555bee990d387691449a9612264172 100644
|
| --- a/chromeos/network/managed_network_configuration_handler_unittest.cc
|
| +++ b/chromeos/network/managed_network_configuration_handler_unittest.cc
|
| @@ -14,6 +14,7 @@
|
| #include "chromeos/dbus/dbus_thread_manager.h"
|
| #include "chromeos/dbus/mock_shill_manager_client.h"
|
| #include "chromeos/dbus/mock_shill_profile_client.h"
|
| +#include "chromeos/dbus/mock_shill_service_client.h"
|
| #include "chromeos/dbus/shill_client_helper.h"
|
| #include "chromeos/network/managed_network_configuration_handler_impl.h"
|
| #include "chromeos/network/network_configuration_handler.h"
|
| @@ -130,6 +131,27 @@ class ShillProfileTestClient {
|
| std::map<std::string, std::string> profile_to_user_;
|
| };
|
|
|
| +class ShillServiceTestClient {
|
| + public:
|
| + typedef ShillClientHelper::DictionaryValueCallback DictionaryValueCallback;
|
| + void SetFakeProperties(const base::DictionaryValue& service_properties) {
|
| + service_properties_.Clear();
|
| + service_properties_.MergeDictionary(&service_properties);
|
| + }
|
| +
|
| + void GetProperties(const dbus::ObjectPath& service_path,
|
| + const DictionaryValueCallback& callback) {
|
| + base::MessageLoop::current()->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(callback,
|
| + DBUS_METHOD_CALL_SUCCESS,
|
| + base::ConstRef(service_properties_)));
|
| + }
|
| +
|
| + protected:
|
| + base::DictionaryValue service_properties_;
|
| +};
|
| +
|
| class TestNetworkProfileHandler : public NetworkProfileHandler {
|
| public:
|
| TestNetworkProfileHandler() {
|
| @@ -151,7 +173,8 @@ class ManagedNetworkConfigurationHandlerTest : public testing::Test {
|
| public:
|
| ManagedNetworkConfigurationHandlerTest()
|
| : mock_manager_client_(NULL),
|
| - mock_profile_client_(NULL) {
|
| + mock_profile_client_(NULL),
|
| + mock_service_client_(NULL) {
|
| }
|
|
|
| virtual ~ManagedNetworkConfigurationHandlerTest() {
|
| @@ -162,10 +185,13 @@ class ManagedNetworkConfigurationHandlerTest : public testing::Test {
|
| DBusThreadManager::GetSetterForTesting();
|
| mock_manager_client_ = new StrictMock<MockShillManagerClient>();
|
| mock_profile_client_ = new StrictMock<MockShillProfileClient>();
|
| + mock_service_client_ = new StrictMock<MockShillServiceClient>();
|
| dbus_setter->SetShillManagerClient(
|
| scoped_ptr<ShillManagerClient>(mock_manager_client_).Pass());
|
| dbus_setter->SetShillProfileClient(
|
| scoped_ptr<ShillProfileClient>(mock_profile_client_).Pass());
|
| + dbus_setter->SetShillServiceClient(
|
| + scoped_ptr<ShillServiceClient>(mock_service_client_).Pass());
|
|
|
| SetNetworkConfigurationHandlerExpectations();
|
|
|
| @@ -177,6 +203,10 @@ class ManagedNetworkConfigurationHandlerTest : public testing::Test {
|
| .WillByDefault(Invoke(&profiles_stub_,
|
| &ShillProfileTestClient::GetEntry));
|
|
|
| + ON_CALL(*mock_service_client_, GetProperties(_,_))
|
| + .WillByDefault(Invoke(&services_stub_,
|
| + &ShillServiceTestClient::GetProperties));
|
| +
|
| network_profile_handler_.reset(new TestNetworkProfileHandler());
|
| network_configuration_handler_.reset(
|
| NetworkConfigurationHandler::InitializeForTest(
|
| @@ -209,9 +239,12 @@ class ManagedNetworkConfigurationHandlerTest : public testing::Test {
|
| profiles_stub_.AddProfile(kUser1ProfilePath, kUser1);
|
| network_profile_handler_->
|
| AddProfileForTest(NetworkProfile(kUser1ProfilePath, kUser1));
|
| - network_profile_handler_->
|
| - AddProfileForTest(NetworkProfile(
|
| - NetworkProfileHandler::GetSharedProfilePath(), std::string()));
|
| +
|
| + profiles_stub_.AddProfile(NetworkProfileHandler::GetSharedProfilePath(),
|
| + std::string() /* no userhash */);
|
| + network_profile_handler_->AddProfileForTest(
|
| + NetworkProfile(NetworkProfileHandler::GetSharedProfilePath(),
|
| + std::string() /* no userhash */));
|
| }
|
|
|
| void SetUpEntry(const std::string& path_to_shill_json,
|
| @@ -259,16 +292,44 @@ class ManagedNetworkConfigurationHandlerTest : public testing::Test {
|
| return managed_network_configuration_handler_.get();
|
| }
|
|
|
| + void GetManagedProperties(const std::string& userhash,
|
| + const std::string& service_path) {
|
| + managed_handler()->GetManagedProperties(
|
| + userhash,
|
| + service_path,
|
| + base::Bind(
|
| + &ManagedNetworkConfigurationHandlerTest::GetPropertiesCallback,
|
| + base::Unretained(this)),
|
| + base::Bind(&ManagedNetworkConfigurationHandlerTest::UnexpectedError));
|
| + }
|
| +
|
| + void GetPropertiesCallback(const std::string& service_path,
|
| + const base::DictionaryValue& dictionary) {
|
| + get_properties_service_path_ = service_path;
|
| + get_properties_result_.Clear();
|
| + get_properties_result_.MergeDictionary(&dictionary);
|
| + }
|
| +
|
| + static void UnexpectedError(const std::string& error_name,
|
| + scoped_ptr<base::DictionaryValue> error_data) {
|
| + ASSERT_FALSE(true);
|
| + }
|
| +
|
| protected:
|
| MockShillManagerClient* mock_manager_client_;
|
| MockShillProfileClient* mock_profile_client_;
|
| + MockShillServiceClient* mock_service_client_;
|
| ShillProfileTestClient profiles_stub_;
|
| + ShillServiceTestClient services_stub_;
|
| scoped_ptr<TestNetworkProfileHandler> network_profile_handler_;
|
| scoped_ptr<NetworkConfigurationHandler> network_configuration_handler_;
|
| scoped_ptr<ManagedNetworkConfigurationHandlerImpl>
|
| managed_network_configuration_handler_;
|
| base::MessageLoop message_loop_;
|
|
|
| + std::string get_properties_service_path_;
|
| + base::DictionaryValue get_properties_result_;
|
| +
|
| private:
|
| DISALLOW_COPY_AND_ASSIGN(ManagedNetworkConfigurationHandlerTest);
|
| };
|
| @@ -660,10 +721,13 @@ TEST_F(ManagedNetworkConfigurationHandlerTest, SetPolicyIgnoreUnmanaged) {
|
|
|
| TEST_F(ManagedNetworkConfigurationHandlerTest, AutoConnectDisallowed) {
|
| InitializeStandardProfiles();
|
| + // Setup an unmanaged network.
|
| SetUpEntry("policy/shill_unmanaged_wifi2.json",
|
| kUser1ProfilePath,
|
| "wifi2_entry_path");
|
|
|
| + // Apply the user policy with global autoconnect config and expect that
|
| + // autoconnect is disabled in the network's profile entry.
|
| EXPECT_CALL(*mock_profile_client_,
|
| GetProperties(dbus::ObjectPath(kUser1ProfilePath), _, _));
|
|
|
| @@ -685,6 +749,38 @@ TEST_F(ManagedNetworkConfigurationHandlerTest, AutoConnectDisallowed) {
|
| kUser1,
|
| "policy/policy_disallow_autoconnect.onc");
|
| message_loop_.RunUntilIdle();
|
| +
|
| + // Verify that GetManagedProperties correctly augments the properties with the
|
| + // global config from the user policy.
|
| +
|
| + // GetManagedProperties requires the device policy to be set or explicitly
|
| + // unset.
|
| + EXPECT_CALL(*mock_profile_client_,
|
| + GetProperties(dbus::ObjectPath(
|
| + NetworkProfileHandler::GetSharedProfilePath()),
|
| + _,
|
| + _));
|
| + managed_handler()->SetPolicy(
|
| + ::onc::ONC_SOURCE_DEVICE_POLICY,
|
| + std::string(), // no userhash
|
| + base::ListValue(), // no device network policy
|
| + base::DictionaryValue()); // no device global config
|
| +
|
| + services_stub_.SetFakeProperties(*expected_shill_properties);
|
| + EXPECT_CALL(*mock_service_client_,
|
| + GetProperties(dbus::ObjectPath(
|
| + "wifi2"),_));
|
| +
|
| + GetManagedProperties(kUser1, "wifi2");
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + EXPECT_EQ("wifi2", get_properties_service_path_);
|
| +
|
| + scoped_ptr<base::DictionaryValue> expected_managed_onc =
|
| + test_utils::ReadTestDictionary(
|
| + "policy/managed_onc_disallow_autoconnect_on_unmanaged_wifi2.onc");
|
| + EXPECT_TRUE(onc::test_utils::Equals(expected_managed_onc.get(),
|
| + &get_properties_result_));
|
| }
|
|
|
| TEST_F(ManagedNetworkConfigurationHandlerTest, LateProfileLoading) {
|
|
|