Home | History | Annotate | Download | only in cloud
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "chrome/browser/policy/cloud/cloud_policy_core.h"
      6 
      7 #include "base/basictypes.h"
      8 #include "base/message_loop/message_loop.h"
      9 #include "base/prefs/testing_pref_service.h"
     10 #include "chrome/browser/policy/cloud/cloud_policy_constants.h"
     11 #include "chrome/browser/policy/cloud/cloud_policy_refresh_scheduler.h"
     12 #include "chrome/browser/policy/cloud/mock_cloud_policy_client.h"
     13 #include "chrome/browser/policy/cloud/mock_cloud_policy_store.h"
     14 #include "chrome/browser/prefs/browser_prefs.h"
     15 #include "chrome/common/pref_names.h"
     16 #include "testing/gtest/include/gtest/gtest.h"
     17 
     18 namespace policy {
     19 
     20 class CloudPolicyCoreTest : public testing::Test {
     21  protected:
     22   CloudPolicyCoreTest()
     23       : core_(PolicyNamespaceKey(dm_protocol::kChromeUserPolicyType,
     24                                  std::string()),
     25               &store_) {
     26     chrome::RegisterLocalState(prefs_.registry());
     27   }
     28 
     29   base::MessageLoop loop_;
     30 
     31   TestingPrefServiceSimple prefs_;
     32   MockCloudPolicyStore store_;
     33   CloudPolicyCore core_;
     34 
     35  private:
     36   DISALLOW_COPY_AND_ASSIGN(CloudPolicyCoreTest);
     37 };
     38 
     39 TEST_F(CloudPolicyCoreTest, ConnectAndDisconnect) {
     40   EXPECT_TRUE(core_.store());
     41   EXPECT_FALSE(core_.client());
     42   EXPECT_FALSE(core_.service());
     43   EXPECT_FALSE(core_.refresh_scheduler());
     44 
     45   // Connect() brings up client and service.
     46   core_.Connect(scoped_ptr<CloudPolicyClient>(new MockCloudPolicyClient()));
     47   EXPECT_TRUE(core_.client());
     48   EXPECT_TRUE(core_.service());
     49   EXPECT_FALSE(core_.refresh_scheduler());
     50 
     51   // Disconnect() goes back to no client and service.
     52   core_.Disconnect();
     53   EXPECT_FALSE(core_.client());
     54   EXPECT_FALSE(core_.service());
     55   EXPECT_FALSE(core_.refresh_scheduler());
     56 
     57   // Calling Disconnect() twice doesn't do bad things.
     58   core_.Disconnect();
     59   EXPECT_FALSE(core_.client());
     60   EXPECT_FALSE(core_.service());
     61   EXPECT_FALSE(core_.refresh_scheduler());
     62 }
     63 
     64 TEST_F(CloudPolicyCoreTest, RefreshScheduler) {
     65   EXPECT_FALSE(core_.refresh_scheduler());
     66   core_.Connect(scoped_ptr<CloudPolicyClient>(new MockCloudPolicyClient()));
     67   core_.StartRefreshScheduler();
     68   ASSERT_TRUE(core_.refresh_scheduler());
     69 
     70   int default_refresh_delay = core_.refresh_scheduler()->refresh_delay();
     71 
     72   const int kRefreshRate = 1000 * 60 * 60;
     73   prefs_.SetInteger(prefs::kUserPolicyRefreshRate, kRefreshRate);
     74   core_.TrackRefreshDelayPref(&prefs_, prefs::kUserPolicyRefreshRate);
     75   EXPECT_EQ(kRefreshRate, core_.refresh_scheduler()->refresh_delay());
     76 
     77   prefs_.ClearPref(prefs::kUserPolicyRefreshRate);
     78   EXPECT_EQ(default_refresh_delay, core_.refresh_scheduler()->refresh_delay());
     79 }
     80 
     81 }  // namespace policy
     82