diff options
author | danno@chromium.org <danno@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-24 13:18:56 +0000 |
---|---|---|
committer | danno@chromium.org <danno@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-24 13:18:56 +0000 |
commit | 180e70131e43e4be95b3bb6448ab2cd8392ca633 (patch) | |
tree | 9bbd5be769387c62e1b5c5a2aee7cf227085533f /chrome/browser | |
parent | 4712e8528ddbdffe188aeeb84d57c4a1c7660eda (diff) | |
download | chromium_src-180e70131e43e4be95b3bb6448ab2cd8392ca633.zip chromium_src-180e70131e43e4be95b3bb6448ab2cd8392ca633.tar.gz chromium_src-180e70131e43e4be95b3bb6448ab2cd8392ca633.tar.bz2 |
Cleanup mock device management backend
Add actions for mock device management backend for request success and failure.
BUG=62482
TEST=DeviceManagementPolicyProviderTest*:DeviceTokenFetcherTest*
Review URL: http://codereview.chromium.org/5338004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@67255 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
4 files changed, 91 insertions, 241 deletions
diff --git a/chrome/browser/policy/device_management_policy_provider_unittest.cc b/chrome/browser/policy/device_management_policy_provider_unittest.cc index 705b228..1761e80 100644 --- a/chrome/browser/policy/device_management_policy_provider_unittest.cc +++ b/chrome/browser/policy/device_management_policy_provider_unittest.cc @@ -21,6 +21,7 @@ const char kTestToken[] = "device_policy_provider_test_auth_token"; namespace policy { using ::testing::_; +using ::testing::InSequence; using ::testing::Mock; class DeviceManagementPolicyProviderTest : public testing::Test { @@ -39,7 +40,6 @@ class DeviceManagementPolicyProviderTest : public testing::Test { void CreateNewBackend() { backend_ = new MockDeviceManagementBackend; - backend_->AddBooleanPolicy(key::kDisableSpdy, true); } void CreateNewProvider() { @@ -61,9 +61,11 @@ class DeviceManagementPolicyProviderTest : public testing::Test { void SimulateSuccessfulInitialPolicyFetch() { MockConfigurationPolicyStore store; - backend_->AllShouldSucceed(); - EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).Times(1); - EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).Times(1); + EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce( + MockDeviceManagementBackendSucceedRegister()); + EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).WillOnce( + MockDeviceManagementBackendSucceedBooleanPolicy( + key::kDisableSpdy, true)); SimulateSuccessfulLoginAndRunPending(); EXPECT_CALL(store, Apply(kPolicyDisableSpdy, _)).Times(1); provider_->Provide(&store); @@ -105,7 +107,6 @@ class DeviceManagementPolicyProviderTest : public testing::Test { // provide an empty policy. TEST_F(DeviceManagementPolicyProviderTest, InitialProvideNoLogin) { MockConfigurationPolicyStore store; - backend_->AllShouldSucceed(); EXPECT_CALL(store, Apply(_, _)).Times(0); provider_->Provide(&store); EXPECT_TRUE(store.policy_map().empty()); @@ -118,12 +119,13 @@ TEST_F(DeviceManagementPolicyProviderTest, InitialProvideWithLogin) { SimulateSuccessfulInitialPolicyFetch(); } -// If the login succeeds but the device management backend is unreachable, +// If the login succeed but the device management backend is unreachable, // there should be no policy provided if there's no previously-fetched policy, TEST_F(DeviceManagementPolicyProviderTest, EmptyProvideWithFailedBackend) { MockConfigurationPolicyStore store; - backend_->AllShouldFail(); - EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).Times(1); + EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce( + MockDeviceManagementBackendFailRegister( + DeviceManagementBackend::kErrorRequestFailed)); EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).Times(0); SimulateSuccessfulLoginAndRunPending(); EXPECT_CALL(store, Apply(kPolicyDisableSpdy, _)).Times(0); @@ -140,16 +142,19 @@ TEST_F(DeviceManagementPolicyProviderTest, SecondProvide) { // Simulate a app relaunch by constructing a new provider. Policy should be // refreshed (since that might be the purpose of the app relaunch). CreateNewBackend(); - EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).Times(1); + EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).WillOnce( + MockDeviceManagementBackendSucceedBooleanPolicy( + key::kDisableSpdy, true)); CreateNewProvider(); Mock::VerifyAndClearExpectations(backend_); // Simulate another app relaunch, this time against a failing backend. // Cached policy should still be available. CreateNewBackend(); - backend_->AllShouldFail(); MockConfigurationPolicyStore store; - EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).Times(1); + EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).WillOnce( + MockDeviceManagementBackendFailPolicy( + DeviceManagementBackend::kErrorRequestFailed)); CreateNewProvider(); SimulateSuccessfulLoginAndRunPending(); EXPECT_CALL(store, Apply(kPolicyDisableSpdy, _)).Times(1); @@ -170,18 +175,38 @@ TEST_F(DeviceManagementPolicyProviderTest, FetchTriggersRefresh) { } TEST_F(DeviceManagementPolicyProviderTest, ErrorCausesNewRequest) { - backend_->RegisterFailsOncePolicyFailsTwice(); + InSequence s; SetRefreshDelays(provider_.get(), 1000 * 1000, 0, 0, 0); - EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).Times(2); - EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).Times(3); + EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce( + MockDeviceManagementBackendFailRegister( + DeviceManagementBackend::kErrorRequestFailed)); + EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce( + MockDeviceManagementBackendSucceedRegister()); + EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).WillOnce( + MockDeviceManagementBackendFailPolicy( + DeviceManagementBackend::kErrorRequestFailed)); + EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).WillOnce( + MockDeviceManagementBackendFailPolicy( + DeviceManagementBackend::kErrorRequestFailed)); + EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).WillOnce( + MockDeviceManagementBackendSucceedBooleanPolicy(key::kDisableSpdy, true)); SimulateSuccessfulLoginAndRunPending(); } TEST_F(DeviceManagementPolicyProviderTest, RefreshPolicies) { - backend_->AllWorksFirstPolicyFailsLater(); + InSequence s; SetRefreshDelays(provider_.get(), 0, 0, 1000 * 1000, 1000); - EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).Times(1); - EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).Times(4); + EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce( + MockDeviceManagementBackendSucceedRegister()); + EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).WillOnce( + MockDeviceManagementBackendSucceedBooleanPolicy(key::kDisableSpdy, true)); + EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).WillOnce( + MockDeviceManagementBackendSucceedBooleanPolicy(key::kDisableSpdy, true)); + EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).WillOnce( + MockDeviceManagementBackendSucceedBooleanPolicy(key::kDisableSpdy, true)); + EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).WillOnce( + MockDeviceManagementBackendFailPolicy( + DeviceManagementBackend::kErrorRequestFailed)); SimulateSuccessfulLoginAndRunPending(); } diff --git a/chrome/browser/policy/device_token_fetcher_unittest.cc b/chrome/browser/policy/device_token_fetcher_unittest.cc index 393195c..7e2a00e 100644 --- a/chrome/browser/policy/device_token_fetcher_unittest.cc +++ b/chrome/browser/policy/device_token_fetcher_unittest.cc @@ -90,15 +90,15 @@ class DeviceTokenFetcherTest : public testing::Test { TEST_F(DeviceTokenFetcherTest, IsPending) { ASSERT_TRUE(fetcher_->IsTokenPending()); - backend_->AllShouldSucceed(); - EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).Times(1); + EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce( + MockDeviceManagementBackendSucceedRegister()); SimulateSuccessfulLoginAndRunPending(); ASSERT_FALSE(fetcher_->IsTokenPending()); } TEST_F(DeviceTokenFetcherTest, StoreAndLoad) { - backend_->AllShouldSucceed(); - EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).Times(1); + EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce( + MockDeviceManagementBackendSucceedRegister()); SimulateSuccessfulLoginAndRunPending(); ASSERT_FALSE(fetcher_->IsTokenPending()); std::string device_token = fetcher_->GetDeviceToken(); @@ -116,8 +116,8 @@ TEST_F(DeviceTokenFetcherTest, StoreAndLoad) { } TEST_F(DeviceTokenFetcherTest, SimpleFetchSingleLogin) { - backend_->AllShouldSucceed(); - EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).Times(1); + EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce( + MockDeviceManagementBackendSucceedRegister()); SimulateSuccessfulLoginAndRunPending(); ASSERT_FALSE(fetcher_->IsTokenPending()); ASSERT_TRUE(fetcher_->IsTokenValid()); @@ -126,8 +126,8 @@ TEST_F(DeviceTokenFetcherTest, SimpleFetchSingleLogin) { } TEST_F(DeviceTokenFetcherTest, SimpleFetchDoubleLogin) { - backend_->AllShouldSucceed(); - EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).Times(1); + EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce( + MockDeviceManagementBackendSucceedRegister()); SimulateSuccessfulLoginAndRunPending(); ASSERT_FALSE(fetcher_->IsTokenPending()); const std::string token(fetcher_->GetDeviceToken()); @@ -147,8 +147,8 @@ TEST_F(DeviceTokenFetcherTest, FetchBetweenBrowserLaunchAndNotify) { registrar.AddObserver(&observer); EXPECT_CALL(observer, OnTokenSuccess()).Times(1); EXPECT_CALL(observer, OnTokenError()).Times(0); - backend_->AllShouldSucceed(); - EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).Times(1); + EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce( + MockDeviceManagementBackendSucceedRegister()); SimulateSuccessfulLoginAndRunPending(); ASSERT_FALSE(fetcher_->IsTokenPending()); const std::string token(fetcher_->GetDeviceToken()); @@ -176,8 +176,9 @@ TEST_F(DeviceTokenFetcherTest, FailedServerRequest) { registrar.AddObserver(&observer); EXPECT_CALL(observer, OnTokenSuccess()).Times(0); EXPECT_CALL(observer, OnTokenError()).Times(1); - backend_->AllShouldFail(); - EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).Times(1); + EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce( + MockDeviceManagementBackendFailRegister( + DeviceManagementBackend::kErrorRequestFailed)); SimulateSuccessfulLoginAndRunPending(); ASSERT_FALSE(fetcher_->IsTokenPending()); const std::string token(fetcher_->GetDeviceToken()); @@ -189,8 +190,9 @@ TEST_F(DeviceTokenFetcherTest, UnmanagedDevice) { GetDeviceTokenPath(fetcher_, &token_path); file_util::WriteFile(token_path, "foo", 3); ASSERT_TRUE(file_util::PathExists(token_path)); - backend_->UnmanagedDevice(); - EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).Times(1); + EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce( + MockDeviceManagementBackendFailRegister( + DeviceManagementBackend::kErrorServiceManagementNotSupported)); SimulateSuccessfulLoginAndRunPending(); ASSERT_FALSE(fetcher_->IsTokenPending()); ASSERT_EQ("", fetcher_->GetDeviceToken()); diff --git a/chrome/browser/policy/mock_device_management_backend.cc b/chrome/browser/policy/mock_device_management_backend.cc deleted file mode 100644 index ca61feb..0000000 --- a/chrome/browser/policy/mock_device_management_backend.cc +++ /dev/null @@ -1,163 +0,0 @@ -// Copyright (c) 2010 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 "chrome/browser/policy/mock_device_management_backend.h" - -#include "base/basictypes.h" -#include "base/logging.h" -#include "base/stl_util-inl.h" - -namespace { - -static const char kFakeDeviceManagementToken[] = "FAKE_DEVICE_TOKEN_"; -static char next_token_suffix_ = '0'; - -} // namespace - -namespace policy { - -using ::testing::_; -using ::testing::Invoke; - -using em::DeviceRegisterRequest; -using em::DeviceUnregisterRequest; -using em::DevicePolicyRequest; -using em::DeviceRegisterResponse; -using em::DeviceUnregisterResponse; -using em::DevicePolicyResponse; - -MockDeviceManagementBackend::MockDeviceManagementBackend() - : DeviceManagementBackend(), - policy_remaining_fail_count_(0), - register_remaining_fail_count_(0), - policy_remaining_success_count_(0) { - policy_setting_ = policy_response_.add_setting(); - policy_setting_->set_policy_key("chrome-policy"); - policy_setting_->set_watermark("fresh"); -} - -MockDeviceManagementBackend::~MockDeviceManagementBackend() { -} - -void MockDeviceManagementBackend::AllShouldSucceed() { - ON_CALL(*this, ProcessRegisterRequest(_, _, _, _)). - WillByDefault(Invoke( - this, - &MockDeviceManagementBackend::SimulateSuccessfulRegisterRequest)); - ON_CALL(*this, ProcessPolicyRequest(_, _, _, _)). - WillByDefault(Invoke( - this, - &MockDeviceManagementBackend::SimulateSuccessfulPolicyRequest)); -} - -void MockDeviceManagementBackend::AllShouldFail() { - ON_CALL(*this, ProcessRegisterRequest(_, _, _, _)). - WillByDefault(Invoke( - this, - &MockDeviceManagementBackend::SimulateFailedRegisterRequest)); - ON_CALL(*this, ProcessPolicyRequest(_, _, _, _)). - WillByDefault(Invoke( - this, - &MockDeviceManagementBackend::SimulateFailedPolicyRequest)); -} - -void MockDeviceManagementBackend::UnmanagedDevice() { - ON_CALL(*this, ProcessRegisterRequest(_, _, _, _)). - WillByDefault(Invoke( - this, - &MockDeviceManagementBackend::SimulateUnmanagedRegisterRequest)); -} - -void MockDeviceManagementBackend::RegisterFailsOncePolicyFailsTwice() { - register_remaining_fail_count_ = 1; - policy_remaining_fail_count_ = 2; - AllShouldFail(); -} - -void MockDeviceManagementBackend::AllWorksFirstPolicyFailsLater() { - policy_remaining_success_count_ = 3; - AllShouldSucceed(); -} - -void MockDeviceManagementBackend::AddBooleanPolicy(const char* policy_name, - bool value) { - em::GenericSetting* policy_value = policy_setting_->mutable_policy_value(); - em::GenericNamedValue* named_value = policy_value->add_named_value(); - named_value->set_name(policy_name); - named_value->mutable_value()->set_value_type( - em::GenericValue::VALUE_TYPE_BOOL); - named_value->mutable_value()->set_bool_value(value); -} - -void MockDeviceManagementBackend::SimulateSuccessfulRegisterRequest( - const std::string& auth_token, - const std::string& device_id, - const em::DeviceRegisterRequest& request, - DeviceRegisterResponseDelegate* delegate) { - DeviceRegisterResponse response; - std::string token(kFakeDeviceManagementToken); - token += next_token_suffix_++; - response.set_device_management_token(token); - delegate->HandleRegisterResponse(response); -} - -void MockDeviceManagementBackend::SimulateSuccessfulPolicyRequest( - const std::string& device_management_token, - const std::string& device_id, - const em::DevicePolicyRequest& request, - DevicePolicyResponseDelegate* delegate) { - if (policy_remaining_success_count_) { - policy_remaining_success_count_--; - if (!policy_remaining_success_count_) { - ON_CALL(*this, ProcessPolicyRequest(_, _, _, _)). - WillByDefault(Invoke( - this, - &MockDeviceManagementBackend::SimulateFailedPolicyRequest)); - } - } - delegate->HandlePolicyResponse(policy_response_); -} - -void MockDeviceManagementBackend::SimulateFailedRegisterRequest( - const std::string& auth_token, - const std::string& device_id, - const em::DeviceRegisterRequest& request, - DeviceRegisterResponseDelegate* delegate) { - if (register_remaining_fail_count_) { - register_remaining_fail_count_--; - if (!register_remaining_fail_count_) { - ON_CALL(*this, ProcessRegisterRequest(_, _, _, _)).WillByDefault(Invoke( - this, - &MockDeviceManagementBackend::SimulateSuccessfulRegisterRequest)); - } - } - delegate->OnError(kErrorRequestFailed); -} - -void MockDeviceManagementBackend::SimulateFailedPolicyRequest( - const std::string& device_management_token, - const std::string& device_id, - const em::DevicePolicyRequest& request, - DevicePolicyResponseDelegate* delegate) { - if (policy_remaining_fail_count_) { - policy_remaining_fail_count_--; - if (!policy_remaining_fail_count_) { - ON_CALL(*this, ProcessPolicyRequest(_, _, _, _)). - WillByDefault(Invoke( - this, - &MockDeviceManagementBackend::SimulateSuccessfulPolicyRequest)); - } - } - delegate->OnError(kErrorRequestFailed); -} - -void MockDeviceManagementBackend::SimulateUnmanagedRegisterRequest( - const std::string& auth_token, - const std::string& device_id, - const em::DeviceRegisterRequest& request, - DeviceRegisterResponseDelegate* delegate) { - delegate->OnError(kErrorServiceManagementNotSupported); -} - -} // namespace diff --git a/chrome/browser/policy/mock_device_management_backend.h b/chrome/browser/policy/mock_device_management_backend.h index 9371dc0..3b0cb33 100644 --- a/chrome/browser/policy/mock_device_management_backend.h +++ b/chrome/browser/policy/mock_device_management_backend.h @@ -24,8 +24,8 @@ namespace em = enterprise_management; class MockDeviceManagementBackend : public DeviceManagementBackend { public: - MockDeviceManagementBackend(); - virtual ~MockDeviceManagementBackend(); + MockDeviceManagementBackend() {} + virtual ~MockDeviceManagementBackend() {} // DeviceManagementBackend method overrides: MOCK_METHOD4(ProcessRegisterRequest, void( @@ -46,55 +46,41 @@ class MockDeviceManagementBackend const em::DevicePolicyRequest& request, DevicePolicyResponseDelegate* delegate)); - void AllShouldSucceed(); - void AllShouldFail(); - void UnmanagedDevice(); - void RegisterFailsOncePolicyFailsTwice(); - void AllWorksFirstPolicyFailsLater(); - - void SimulateSuccessfulRegisterRequest( - const std::string& auth_token, - const std::string& device_id, - const em::DeviceRegisterRequest& request, - DeviceRegisterResponseDelegate* delegate); - - void SimulateSuccessfulPolicyRequest( - const std::string& device_management_token, - const std::string& device_id, - const em::DevicePolicyRequest& request, - DevicePolicyResponseDelegate* delegate); - - void SimulateFailedRegisterRequest( - const std::string& auth_token, - const std::string& device_id, - const em::DeviceRegisterRequest& request, - DeviceRegisterResponseDelegate* delegate); - - void SimulateFailedPolicyRequest( - const std::string& device_management_token, - const std::string& device_id, - const em::DevicePolicyRequest& request, - DevicePolicyResponseDelegate* delegate); - - void SimulateUnmanagedRegisterRequest( - const std::string& auth_token, - const std::string& device_id, - const em::DeviceRegisterRequest& request, - DeviceRegisterResponseDelegate* delegate); - - void AddBooleanPolicy(const char* policy_name, bool value); - private: - em::DevicePolicyResponse policy_response_; - em::DevicePolicySetting* policy_setting_; - - int policy_remaining_fail_count_; - int register_remaining_fail_count_; - int policy_remaining_success_count_; - DISALLOW_COPY_AND_ASSIGN(MockDeviceManagementBackend); }; +ACTION(MockDeviceManagementBackendSucceedRegister) { + em::DeviceRegisterResponse response; + std::string token("FAKE_DEVICE_TOKEN_"); + static int next_token_suffix; + token += next_token_suffix++; + response.set_device_management_token(token); + arg3->HandleRegisterResponse(response); +} + +ACTION_P2(MockDeviceManagementBackendSucceedBooleanPolicy, name, value) { + em::DevicePolicyResponse response; + em::DevicePolicySetting* setting = response.add_setting(); + setting->set_policy_key("chrome-policy"); + setting->set_watermark("fresh"); + em::GenericSetting* policy_value = setting->mutable_policy_value(); + em::GenericNamedValue* named_value = policy_value->add_named_value(); + named_value->set_name(name); + named_value->mutable_value()->set_value_type( + em::GenericValue::VALUE_TYPE_BOOL); + named_value->mutable_value()->set_bool_value(value); + arg3->HandlePolicyResponse(response); +} + +ACTION_P(MockDeviceManagementBackendFailRegister, error) { + arg3->OnError(error); +} + +ACTION_P(MockDeviceManagementBackendFailPolicy, error) { + arg3->OnError(error); +} + } // namespace policy #endif // CHROME_BROWSER_POLICY_MOCK_DEVICE_MANAGEMENT_BACKEND_H_ |