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

Unified Diff: chrome/browser/policy/cloud_policy_cache_unittest.cc

Issue 6520008: Device policy infrastructure (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix nits Created 9 years, 10 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
Index: chrome/browser/policy/cloud_policy_cache_unittest.cc
diff --git a/chrome/browser/policy/cloud_policy_cache_unittest.cc b/chrome/browser/policy/cloud_policy_cache_unittest.cc
index d9fc768408bbccb81e77e84ee81e8dfd0c5fb943..158ab362cf0443fe8c29c81a75ce3d848ee02a73 100644
--- a/chrome/browser/policy/cloud_policy_cache_unittest.cc
+++ b/chrome/browser/policy/cloud_policy_cache_unittest.cc
@@ -12,11 +12,13 @@
#include "base/scoped_temp_dir.h"
#include "base/values.h"
#include "chrome/browser/browser_thread.h"
+#include "chrome/browser/policy/configuration_policy_provider.h"
#include "chrome/browser/policy/proto/cloud_policy.pb.h"
#include "chrome/browser/policy/proto/device_management_backend.pb.h"
// TODO(jkummerow): remove this import when removing old DMPC test cases.
#include "chrome/browser/policy/proto/device_management_constants.h"
#include "chrome/browser/policy/proto/device_management_local.pb.h"
+#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace policy {
@@ -31,6 +33,15 @@ void DecodePolicy(const em::CloudPolicySettings& policy,
Value* DecodeIntegerValue(google::protobuf::int64 value);
ListValue* DecodeStringList(const em::StringList& string_list);
+class MockConfigurationPolicyProviderObserver
+ : public ConfigurationPolicyProvider::Observer {
+ public:
+ MockConfigurationPolicyProviderObserver() {}
+ virtual ~MockConfigurationPolicyProviderObserver() {}
+ MOCK_METHOD0(OnUpdatePolicy, void());
+ void OnProviderGoingAway() {}
+};
+
// Tests the device management policy cache.
class CloudPolicyCacheTest : public testing::Test {
protected:
@@ -85,11 +96,35 @@ class CloudPolicyCacheTest : public testing::Test {
EXPECT_EQ(size, file_util::WriteFile(test_file(), data.c_str(), size));
}
+ // Takes ownership of |policy_response|.
+ void SetPolicy(CloudPolicyCache* cache,
+ em::CloudPolicyResponse* policy_response,
+ bool expect_changed_policy) {
+ scoped_ptr<em::CloudPolicyResponse> policy(policy_response);
+ ConfigurationPolicyObserverRegistrar registrar;
+ registrar.Init(cache->GetManagedPolicyProvider(), &observer);
+ if (expect_changed_policy)
+ EXPECT_CALL(observer, OnUpdatePolicy()).Times(1);
+ else
+ EXPECT_CALL(observer, OnUpdatePolicy()).Times(0);
+ cache->SetPolicy(*policy);
+ testing::Mock::VerifyAndClearExpectations(&observer);
+ }
+
FilePath test_file() {
return temp_dir_.path().AppendASCII("CloudPolicyCacheTest");
}
+ const PolicyMap& mandatory_policy(const CloudPolicyCache& cache) {
+ return cache.mandatory_policy_;
+ }
+
+ const PolicyMap& recommended_policy(const CloudPolicyCache& cache) {
+ return cache.recommended_policy_;
+ }
+
MessageLoop loop_;
+ MockConfigurationPolicyProviderObserver observer;
private:
ScopedTempDir temp_dir_;
@@ -157,16 +192,16 @@ TEST_F(CloudPolicyCacheTest, DecodeStringList) {
TEST_F(CloudPolicyCacheTest, Empty) {
CloudPolicyCache cache(test_file());
PolicyMap empty;
- EXPECT_TRUE(empty.Equals(*cache.GetMandatoryPolicy()));
- EXPECT_TRUE(empty.Equals(*cache.GetRecommendedPolicy()));
+ EXPECT_TRUE(empty.Equals(mandatory_policy(cache)));
+ EXPECT_TRUE(empty.Equals(recommended_policy(cache)));
EXPECT_EQ(base::Time(), cache.last_policy_refresh_time());
}
TEST_F(CloudPolicyCacheTest, LoadNoFile) {
CloudPolicyCache cache(test_file());
- cache.LoadPolicyFromFile();
+ cache.LoadFromFile();
PolicyMap empty;
- EXPECT_TRUE(empty.Equals(*cache.GetMandatoryPolicy()));
+ EXPECT_TRUE(empty.Equals(mandatory_policy(cache)));
EXPECT_EQ(base::Time(), cache.last_policy_refresh_time());
}
@@ -177,9 +212,9 @@ TEST_F(CloudPolicyCacheTest, RejectFuture) {
em::PolicyOptions::MANDATORY));
WritePolicy(*policy_response);
CloudPolicyCache cache(test_file());
- cache.LoadPolicyFromFile();
+ cache.LoadFromFile();
PolicyMap empty;
- EXPECT_TRUE(empty.Equals(*cache.GetMandatoryPolicy()));
+ EXPECT_TRUE(empty.Equals(mandatory_policy(cache)));
EXPECT_EQ(base::Time(), cache.last_policy_refresh_time());
}
@@ -189,9 +224,9 @@ TEST_F(CloudPolicyCacheTest, LoadWithFile) {
em::PolicyOptions::MANDATORY));
WritePolicy(*policy_response);
CloudPolicyCache cache(test_file());
- cache.LoadPolicyFromFile();
+ cache.LoadFromFile();
PolicyMap empty;
- EXPECT_TRUE(empty.Equals(*cache.GetMandatoryPolicy()));
+ EXPECT_TRUE(empty.Equals(mandatory_policy(cache)));
EXPECT_NE(base::Time(), cache.last_policy_refresh_time());
EXPECT_GE(base::Time::Now(), cache.last_policy_refresh_time());
}
@@ -203,58 +238,58 @@ TEST_F(CloudPolicyCacheTest, LoadWithData) {
em::PolicyOptions::MANDATORY));
WritePolicy(*policy);
CloudPolicyCache cache(test_file());
- cache.LoadPolicyFromFile();
+ cache.LoadFromFile();
PolicyMap expected;
expected.Set(kPolicyHomepageLocation,
Value::CreateStringValue("http://www.example.com"));
- EXPECT_TRUE(expected.Equals(*cache.GetMandatoryPolicy()));
+ EXPECT_TRUE(expected.Equals(mandatory_policy(cache)));
}
TEST_F(CloudPolicyCacheTest, SetPolicy) {
CloudPolicyCache cache(test_file());
- scoped_ptr<em::CloudPolicyResponse> policy(
+ em::CloudPolicyResponse* policy =
CreateHomepagePolicy("http://www.example.com",
base::Time::NowFromSystemTime(),
- em::PolicyOptions::MANDATORY));
- EXPECT_TRUE(cache.SetPolicy(*policy));
- scoped_ptr<em::CloudPolicyResponse> policy2(
+ em::PolicyOptions::MANDATORY);
+ SetPolicy(&cache, policy, true);
+ em::CloudPolicyResponse* policy2 =
CreateHomepagePolicy("http://www.example.com",
base::Time::NowFromSystemTime(),
- em::PolicyOptions::MANDATORY));
- EXPECT_FALSE(cache.SetPolicy(*policy2));
+ em::PolicyOptions::MANDATORY);
+ SetPolicy(&cache, policy2, false);
PolicyMap expected;
expected.Set(kPolicyHomepageLocation,
Value::CreateStringValue("http://www.example.com"));
PolicyMap empty;
- EXPECT_TRUE(expected.Equals(*cache.GetMandatoryPolicy()));
- EXPECT_TRUE(empty.Equals(*cache.GetRecommendedPolicy()));
- policy.reset(CreateHomepagePolicy("http://www.example.com",
+ EXPECT_TRUE(expected.Equals(mandatory_policy(cache)));
+ EXPECT_TRUE(empty.Equals(recommended_policy(cache)));
+ policy = CreateHomepagePolicy("http://www.example.com",
base::Time::NowFromSystemTime(),
- em::PolicyOptions::RECOMMENDED));
- EXPECT_TRUE(cache.SetPolicy(*policy));
- EXPECT_TRUE(expected.Equals(*cache.GetRecommendedPolicy()));
- EXPECT_TRUE(empty.Equals(*cache.GetMandatoryPolicy()));
+ em::PolicyOptions::RECOMMENDED);
+ SetPolicy(&cache, policy, true);
+ EXPECT_TRUE(expected.Equals(recommended_policy(cache)));
+ EXPECT_TRUE(empty.Equals(mandatory_policy(cache)));
}
TEST_F(CloudPolicyCacheTest, ResetPolicy) {
CloudPolicyCache cache(test_file());
- scoped_ptr<em::CloudPolicyResponse> policy(
+ em::CloudPolicyResponse* policy =
CreateHomepagePolicy("http://www.example.com",
base::Time::NowFromSystemTime(),
- em::PolicyOptions::MANDATORY));
- EXPECT_TRUE(cache.SetPolicy(*policy));
+ em::PolicyOptions::MANDATORY);
+ SetPolicy(&cache, policy, true);
PolicyMap expected;
expected.Set(kPolicyHomepageLocation,
Value::CreateStringValue("http://www.example.com"));
- EXPECT_TRUE(expected.Equals(*cache.GetMandatoryPolicy()));
+ EXPECT_TRUE(expected.Equals(mandatory_policy(cache)));
- scoped_ptr<em::CloudPolicyResponse> empty_policy(
+ em::CloudPolicyResponse* empty_policy =
CreateHomepagePolicy("", base::Time::NowFromSystemTime(),
- em::PolicyOptions::MANDATORY));
- EXPECT_TRUE(cache.SetPolicy(*empty_policy));
+ em::PolicyOptions::MANDATORY);
+ SetPolicy(&cache, empty_policy, true);
PolicyMap empty;
- EXPECT_TRUE(empty.Equals(*cache.GetMandatoryPolicy()));
+ EXPECT_TRUE(empty.Equals(mandatory_policy(cache)));
}
TEST_F(CloudPolicyCacheTest, PersistPolicy) {
@@ -271,11 +306,11 @@ TEST_F(CloudPolicyCacheTest, PersistPolicy) {
EXPECT_TRUE(file_util::PathExists(test_file()));
CloudPolicyCache cache(test_file());
- cache.LoadPolicyFromFile();
+ cache.LoadFromFile();
PolicyMap expected;
expected.Set(kPolicyHomepageLocation,
Value::CreateStringValue("http://www.example.com"));
- EXPECT_TRUE(expected.Equals(*cache.GetMandatoryPolicy()));
+ EXPECT_TRUE(expected.Equals(mandatory_policy(cache)));
}
TEST_F(CloudPolicyCacheTest, FreshPolicyOverride) {
@@ -286,17 +321,17 @@ TEST_F(CloudPolicyCacheTest, FreshPolicyOverride) {
WritePolicy(*policy);
CloudPolicyCache cache(test_file());
- scoped_ptr<em::CloudPolicyResponse> updated_policy(
+ em::CloudPolicyResponse* updated_policy =
CreateHomepagePolicy("http://www.chromium.org",
base::Time::NowFromSystemTime(),
- em::PolicyOptions::MANDATORY));
- EXPECT_TRUE(cache.SetPolicy(*updated_policy));
+ em::PolicyOptions::MANDATORY);
+ SetPolicy(&cache, updated_policy, true);
- cache.LoadPolicyFromFile();
+ cache.LoadFromFile();
PolicyMap expected;
expected.Set(kPolicyHomepageLocation,
Value::CreateStringValue("http://www.chromium.org"));
- EXPECT_TRUE(expected.Equals(*cache.GetMandatoryPolicy()));
+ EXPECT_TRUE(expected.Equals(mandatory_policy(cache)));
}
} // namespace policy
@@ -363,7 +398,10 @@ class DeviceManagementPolicyCacheTest
return temp_dir_.path().AppendASCII("DeviceManagementPolicyCacheTest");
}
- protected:
+ const DictionaryValue* device_policy(const CloudPolicyCache& cache) {
+ return cache.device_policy_.get();
+ }
+
MessageLoop loop_;
private:
@@ -375,17 +413,15 @@ class DeviceManagementPolicyCacheTest
TEST_F(DeviceManagementPolicyCacheTest, Empty) {
CloudPolicyCache cache(test_file());
DictionaryValue empty;
- scoped_ptr<Value> policy(cache.GetDevicePolicy());
- EXPECT_TRUE(empty.Equals(policy.get()));
+ EXPECT_TRUE(empty.Equals(device_policy(cache)));
EXPECT_EQ(base::Time(), cache.last_policy_refresh_time());
}
TEST_F(DeviceManagementPolicyCacheTest, LoadNoFile) {
CloudPolicyCache cache(test_file());
- cache.LoadPolicyFromFile();
+ cache.LoadFromFile();
DictionaryValue empty;
- scoped_ptr<Value> policy(cache.GetDevicePolicy());
- EXPECT_TRUE(empty.Equals(policy.get()));
+ EXPECT_TRUE(empty.Equals(device_policy(cache)));
EXPECT_EQ(base::Time(), cache.last_policy_refresh_time());
}
@@ -394,10 +430,9 @@ TEST_F(DeviceManagementPolicyCacheTest, RejectFuture) {
WritePolicy(policy_response, base::Time::NowFromSystemTime() +
base::TimeDelta::FromMinutes(5));
CloudPolicyCache cache(test_file());
- cache.LoadPolicyFromFile();
+ cache.LoadFromFile();
DictionaryValue empty;
- scoped_ptr<Value> policy(cache.GetDevicePolicy());
- EXPECT_TRUE(empty.Equals(policy.get()));
+ EXPECT_TRUE(empty.Equals(device_policy(cache)));
EXPECT_EQ(base::Time(), cache.last_policy_refresh_time());
}
@@ -405,10 +440,9 @@ TEST_F(DeviceManagementPolicyCacheTest, LoadWithFile) {
em::DevicePolicyResponse policy_response;
WritePolicy(policy_response, base::Time::NowFromSystemTime());
CloudPolicyCache cache(test_file());
- cache.LoadPolicyFromFile();
+ cache.LoadFromFile();
DictionaryValue empty;
- scoped_ptr<Value> policy(cache.GetDevicePolicy());
- EXPECT_TRUE(empty.Equals(policy.get()));
+ EXPECT_TRUE(empty.Equals(device_policy(cache)));
EXPECT_NE(base::Time(), cache.last_policy_refresh_time());
EXPECT_GE(base::Time::Now(), cache.last_policy_refresh_time());
}
@@ -418,27 +452,25 @@ TEST_F(DeviceManagementPolicyCacheTest, LoadWithData) {
AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com");
WritePolicy(policy, base::Time::NowFromSystemTime());
CloudPolicyCache cache(test_file());
- cache.LoadPolicyFromFile();
+ cache.LoadFromFile();
DictionaryValue expected;
expected.Set("HomepageLocation",
Value::CreateStringValue("http://www.example.com"));
- scoped_ptr<Value> policy_value(cache.GetDevicePolicy());
- EXPECT_TRUE(expected.Equals(policy_value.get()));
+ EXPECT_TRUE(expected.Equals(device_policy(cache)));
}
TEST_F(DeviceManagementPolicyCacheTest, SetDevicePolicy) {
CloudPolicyCache cache(test_file());
em::DevicePolicyResponse policy;
AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com");
- EXPECT_TRUE(cache.SetDevicePolicy(policy));
+ cache.SetDevicePolicy(policy);
em::DevicePolicyResponse policy2;
AddStringPolicy(&policy2, "HomepageLocation", "http://www.example.com");
- EXPECT_FALSE(cache.SetDevicePolicy(policy2));
+ cache.SetDevicePolicy(policy2); // Does not notify observers.
DictionaryValue expected;
expected.Set("HomepageLocation",
Value::CreateStringValue("http://www.example.com"));
- scoped_ptr<Value> policy_value(cache.GetDevicePolicy());
- EXPECT_TRUE(expected.Equals(policy_value.get()));
+ EXPECT_TRUE(expected.Equals(device_policy(cache)));
}
TEST_F(DeviceManagementPolicyCacheTest, ResetPolicy) {
@@ -446,17 +478,15 @@ TEST_F(DeviceManagementPolicyCacheTest, ResetPolicy) {
em::DevicePolicyResponse policy;
AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com");
- EXPECT_TRUE(cache.SetDevicePolicy(policy));
+ cache.SetDevicePolicy(policy);
DictionaryValue expected;
expected.Set("HomepageLocation",
Value::CreateStringValue("http://www.example.com"));
- scoped_ptr<Value> policy_value(cache.GetDevicePolicy());
- EXPECT_TRUE(expected.Equals(policy_value.get()));
+ EXPECT_TRUE(expected.Equals(device_policy(cache)));
- EXPECT_TRUE(cache.SetDevicePolicy(em::DevicePolicyResponse()));
- policy_value.reset(cache.GetDevicePolicy());
+ cache.SetDevicePolicy(em::DevicePolicyResponse());
DictionaryValue empty;
- EXPECT_TRUE(empty.Equals(policy_value.get()));
+ EXPECT_TRUE(empty.Equals(device_policy(cache)));
}
TEST_F(DeviceManagementPolicyCacheTest, PersistPolicy) {
@@ -471,12 +501,11 @@ TEST_F(DeviceManagementPolicyCacheTest, PersistPolicy) {
EXPECT_TRUE(file_util::PathExists(test_file()));
CloudPolicyCache cache(test_file());
- cache.LoadPolicyFromFile();
+ cache.LoadFromFile();
DictionaryValue expected;
expected.Set("HomepageLocation",
Value::CreateStringValue("http://www.example.com"));
- scoped_ptr<Value> policy_value(cache.GetDevicePolicy());
- EXPECT_TRUE(expected.Equals(policy_value.get()));
+ EXPECT_TRUE(expected.Equals(device_policy(cache)));
}
TEST_F(DeviceManagementPolicyCacheTest, FreshPolicyOverride) {
@@ -488,14 +517,13 @@ TEST_F(DeviceManagementPolicyCacheTest, FreshPolicyOverride) {
em::DevicePolicyResponse updated_policy;
AddStringPolicy(&updated_policy, "HomepageLocation",
"http://www.chromium.org");
- EXPECT_TRUE(cache.SetDevicePolicy(updated_policy));
+ cache.SetDevicePolicy(updated_policy);
- cache.LoadPolicyFromFile();
+ cache.LoadFromFile();
DictionaryValue expected;
expected.Set("HomepageLocation",
Value::CreateStringValue("http://www.chromium.org"));
- scoped_ptr<Value> policy_value(cache.GetDevicePolicy());
- EXPECT_TRUE(expected.Equals(policy_value.get()));
+ EXPECT_TRUE(expected.Equals(device_policy(cache)));
}
// Tests proper decoding of policy values.

Powered by Google App Engine
This is Rietveld 408576698