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

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

Issue 11946017: Remove old cloud policy code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address nits. Created 7 years, 11 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 | « chrome/browser/policy/cloud_policy_subsystem.cc ('k') | chrome/browser/policy/cros_user_policy_cache.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/policy/cloud_policy_subsystem_unittest.cc
diff --git a/chrome/browser/policy/cloud_policy_subsystem_unittest.cc b/chrome/browser/policy/cloud_policy_subsystem_unittest.cc
deleted file mode 100644
index 261bf1da512dc4a110dd2c9e9fab5acdd070637d..0000000000000000000000000000000000000000
--- a/chrome/browser/policy/cloud_policy_subsystem_unittest.cc
+++ /dev/null
@@ -1,469 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include <vector>
-
-#include "base/files/scoped_temp_dir.h"
-#include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/message_loop.h"
-#include "base/values.h"
-#include "chrome/browser/browser_process.h"
-#include "chrome/browser/policy/cloud_policy_data_store.h"
-#include "chrome/browser/policy/logging_work_scheduler.h"
-#include "chrome/browser/policy/proto/cloud_policy.pb.h"
-#include "chrome/browser/policy/proto/device_management_backend.pb.h"
-#include "chrome/browser/policy/testing_cloud_policy_subsystem.h"
-#include "chrome/browser/policy/testing_policy_url_fetcher_factory.h"
-#include "chrome/browser/policy/user_policy_cache.h"
-#include "chrome/common/pref_names.h"
-#include "chrome/test/base/testing_browser_process.h"
-#include "chrome/test/base/testing_pref_service.h"
-#include "content/public/test/test_browser_thread.h"
-#include "policy/policy_constants.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace policy {
-
-using ::testing::AtMost;
-using ::testing::InSequence;
-using ::testing::_;
-using content::BrowserThread;
-
-namespace em = enterprise_management;
-
-namespace {
-
-const char kGaiaAuthHeader[] = "GoogleLogin auth=secret123";
-const char kDMAuthHeader[] = "GoogleDMToken token=token123456";
-const char kDMToken[] = "token123456";
-
-const char kDeviceManagementUrl[] =
- "http://localhost:12345/device_management_test";
-
-// Fake data to be included in requests.
-const char kUsername[] = "john@smith.com";
-const char kAuthToken[] = "secret123";
-const char kPolicyType[] = "google/chrome/test";
-const char kMachineId[] = "test-machine-id";
-
-} // namespace
-
-// An action that returns an URLRequestJob with an HTTP error code.
-ACTION_P(CreateFailedResponse, http_error_code) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- em::DeviceManagementResponse response_data;
-
- arg3->response_data = response_data.SerializeAsString();
- arg3->response_code = http_error_code;
-}
-
-// An action that returns an URLRequestJob with a successful device
-// registration response.
-ACTION_P(CreateSuccessfulRegisterResponse, token) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- em::DeviceManagementResponse response_data;
- response_data.mutable_register_response()->set_device_management_token(token);
- response_data.mutable_register_response()->set_enrollment_type(
- em::DeviceRegisterResponse::ENTERPRISE);
-
- arg3->response_data = response_data.SerializeAsString();
- arg3->response_code = 200;
-}
-
-// An action that returns an URLRequestJob with a successful policy response.
-ACTION_P3(CreateSuccessfulPolicyResponse,
- homepage_location,
- set_serial_valid,
- serial_valid) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- em::CloudPolicySettings settings;
- settings.mutable_homepagelocation()->set_value(homepage_location);
- em::PolicyData policy_data;
- policy_data.set_policy_type(kPolicyType);
- policy_data.set_policy_value(settings.SerializeAsString());
- if (set_serial_valid)
- policy_data.set_valid_serial_number_missing(serial_valid);
-
- em::DeviceManagementResponse response_data;
- em::DevicePolicyResponse* policy_response =
- response_data.mutable_policy_response();
- em::PolicyFetchResponse* fetch_response = policy_response->add_response();
- fetch_response->set_error_code(200);
- fetch_response->set_policy_data(policy_data.SerializeAsString());
-
- arg3->response_data = response_data.SerializeAsString();
- arg3->response_code = 200;
-}
-
-// Tests CloudPolicySubsystem by intercepting its network requests.
-// The requests are intercepted by PolicyRequestInterceptor and they are
-// logged by LoggingWorkScheduler for further examination.
-class CloudPolicySubsystemTestBase : public testing::Test {
- public:
- CloudPolicySubsystemTestBase()
- : ui_thread_(BrowserThread::UI, &loop_),
- file_thread_(BrowserThread::FILE, &loop_),
- io_thread_(BrowserThread::IO, &loop_) {}
-
- virtual ~CloudPolicySubsystemTestBase() {}
-
- protected:
- void StopMessageLoop() {
- loop_.QuitNow();
- }
-
- virtual void SetUp() {
- prefs_.reset(new TestingPrefServiceSimple);
- CloudPolicySubsystem::RegisterPrefs(prefs_.get());
- ((TestingBrowserProcess*) g_browser_process)->SetLocalState(prefs_.get());
-
- logger_.reset(new EventLogger);
- factory_.reset(new TestingPolicyURLFetcherFactory(logger_.get()));
- ASSERT_TRUE(temp_user_data_dir_.CreateUniqueTempDir());
- data_store_.reset(CloudPolicyDataStore::CreateForUserPolicies());
- cache_ = new UserPolicyCache(
- temp_user_data_dir_.path().AppendASCII("CloudPolicyControllerTest"),
- false /* wait_for_policy_fetch */);
- cloud_policy_subsystem_.reset(new TestingCloudPolicySubsystem(
- data_store_.get(), cache_,
- kDeviceManagementUrl, logger_.get()));
- cloud_policy_subsystem_->CompleteInitialization(
- prefs::kDevicePolicyRefreshRate, 0);
-
- // Abort the test on unexpected requests.
- ON_CALL(factory(), Intercept(_, _, _, _))
- .WillByDefault(InvokeWithoutArgs(
- this,
- &CloudPolicySubsystemTestBase::StopMessageLoop));
- }
-
- virtual void TearDown() {
- TestingBrowserProcess::GetGlobal()->SetLocalState(NULL);
- cloud_policy_subsystem_->Shutdown();
- cloud_policy_subsystem_.reset();
- data_store_.reset();
- factory_.reset();
- logger_.reset();
- prefs_.reset();
- }
-
- void ExecuteTest() {
- // Stop the test once all the expectations are met. This relies on a
- // sequence being active (see tests below).
- EXPECT_CALL(factory(), Intercept(_, _, _, _))
- .Times(AtMost(1))
- .WillRepeatedly(
- InvokeWithoutArgs(this,
- &CloudPolicySubsystemTestBase::StopMessageLoop));
-
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- data_store_->set_user_name(kUsername);
- data_store_->SetGaiaToken(kAuthToken);
- data_store_->SetDeviceToken("", true);
- loop_.RunUntilIdle();
- }
-
- void VerifyTest(const std::string& homepage_location) {
- // Test conditions.
- EXPECT_EQ(CloudPolicySubsystem::SUCCESS, cloud_policy_subsystem_->state());
- StringValue homepage_value(homepage_location);
- VerifyPolicy(key::kHomepageLocation, &homepage_value);
- VerifyServerLoad();
- }
-
- void VerifyState(CloudPolicySubsystem::PolicySubsystemState state) {
- EXPECT_EQ(state, cloud_policy_subsystem_->state());
- }
-
- void ExpectSuccessfulRegistration() {
- EXPECT_CALL(factory(), Intercept(kGaiaAuthHeader, "register", _, _))
- .WillOnce(CreateSuccessfulRegisterResponse(kDMToken));
- }
-
- void ExpectFailedRegistration(int n, int code) {
- EXPECT_CALL(factory(), Intercept(kGaiaAuthHeader, "register", _, _))
- .Times(n)
- .WillRepeatedly(CreateFailedResponse(code));
- }
-
- void ExpectFailedPolicy(int n, int code) {
- EXPECT_CALL(factory(), Intercept(kDMAuthHeader, "policy", _, _))
- .Times(n)
- .WillRepeatedly(CreateFailedResponse(code));
- }
-
- void ExpectSuccessfulPolicy(int n,
- const std::string& homepage) {
- EXPECT_CALL(factory(), Intercept(kDMAuthHeader, "policy", _, _))
- .Times(n)
- .WillRepeatedly(CreateSuccessfulPolicyResponse(homepage, false, false));
- }
-
- TestingPolicyURLFetcherFactory& factory() { return *factory_; }
- CloudPolicyDataStore* data_store() { return data_store_.get(); }
-
- private:
- // Verifies for a given policy that it is provided by the subsystem.
- void VerifyPolicy(const char* policy_name, Value* expected) {
- const PolicyMap* policy_map = cache_->policy();
- ASSERT_TRUE(Value::Equals(expected, policy_map->GetValue(policy_name)));
- }
-
- // Verifies that the last recorded run of the subsystem did not issue
- // too frequent requests:
- // - no more than 10 requests in the first 10 minutes
- // - no more then 12 requests per hour in the next 10 hours
- // TODO(gfeher): Thighten these conditions further. This will require
- // fine-tuning of the subsystem. See: http://crosbug.com/16637
- void VerifyServerLoad() {
- std::vector<int64> events;
- logger_->Swap(&events);
-
- ASSERT_FALSE(events.empty());
-
- int64 cur = 0;
- int count = 0;
-
- // Length and max number of requests for the first interval.
- int64 length = 10 * 60 * 1000; // 10 minutes
- int64 limit = 10; // maximum nr of requests in the first 10 minutes
-
- while (cur <= events.back()) {
- EXPECT_LE(EventLogger::CountEvents(events, cur, length), limit);
- count++;
-
- cur += length;
-
- // Length and max number of requests for the subsequent intervals.
- length = 60 * 60 * 1000; // 60 minutes
- limit = 12; // maxminum nr of requests in the next 60 minutes
- }
-
- EXPECT_GE(count, 11)
- << "No enough requests were fired during the test run.";
- }
-
- base::ScopedTempDir temp_user_data_dir_;
-
- MessageLoop loop_;
- content::TestBrowserThread ui_thread_;
- content::TestBrowserThread file_thread_;
- content::TestBrowserThread io_thread_;
-
- scoped_ptr<EventLogger> logger_;
- scoped_ptr<CloudPolicyDataStore> data_store_;
- scoped_ptr<CloudPolicySubsystem> cloud_policy_subsystem_;
- scoped_ptr<PrefServiceSimple> prefs_;
- CloudPolicyCacheBase* cache_;
-
- scoped_ptr<TestingPolicyURLFetcherFactory> factory_;
-
- DISALLOW_COPY_AND_ASSIGN(CloudPolicySubsystemTestBase);
-};
-
-// A parameterized test case that simulates 100 failed registration attempts,
-// then a successful one, then 100 failed policy fetch attempts and then 100
-// successful policy fetches. The two parameters are the error codes for the
-// failed registration and policy responses.
-
-class CombinedTestDesc {
- public:
- CombinedTestDesc(int registration_error_code, int policy_error_code)
- : registration_error_code_(registration_error_code),
- policy_error_code_(policy_error_code) {
- }
-
- ~CombinedTestDesc() {}
-
- int registration_error_code() const { return registration_error_code_; }
- int policy_error_code() const { return policy_error_code_; }
-
- private:
- int registration_error_code_;
- int policy_error_code_;
-};
-
-class CloudPolicySubsystemCombinedTest
- : public CloudPolicySubsystemTestBase,
- public testing::WithParamInterface<CombinedTestDesc> {
-};
-
-TEST_P(CloudPolicySubsystemCombinedTest, Combined) {
- InSequence s;
- ExpectFailedRegistration(100, GetParam().registration_error_code());
- ExpectSuccessfulRegistration();
- ExpectFailedPolicy(100, GetParam().policy_error_code());
- ExpectSuccessfulPolicy(100, "http://www.google.com");
- ExpectSuccessfulPolicy(1, "http://www.chromium.org");
- ExecuteTest();
- VerifyTest("http://www.chromium.org");
-}
-
-// A random sample of error code pairs. Note that the following policy error
-// codes (401, 403, 410) make the policy subsystem to try and reregister, and
-// that is not expected in these tests.
-INSTANTIATE_TEST_CASE_P(
- CloudPolicySubsystemCombinedTestInstance,
- CloudPolicySubsystemCombinedTest,
- testing::Values(
- CombinedTestDesc(403, 400),
- CombinedTestDesc(403, 404),
- CombinedTestDesc(403, 412),
- CombinedTestDesc(403, 500),
- CombinedTestDesc(403, 503),
- CombinedTestDesc(403, 902),
- CombinedTestDesc(902, 400),
- CombinedTestDesc(503, 404),
- CombinedTestDesc(500, 412),
- CombinedTestDesc(412, 500),
- CombinedTestDesc(404, 503),
- CombinedTestDesc(400, 902)));
-
-// A parameterized test case that simulates 100 failed registration attempts,
-// then a successful one, and then a succesful policy fetch. The parameter is
-// the error code returned for registration attempts.
-
-class CloudPolicySubsystemRegistrationTest
- : public CloudPolicySubsystemTestBase,
- public testing::WithParamInterface<int> {
-};
-
-TEST_P(CloudPolicySubsystemRegistrationTest, Registration) {
- InSequence s;
- ExpectFailedRegistration(100, GetParam());
- ExpectSuccessfulRegistration();
- ExpectSuccessfulPolicy(1, "http://www.youtube.com");
- ExecuteTest();
- VerifyTest("http://www.youtube.com");
-}
-
-INSTANTIATE_TEST_CASE_P(
- CloudPolicySubsystemRegistrationTestInstance,
- CloudPolicySubsystemRegistrationTest,
- // For the case of 401 see CloudPolicySubsystemRegistrationFailureTest
- testing::Values(400, 403, 404, 410, 412, 500, 503, 902));
-
-// A test case that verifies that the subsystem understands the "not managed"
-// response from the server.
-
-class CloudPolicySubsystemRegistrationFailureTest
- : public CloudPolicySubsystemTestBase {
-};
-
-TEST_F(CloudPolicySubsystemRegistrationFailureTest, RegistrationFailure) {
- InSequence s;
- ExpectFailedRegistration(1, 401);
- ExecuteTest();
- VerifyState(CloudPolicySubsystem::BAD_GAIA_TOKEN);
-}
-
-// A parameterized test case that simulates a successful registration, then 100
-// failed policy fetch attempts and then a successful one. The parameter is
-// the error code returned for failed policy attempts.
-
-class CloudPolicySubsystemPolicyTest
- : public CloudPolicySubsystemTestBase,
- public testing::WithParamInterface<int> {
-};
-
-TEST_P(CloudPolicySubsystemPolicyTest, Policy) {
- InSequence s;
- ExpectSuccessfulRegistration();
- ExpectFailedPolicy(100, GetParam());
- ExpectSuccessfulPolicy(1, "http://www.youtube.com");
- ExecuteTest();
- VerifyTest("http://www.youtube.com");
-}
-
-INSTANTIATE_TEST_CASE_P(
- CloudPolicySubsystemPolicyTestInstance,
- CloudPolicySubsystemPolicyTest,
- testing::Values(400, 404, 412, 500, 503, 902));
-
-// A parameterized test case that simulates a successful registration, then 40
-// failed policy fetch attempts and a successful registration after each of
-// them. The parameter is the error code returned for registration attempts.
-
-class CloudPolicySubsystemPolicyReregisterTest
- : public CloudPolicySubsystemTestBase,
- public testing::WithParamInterface<int> {
-};
-
-TEST_P(CloudPolicySubsystemPolicyReregisterTest, Policy) {
- // This logs a lot of WARNINGs. Temporarily increase the logging threshold.
- int prev_level = logging::GetMinLogLevel();
- logging::SetMinLogLevel(logging::LOG_ERROR);
-
- InSequence s;
- for (int i = 0; i < 40; i++) {
- ExpectSuccessfulRegistration();
- ExpectFailedPolicy(1, GetParam());
- }
- ExpectSuccessfulRegistration();
- ExpectSuccessfulPolicy(1, "http://www.youtube.com");
- ExecuteTest();
- VerifyTest("http://www.youtube.com");
-
- logging::SetMinLogLevel(prev_level);
-}
-
-INSTANTIATE_TEST_CASE_P(
- CloudPolicySubsystemPolicyReregisterTestInstance,
- CloudPolicySubsystemPolicyReregisterTest,
- testing::Values(401, 403, 410));
-
-MATCHER_P(PolicyWithSerial, expected_serial, "") {
- return arg.policy_request().request(0).machine_id() == expected_serial;
-}
-
-class CloudPolicySubsystemSerialNumberRecoveryTest
- : public CloudPolicySubsystemTestBase {
- protected:
- virtual ~CloudPolicySubsystemSerialNumberRecoveryTest() {}
-
- virtual void SetUp() {
- CloudPolicySubsystemTestBase::SetUp();
- data_store()->set_machine_id(kMachineId);
- }
-
- void ExpectPolicyRequest(const std::string& serial,
- bool set_serial_valid,
- bool serial_valid) {
- EXPECT_CALL(factory(), Intercept(kDMAuthHeader, "policy",
- PolicyWithSerial(serial), _))
- .WillOnce(CreateSuccessfulPolicyResponse("", set_serial_valid,
- serial_valid));
- }
-};
-
-// Tests that no serial is sent if the flag is not set.
-TEST_F(CloudPolicySubsystemSerialNumberRecoveryTest, FlagNotSet) {
- InSequence s;
- ExpectSuccessfulRegistration();
- ExpectPolicyRequest("", false, false);
- ExpectPolicyRequest("", false, false);
- ExecuteTest();
-}
-
-// Tests that no serial is sent if the flag is set to false.
-TEST_F(CloudPolicySubsystemSerialNumberRecoveryTest, FlagFalse) {
- InSequence s;
- ExpectSuccessfulRegistration();
- ExpectPolicyRequest("", true, false);
- ExpectPolicyRequest("", false, false);
- ExecuteTest();
-}
-
-// Tests that the serial is sent once if the server requests it.
-TEST_F(CloudPolicySubsystemSerialNumberRecoveryTest, SerialRequested) {
- InSequence s;
- ExpectSuccessfulRegistration();
- ExpectPolicyRequest("", true, true);
- ExpectPolicyRequest(kMachineId, false, false);
- ExpectPolicyRequest("", false, false);
- ExecuteTest();
-}
-
-} // policy
« no previous file with comments | « chrome/browser/policy/cloud_policy_subsystem.cc ('k') | chrome/browser/policy/cros_user_policy_cache.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698