// 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. #ifndef CHROME_BROWSER_POLICY_CLOUD_MOCK_DEVICE_MANAGEMENT_SERVICE_H_ #define CHROME_BROWSER_POLICY_CLOUD_MOCK_DEVICE_MANAGEMENT_SERVICE_H_ #include #include "base/basictypes.h" #include "chrome/browser/policy/cloud/device_management_service.h" #include "chrome/browser/policy/proto/cloud/device_management_backend.pb.h" #include "testing/gmock/include/gmock/gmock.h" namespace policy { class MockDeviceManagementJob { public: virtual ~MockDeviceManagementJob(); virtual void RetryJob() = 0; virtual void SendResponse( DeviceManagementStatus status, const enterprise_management::DeviceManagementResponse& response) = 0; }; class MockDeviceManagementServiceConfiguration : public DeviceManagementService::Configuration { public: MockDeviceManagementServiceConfiguration(); explicit MockDeviceManagementServiceConfiguration( const std::string& server_url); virtual ~MockDeviceManagementServiceConfiguration(); virtual std::string GetServerUrl() OVERRIDE; virtual std::string GetUserAgent() OVERRIDE; virtual std::string GetAgentParameter() OVERRIDE; virtual std::string GetPlatformParameter() OVERRIDE; private: const std::string server_url_; DISALLOW_COPY_AND_ASSIGN(MockDeviceManagementServiceConfiguration); }; class MockDeviceManagementService : public DeviceManagementService { public: MockDeviceManagementService(); virtual ~MockDeviceManagementService(); typedef DeviceManagementRequestJob* CreateJobFunction( DeviceManagementRequestJob::JobType); MOCK_METHOD1(CreateJob, CreateJobFunction); MOCK_METHOD7( StartJob, void(const std::string& request_type, const std::string& gaia_token, const std::string& oauth_token, const std::string& dm_token, const std::string& user_affiliation, const std::string& client_id, const enterprise_management::DeviceManagementRequest& request)); // Creates a gmock action that will make the job succeed. testing::Action SucceedJob( const enterprise_management::DeviceManagementResponse& response); // Creates a gmock action which will fail the job with the given error. testing::Action FailJob(DeviceManagementStatus status); // Creates a gmock action which will capture the job so the test code can // delay job completion. testing::Action CreateAsyncJob( MockDeviceManagementJob** job); private: DISALLOW_COPY_AND_ASSIGN(MockDeviceManagementService); }; } // namespace policy #endif // CHROME_BROWSER_POLICY_CLOUD_MOCK_DEVICE_MANAGEMENT_SERVICE_H_