Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(89)

Unified Diff: chromeos/network/managed_network_configuration_handler_unittest.cc

Issue 13957012: Adding a NetworkProfileHandler used by ManagedNetworkConfigurationHandler. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased. Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chromeos/network/managed_network_configuration_handler.cc ('k') | chromeos/network/network_profile.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 def9204afc87df29a6198bfa4f3453b7f5a05bf5..3c1780952831c2c44bb476e32aa6e12ccc6c3747 100644
--- a/chromeos/network/managed_network_configuration_handler_unittest.cc
+++ b/chromeos/network/managed_network_configuration_handler_unittest.cc
@@ -15,6 +15,7 @@
#include "chromeos/dbus/mock_shill_service_client.h"
#include "chromeos/dbus/shill_profile_client_stub.h"
#include "chromeos/network/network_configuration_handler.h"
+#include "chromeos/network/network_profile_handler_stub.h"
#include "chromeos/network/onc/onc_test_utils.h"
#include "chromeos/network/onc/onc_utils.h"
#include "dbus/object_path.h"
@@ -33,6 +34,8 @@ using ::testing::_;
namespace test_utils = ::chromeos::onc::test_utils;
+namespace chromeos {
+
namespace {
std::string ValueToString(const base::Value* value) {
@@ -41,6 +44,10 @@ std::string ValueToString(const base::Value* value) {
return str.str();
}
+const char kSharedProfilePath[] = "/profile/default";
+const char kUser1[] = "user1";
+const char kUser1ProfilePath[] = "/profile/user1/shill";
+
// Matcher to match base::Value.
MATCHER_P(IsEqualTo,
value,
@@ -49,10 +56,80 @@ MATCHER_P(IsEqualTo,
return value->Equals(&arg);
}
-} // namespace
+class ShillProfileTestClient {
+ public:
+ typedef ShillClientHelper::DictionaryValueCallbackWithoutStatus
+ DictionaryValueCallbackWithoutStatus;
+ typedef ShillClientHelper::ErrorCallback ErrorCallback;
+
+ void AddProfile(const std::string& profile_path,
+ const std::string& userhash) {
+ if (profile_entries_.HasKey(profile_path))
+ return;
+
+ base::DictionaryValue* profile = new base::DictionaryValue;
+ profile_entries_.SetWithoutPathExpansion(profile_path, profile);
+ profile_to_user_[profile_path] = userhash;
+ }
+ void AddEntry(const std::string& profile_path,
+ const std::string& entry_path,
+ const base::DictionaryValue& entry) {
+ base::DictionaryValue* entries = NULL;
+ profile_entries_.GetDictionaryWithoutPathExpansion(profile_path, &entries);
+ ASSERT_TRUE(entries);
+
+ base::DictionaryValue* new_entry = entry.DeepCopy();
+ new_entry->SetStringWithoutPathExpansion(flimflam::kProfileProperty,
+ profile_path);
+ entries->SetWithoutPathExpansion(entry_path, new_entry);
+ }
-namespace chromeos {
+ void GetProperties(const dbus::ObjectPath& profile_path,
+ const DictionaryValueCallbackWithoutStatus& callback,
+ const ErrorCallback& error_callback) {
+ base::DictionaryValue* entries = NULL;
+ profile_entries_.GetDictionaryWithoutPathExpansion(profile_path.value(),
+ &entries);
+ ASSERT_TRUE(entries);
+
+ scoped_ptr<base::DictionaryValue> result(new base::DictionaryValue);
+ base::ListValue* entry_paths = new base::ListValue;
+ result->SetWithoutPathExpansion(flimflam::kEntriesProperty,
+ entry_paths);
+ for (base::DictionaryValue::Iterator it(*entries); !it.IsAtEnd();
+ it.Advance()) {
+ entry_paths->AppendString(it.key());
+ }
+
+ ASSERT_GT(profile_to_user_.count(profile_path.value()), 0UL);
+ const std::string& userhash = profile_to_user_[profile_path.value()];
+ result->SetStringWithoutPathExpansion(shill::kUserHashProperty, userhash);
+
+ callback.Run(*result);
+ }
+
+ void GetEntry(const dbus::ObjectPath& profile_path,
+ const std::string& entry_path,
+ const DictionaryValueCallbackWithoutStatus& callback,
+ const ErrorCallback& error_callback) {
+ base::DictionaryValue* entries = NULL;
+ profile_entries_.GetDictionaryWithoutPathExpansion(profile_path.value(),
+ &entries);
+ ASSERT_TRUE(entries);
+
+ base::DictionaryValue* entry = NULL;
+ entries->GetDictionaryWithoutPathExpansion(entry_path, &entry);
+ ASSERT_TRUE(entry);
+ callback.Run(*entry);
+ }
+
+ protected:
+ base::DictionaryValue profile_entries_;
+ std::map<std::string, std::string> profile_to_user_;
+};
+
+} // namespace
class ManagedNetworkConfigurationHandlerTest : public testing::Test {
public:
@@ -76,15 +153,15 @@ class ManagedNetworkConfigurationHandlerTest : public testing::Test {
.WillRepeatedly(Return(&mock_profile_client_));
ON_CALL(mock_profile_client_, GetProperties(_,_,_))
- .WillByDefault(Invoke(&stub_profile_client_,
- &ShillProfileClientStub::GetProperties));
+ .WillByDefault(Invoke(&profiles_stub_,
+ &ShillProfileTestClient::GetProperties));
ON_CALL(mock_profile_client_, GetEntry(_,_,_,_))
- .WillByDefault(Invoke(&stub_profile_client_,
- &ShillProfileClientStub::GetEntry));
+ .WillByDefault(Invoke(&profiles_stub_,
+ &ShillProfileTestClient::GetEntry));
NetworkConfigurationHandler::Initialize();
- ManagedNetworkConfigurationHandler::Initialize();
+ ManagedNetworkConfigurationHandler::Initialize(&stub_profile_handler_);
message_loop_.RunUntilIdle();
}
@@ -94,16 +171,29 @@ class ManagedNetworkConfigurationHandlerTest : public testing::Test {
DBusThreadManager::Shutdown();
}
+ void VerifyAndClearExpectations() {
+ Mock::VerifyAndClearExpectations(&mock_manager_client_);
+ Mock::VerifyAndClearExpectations(&mock_service_client_);
+ Mock::VerifyAndClearExpectations(&mock_profile_client_);
+ }
+
+ void InitializeStandardProfiles() {
+ profiles_stub_.AddProfile(kUser1ProfilePath, kUser1);
+ stub_profile_handler_.AddProfile(NetworkProfile(kUser1ProfilePath, kUser1));
+ stub_profile_handler_.AddProfile(
+ NetworkProfile(kSharedProfilePath, std::string()));
+ }
+
void SetUpEntry(const std::string& path_to_shill_json,
const std::string& profile_path,
const std::string& entry_path) {
- stub_profile_client_.AddEntry(
- profile_path,
- entry_path,
- *test_utils::ReadTestDictionary(path_to_shill_json));
+ scoped_ptr<base::DictionaryValue> entry =
+ test_utils::ReadTestDictionary(path_to_shill_json);
+ profiles_stub_.AddEntry(profile_path, entry_path, *entry);
}
void SetPolicy(onc::ONCSource onc_source,
+ const std::string& userhash,
const std::string& path_to_onc) {
scoped_ptr<base::DictionaryValue> policy;
if (path_to_onc.empty())
@@ -115,7 +205,8 @@ class ManagedNetworkConfigurationHandlerTest : public testing::Test {
policy->GetListWithoutPathExpansion(
onc::toplevel_config::kNetworkConfigurations, &network_configs);
- managed_handler()->SetPolicy(onc::ONC_SOURCE_USER_POLICY, *network_configs);
+ managed_handler()->SetPolicy(
+ onc::ONC_SOURCE_USER_POLICY, userhash, *network_configs);
}
ManagedNetworkConfigurationHandler* managed_handler() {
@@ -126,63 +217,67 @@ class ManagedNetworkConfigurationHandlerTest : public testing::Test {
StrictMock<MockShillManagerClient> mock_manager_client_;
StrictMock<MockShillServiceClient> mock_service_client_;
StrictMock<MockShillProfileClient> mock_profile_client_;
- ShillProfileClientStub stub_profile_client_;
+ NetworkProfileHandlerStub stub_profile_handler_;
+ ShillProfileTestClient profiles_stub_;
MessageLoop message_loop_;
private:
DISALLOW_COPY_AND_ASSIGN(ManagedNetworkConfigurationHandlerTest);
};
+TEST_F(ManagedNetworkConfigurationHandlerTest, ProfileInitialization) {
+ InitializeStandardProfiles();
+ message_loop_.RunUntilIdle();
+}
+
TEST_F(ManagedNetworkConfigurationHandlerTest, SetPolicyManageUnconfigured) {
+ InitializeStandardProfiles();
scoped_ptr<base::DictionaryValue> expected_shill_properties =
test_utils::ReadTestDictionary(
"policy/shill_policy_on_unconfigured_wifi1.json");
EXPECT_CALL(mock_profile_client_,
- GetProperties(dbus::ObjectPath("/profile/chronos/shill"),
- _, _)).Times(1);
+ GetProperties(dbus::ObjectPath(kUser1ProfilePath), _, _));
EXPECT_CALL(mock_manager_client_,
ConfigureServiceForProfile(
- dbus::ObjectPath("/profile/chronos/shill"),
+ dbus::ObjectPath(kUser1ProfilePath),
IsEqualTo(expected_shill_properties.get()),
- _, _)).Times(1);
+ _, _));
- SetPolicy(onc::ONC_SOURCE_USER_POLICY, "policy/policy_wifi1.onc");
+ SetPolicy(onc::ONC_SOURCE_USER_POLICY, kUser1, "policy/policy_wifi1.onc");
message_loop_.RunUntilIdle();
}
TEST_F(ManagedNetworkConfigurationHandlerTest, SetPolicyIgnoreUnmodified) {
- EXPECT_CALL(mock_profile_client_,
- GetProperties(_, _, _)).Times(1);
+ InitializeStandardProfiles();
+ EXPECT_CALL(mock_profile_client_, GetProperties(_, _, _));
- EXPECT_CALL(mock_manager_client_,
- ConfigureServiceForProfile(_, _, _, _)).Times(1);
+ EXPECT_CALL(mock_manager_client_, ConfigureServiceForProfile(_, _, _, _));
- SetPolicy(onc::ONC_SOURCE_USER_POLICY, "policy/policy_wifi1.onc");
+ SetPolicy(onc::ONC_SOURCE_USER_POLICY, kUser1, "policy/policy_wifi1.onc");
message_loop_.RunUntilIdle();
- Mock::VerifyAndClearExpectations(&mock_profile_client_);
- Mock::VerifyAndClearExpectations(&mock_manager_client_);
+ VerifyAndClearExpectations();
SetUpEntry("policy/shill_policy_on_unmanaged_user_wifi1.json",
- "/profile/chronos/shill",
+ kUser1ProfilePath,
"some_entry_path");
- EXPECT_CALL(mock_profile_client_,
- GetProperties(_, _, _)).Times(1);
+ EXPECT_CALL(mock_profile_client_, GetProperties(_, _, _));
EXPECT_CALL(mock_profile_client_,
- GetEntry(dbus::ObjectPath("/profile/chronos/shill"),
+ GetEntry(dbus::ObjectPath(kUser1ProfilePath),
"some_entry_path",
- _, _)).Times(1);
+ _, _));
- SetPolicy(onc::ONC_SOURCE_USER_POLICY, "policy/policy_wifi1.onc");
+ SetPolicy(onc::ONC_SOURCE_USER_POLICY, kUser1, "policy/policy_wifi1.onc");
message_loop_.RunUntilIdle();
}
TEST_F(ManagedNetworkConfigurationHandlerTest, SetPolicyManageUnmanaged) {
+ InitializeStandardProfiles();
SetUpEntry("policy/shill_unmanaged_user_wifi1.json",
- "/profile/chronos/shill",
+ kUser1ProfilePath,
"old_entry_path");
scoped_ptr<base::DictionaryValue> expected_shill_properties =
@@ -190,27 +285,27 @@ TEST_F(ManagedNetworkConfigurationHandlerTest, SetPolicyManageUnmanaged) {
"policy/shill_policy_on_unmanaged_user_wifi1.json");
EXPECT_CALL(mock_profile_client_,
- GetProperties(dbus::ObjectPath("/profile/chronos/shill"),
- _, _)).Times(1);
+ GetProperties(dbus::ObjectPath(kUser1ProfilePath), _, _));
EXPECT_CALL(mock_profile_client_,
- GetEntry(dbus::ObjectPath("/profile/chronos/shill"),
+ GetEntry(dbus::ObjectPath(kUser1ProfilePath),
"old_entry_path",
- _, _)).Times(1);
+ _, _));
EXPECT_CALL(mock_manager_client_,
ConfigureServiceForProfile(
- dbus::ObjectPath("/profile/chronos/shill"),
+ dbus::ObjectPath(kUser1ProfilePath),
IsEqualTo(expected_shill_properties.get()),
- _, _)).Times(1);
+ _, _));
- SetPolicy(onc::ONC_SOURCE_USER_POLICY, "policy/policy_wifi1.onc");
+ SetPolicy(onc::ONC_SOURCE_USER_POLICY, kUser1, "policy/policy_wifi1.onc");
message_loop_.RunUntilIdle();
}
TEST_F(ManagedNetworkConfigurationHandlerTest, SetPolicyUpdateManagedNewGUID) {
+ InitializeStandardProfiles();
SetUpEntry("policy/shill_managed_wifi1.json",
- "/profile/chronos/shill",
+ kUser1ProfilePath,
"old_entry_path");
scoped_ptr<base::DictionaryValue> expected_shill_properties =
@@ -223,27 +318,27 @@ TEST_F(ManagedNetworkConfigurationHandlerTest, SetPolicyUpdateManagedNewGUID) {
flimflam::kPassphraseProperty, NULL);
EXPECT_CALL(mock_profile_client_,
- GetProperties(dbus::ObjectPath("/profile/chronos/shill"),
- _, _)).Times(1);
+ GetProperties(dbus::ObjectPath(kUser1ProfilePath), _, _));
EXPECT_CALL(mock_profile_client_,
- GetEntry(dbus::ObjectPath("/profile/chronos/shill"),
+ GetEntry(dbus::ObjectPath(kUser1ProfilePath),
"old_entry_path",
- _, _)).Times(1);
+ _, _));
EXPECT_CALL(mock_manager_client_,
ConfigureServiceForProfile(
- dbus::ObjectPath("/profile/chronos/shill"),
+ dbus::ObjectPath(kUser1ProfilePath),
IsEqualTo(expected_shill_properties.get()),
- _, _)).Times(1);
+ _, _));
- SetPolicy(onc::ONC_SOURCE_USER_POLICY, "policy/policy_wifi1.onc");
+ SetPolicy(onc::ONC_SOURCE_USER_POLICY, kUser1, "policy/policy_wifi1.onc");
message_loop_.RunUntilIdle();
}
TEST_F(ManagedNetworkConfigurationHandlerTest, SetPolicyReapplyToManaged) {
+ InitializeStandardProfiles();
SetUpEntry("policy/shill_policy_on_unmanaged_user_wifi1.json",
- "/profile/chronos/shill",
+ kUser1ProfilePath,
"old_entry_path");
scoped_ptr<base::DictionaryValue> expected_shill_properties =
@@ -256,62 +351,84 @@ TEST_F(ManagedNetworkConfigurationHandlerTest, SetPolicyReapplyToManaged) {
flimflam::kPassphraseProperty, NULL);
EXPECT_CALL(mock_profile_client_,
- GetProperties(dbus::ObjectPath("/profile/chronos/shill"),
- _, _)).Times(1);
+ GetProperties(dbus::ObjectPath(kUser1ProfilePath), _, _));
EXPECT_CALL(mock_profile_client_,
- GetEntry(dbus::ObjectPath("/profile/chronos/shill"),
+ GetEntry(dbus::ObjectPath(kUser1ProfilePath),
"old_entry_path",
- _, _)).Times(1);
+ _, _));
EXPECT_CALL(mock_manager_client_,
ConfigureServiceForProfile(
- dbus::ObjectPath("/profile/chronos/shill"),
+ dbus::ObjectPath(kUser1ProfilePath),
IsEqualTo(expected_shill_properties.get()),
- _, _)).Times(1);
+ _, _));
- SetPolicy(onc::ONC_SOURCE_USER_POLICY, "policy/policy_wifi1.onc");
+ SetPolicy(onc::ONC_SOURCE_USER_POLICY, kUser1, "policy/policy_wifi1.onc");
message_loop_.RunUntilIdle();
}
TEST_F(ManagedNetworkConfigurationHandlerTest, SetPolicyUnmanageManaged) {
+ InitializeStandardProfiles();
SetUpEntry("policy/shill_policy_on_unmanaged_user_wifi1.json",
- "/profile/chronos/shill",
+ kUser1ProfilePath,
"old_entry_path");
EXPECT_CALL(mock_profile_client_,
- GetProperties(dbus::ObjectPath("/profile/chronos/shill"),
- _, _)).Times(1);
+ GetProperties(dbus::ObjectPath(kUser1ProfilePath), _, _));
EXPECT_CALL(mock_profile_client_,
- GetEntry(dbus::ObjectPath("/profile/chronos/shill"),
+ GetEntry(dbus::ObjectPath(kUser1ProfilePath),
"old_entry_path",
- _, _)).Times(1);
+ _, _));
EXPECT_CALL(mock_profile_client_,
- DeleteEntry(dbus::ObjectPath("/profile/chronos/shill"),
+ DeleteEntry(dbus::ObjectPath(kUser1ProfilePath),
"old_entry_path",
- _, _)).Times(1);
+ _, _));
- SetPolicy(onc::ONC_SOURCE_USER_POLICY, "");
+ SetPolicy(onc::ONC_SOURCE_USER_POLICY, kUser1, "");
message_loop_.RunUntilIdle();
}
TEST_F(ManagedNetworkConfigurationHandlerTest, SetPolicyIgnoreUnmanaged) {
+ InitializeStandardProfiles();
SetUpEntry("policy/shill_unmanaged_user_wifi1.json",
- "/profile/chronos/shill",
+ kUser1ProfilePath,
"old_entry_path");
EXPECT_CALL(mock_profile_client_,
- GetProperties(dbus::ObjectPath("/profile/chronos/shill"),
- _, _)).Times(1);
+ GetProperties(dbus::ObjectPath(kUser1ProfilePath), _, _));
EXPECT_CALL(mock_profile_client_,
- GetEntry(dbus::ObjectPath("/profile/chronos/shill"),
+ GetEntry(dbus::ObjectPath(kUser1ProfilePath),
"old_entry_path",
- _, _)).Times(1);
+ _, _));
+
+ SetPolicy(onc::ONC_SOURCE_USER_POLICY, kUser1, "");
+ message_loop_.RunUntilIdle();
+}
+
+TEST_F(ManagedNetworkConfigurationHandlerTest, LateProfileLoading) {
+ SetPolicy(onc::ONC_SOURCE_USER_POLICY, kUser1, "policy/policy_wifi1.onc");
+
+ message_loop_.RunUntilIdle();
+ VerifyAndClearExpectations();
+
+ scoped_ptr<base::DictionaryValue> expected_shill_properties =
+ test_utils::ReadTestDictionary(
+ "policy/shill_policy_on_unconfigured_wifi1.json");
+
+ EXPECT_CALL(mock_profile_client_,
+ GetProperties(dbus::ObjectPath(kUser1ProfilePath), _, _));
+
+ EXPECT_CALL(mock_manager_client_,
+ ConfigureServiceForProfile(
+ dbus::ObjectPath(kUser1ProfilePath),
+ IsEqualTo(expected_shill_properties.get()),
+ _, _));
- SetPolicy(onc::ONC_SOURCE_USER_POLICY, "");
+ InitializeStandardProfiles();
message_loop_.RunUntilIdle();
}
« no previous file with comments | « chromeos/network/managed_network_configuration_handler.cc ('k') | chromeos/network/network_profile.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698