Index: chrome/browser/policy/cloud/cloud_policy_core_unittest.cc |
diff --git a/chrome/browser/policy/cloud/cloud_policy_core_unittest.cc b/chrome/browser/policy/cloud/cloud_policy_core_unittest.cc |
index 07de17c0b3fe4e036b97e3484a4d21d29fc5b831..47492f53af8dc9401ee0a5e5728481f93c22b527 100644 |
--- a/chrome/browser/policy/cloud/cloud_policy_core_unittest.cc |
+++ b/chrome/browser/policy/cloud/cloud_policy_core_unittest.cc |
@@ -17,13 +17,47 @@ |
namespace policy { |
-class CloudPolicyCoreTest : public testing::Test { |
+class CloudPolicyCoreTest : public testing::Test, |
+ public CloudPolicyCore::Observer { |
protected: |
CloudPolicyCoreTest() |
: core_(PolicyNamespaceKey(dm_protocol::kChromeUserPolicyType, |
std::string()), |
- &store_) { |
+ &store_), |
+ core_connected_callback_count_(0), |
+ refresh_scheduler_started_callback_count_(0), |
+ core_disconnecting_callback_count_(0), |
+ bad_callback_count_(0) { |
chrome::RegisterLocalState(prefs_.registry()); |
+ core_.AddObserver(this); |
+ } |
+ |
+ virtual ~CloudPolicyCoreTest() { |
+ core_.RemoveObserver(this); |
+ } |
+ |
+ virtual void OnCoreConnected(CloudPolicyCore* core) OVERRIDE { |
+ // Make sure core is connected at callback time. |
+ if (core_.client()) |
+ core_connected_callback_count_++; |
+ else |
+ bad_callback_count_++; |
+ } |
+ |
+ virtual void OnRefreshSchedulerStarted(CloudPolicyCore* core) OVERRIDE { |
+ // Make sure refresh scheduler is started at callback time. |
+ if (core_.refresh_scheduler()) |
+ refresh_scheduler_started_callback_count_++; |
+ else |
+ bad_callback_count_++; |
+ } |
+ |
+ virtual void OnCoreDisconnecting(CloudPolicyCore* core) OVERRIDE { |
+ // Make sure core is still connected at callback time. |
+ if (core_.client()) |
+ core_disconnecting_callback_count_++; |
+ else |
+ bad_callback_count_++; |
} |
base::MessageLoop loop_; |
@@ -32,6 +66,11 @@ class CloudPolicyCoreTest : public testing::Test { |
MockCloudPolicyStore store_; |
CloudPolicyCore core_; |
+ int core_connected_callback_count_; |
+ int refresh_scheduler_started_callback_count_; |
+ int core_disconnecting_callback_count_; |
+ int bad_callback_count_; |
+ |
private: |
DISALLOW_COPY_AND_ASSIGN(CloudPolicyCoreTest); |
}; |
@@ -47,18 +86,28 @@ TEST_F(CloudPolicyCoreTest, ConnectAndDisconnect) { |
EXPECT_TRUE(core_.client()); |
EXPECT_TRUE(core_.service()); |
EXPECT_FALSE(core_.refresh_scheduler()); |
+ EXPECT_EQ(1, core_connected_callback_count_); |
+ EXPECT_EQ(0, refresh_scheduler_started_callback_count_); |
+ EXPECT_EQ(0, core_disconnecting_callback_count_); |
// Disconnect() goes back to no client and service. |
core_.Disconnect(); |
EXPECT_FALSE(core_.client()); |
EXPECT_FALSE(core_.service()); |
EXPECT_FALSE(core_.refresh_scheduler()); |
+ EXPECT_EQ(1, core_connected_callback_count_); |
+ EXPECT_EQ(0, refresh_scheduler_started_callback_count_); |
+ EXPECT_EQ(1, core_disconnecting_callback_count_); |
// Calling Disconnect() twice doesn't do bad things. |
core_.Disconnect(); |
EXPECT_FALSE(core_.client()); |
EXPECT_FALSE(core_.service()); |
EXPECT_FALSE(core_.refresh_scheduler()); |
+ EXPECT_EQ(1, core_connected_callback_count_); |
+ EXPECT_EQ(0, refresh_scheduler_started_callback_count_); |
+ EXPECT_EQ(1, core_disconnecting_callback_count_); |
+ EXPECT_EQ(0, bad_callback_count_); |
} |
TEST_F(CloudPolicyCoreTest, RefreshScheduler) { |
@@ -76,6 +125,11 @@ TEST_F(CloudPolicyCoreTest, RefreshScheduler) { |
prefs_.ClearPref(prefs::kUserPolicyRefreshRate); |
EXPECT_EQ(default_refresh_delay, core_.refresh_scheduler()->refresh_delay()); |
+ |
+ EXPECT_EQ(1, core_connected_callback_count_); |
+ EXPECT_EQ(1, refresh_scheduler_started_callback_count_); |
+ EXPECT_EQ(0, core_disconnecting_callback_count_); |
+ EXPECT_EQ(0, bad_callback_count_); |
} |
} // namespace policy |