| OLD | NEW |
| (Empty) |
| 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/mock_device_management_service.h" | |
| 6 | |
| 7 #include "base/strings/string_util.h" | |
| 8 #include "net/base/net_errors.h" | |
| 9 #include "net/url_request/url_request_context_getter.h" | |
| 10 | |
| 11 using testing::Action; | |
| 12 | |
| 13 namespace em = enterprise_management; | |
| 14 | |
| 15 namespace policy { | |
| 16 namespace { | |
| 17 | |
| 18 const char kServerUrl[] = "https://example.com/management_service"; | |
| 19 const char kUserAgent[] = "Chrome 1.2.3(456)"; | |
| 20 const char kPlatform[] = "Test|Unit|1.2.3"; | |
| 21 | |
| 22 // Common mock request job functionality. | |
| 23 class MockRequestJobBase : public DeviceManagementRequestJob { | |
| 24 public: | |
| 25 MockRequestJobBase(JobType type, | |
| 26 MockDeviceManagementService* service) | |
| 27 : DeviceManagementRequestJob(type, std::string(), std::string()), | |
| 28 service_(service) {} | |
| 29 virtual ~MockRequestJobBase() {} | |
| 30 | |
| 31 protected: | |
| 32 virtual void Run() OVERRIDE { | |
| 33 service_->StartJob(ExtractParameter(dm_protocol::kParamRequest), | |
| 34 gaia_token_, | |
| 35 ExtractParameter(dm_protocol::kParamOAuthToken), | |
| 36 dm_token_, | |
| 37 ExtractParameter(dm_protocol::kParamUserAffiliation), | |
| 38 ExtractParameter(dm_protocol::kParamDeviceID), | |
| 39 request_); | |
| 40 } | |
| 41 | |
| 42 private: | |
| 43 // Searches for a query parameter and returns the associated value. | |
| 44 const std::string& ExtractParameter(const std::string& name) const { | |
| 45 for (ParameterMap::const_iterator entry(query_params_.begin()); | |
| 46 entry != query_params_.end(); | |
| 47 ++entry) { | |
| 48 if (name == entry->first) | |
| 49 return entry->second; | |
| 50 } | |
| 51 | |
| 52 return base::EmptyString(); | |
| 53 } | |
| 54 | |
| 55 MockDeviceManagementService* service_; | |
| 56 | |
| 57 DISALLOW_COPY_AND_ASSIGN(MockRequestJobBase); | |
| 58 }; | |
| 59 | |
| 60 // Synchronous mock request job that immediately completes on calling Run(). | |
| 61 class SyncRequestJob : public MockRequestJobBase { | |
| 62 public: | |
| 63 SyncRequestJob(JobType type, | |
| 64 MockDeviceManagementService* service, | |
| 65 DeviceManagementStatus status, | |
| 66 const em::DeviceManagementResponse& response) | |
| 67 : MockRequestJobBase(type, service), | |
| 68 status_(status), | |
| 69 response_(response) {} | |
| 70 virtual ~SyncRequestJob() {} | |
| 71 | |
| 72 protected: | |
| 73 virtual void Run() OVERRIDE { | |
| 74 MockRequestJobBase::Run(); | |
| 75 callback_.Run(status_, net::OK, response_); | |
| 76 } | |
| 77 | |
| 78 private: | |
| 79 DeviceManagementStatus status_; | |
| 80 em::DeviceManagementResponse response_; | |
| 81 | |
| 82 DISALLOW_COPY_AND_ASSIGN(SyncRequestJob); | |
| 83 }; | |
| 84 | |
| 85 // Asynchronous job that allows the test to delay job completion. | |
| 86 class AsyncRequestJob : public MockRequestJobBase, | |
| 87 public MockDeviceManagementJob { | |
| 88 public: | |
| 89 AsyncRequestJob(JobType type, MockDeviceManagementService* service) | |
| 90 : MockRequestJobBase(type, service) {} | |
| 91 virtual ~AsyncRequestJob() {} | |
| 92 | |
| 93 protected: | |
| 94 virtual void RetryJob() OVERRIDE { | |
| 95 if (!retry_callback_.is_null()) | |
| 96 retry_callback_.Run(this); | |
| 97 Run(); | |
| 98 } | |
| 99 | |
| 100 virtual void SendResponse( | |
| 101 DeviceManagementStatus status, | |
| 102 const em::DeviceManagementResponse& response) OVERRIDE { | |
| 103 callback_.Run(status, net::OK, response); | |
| 104 } | |
| 105 | |
| 106 private: | |
| 107 DISALLOW_COPY_AND_ASSIGN(AsyncRequestJob); | |
| 108 }; | |
| 109 | |
| 110 } // namespace | |
| 111 | |
| 112 ACTION_P3(CreateSyncMockDeviceManagementJob, service, status, response) { | |
| 113 return new SyncRequestJob(arg0, service, status, response); | |
| 114 } | |
| 115 | |
| 116 ACTION_P2(CreateAsyncMockDeviceManagementJob, service, mock_job) { | |
| 117 AsyncRequestJob* job = new AsyncRequestJob(arg0, service); | |
| 118 *mock_job = job; | |
| 119 return job; | |
| 120 } | |
| 121 | |
| 122 MockDeviceManagementJob::~MockDeviceManagementJob() {} | |
| 123 | |
| 124 MockDeviceManagementServiceConfiguration:: | |
| 125 MockDeviceManagementServiceConfiguration() | |
| 126 : server_url_(kServerUrl) {} | |
| 127 | |
| 128 MockDeviceManagementServiceConfiguration:: | |
| 129 MockDeviceManagementServiceConfiguration(const std::string& server_url) | |
| 130 : server_url_(server_url) {} | |
| 131 | |
| 132 MockDeviceManagementServiceConfiguration:: | |
| 133 ~MockDeviceManagementServiceConfiguration() {} | |
| 134 | |
| 135 std::string MockDeviceManagementServiceConfiguration::GetServerUrl() { | |
| 136 return server_url_; | |
| 137 } | |
| 138 | |
| 139 std::string MockDeviceManagementServiceConfiguration::GetAgentParameter() { | |
| 140 return kUserAgent; | |
| 141 } | |
| 142 | |
| 143 std::string MockDeviceManagementServiceConfiguration::GetPlatformParameter() { | |
| 144 return kPlatform; | |
| 145 } | |
| 146 | |
| 147 MockDeviceManagementService::MockDeviceManagementService() | |
| 148 : DeviceManagementService(scoped_ptr<Configuration>( | |
| 149 new MockDeviceManagementServiceConfiguration)) {} | |
| 150 | |
| 151 MockDeviceManagementService::~MockDeviceManagementService() {} | |
| 152 | |
| 153 Action<MockDeviceManagementService::CreateJobFunction> | |
| 154 MockDeviceManagementService::SucceedJob( | |
| 155 const em::DeviceManagementResponse& response) { | |
| 156 return CreateSyncMockDeviceManagementJob(this, DM_STATUS_SUCCESS, response); | |
| 157 } | |
| 158 | |
| 159 Action<MockDeviceManagementService::CreateJobFunction> | |
| 160 MockDeviceManagementService::FailJob(DeviceManagementStatus status) { | |
| 161 const em::DeviceManagementResponse dummy_response; | |
| 162 return CreateSyncMockDeviceManagementJob(this, status, dummy_response); | |
| 163 } | |
| 164 | |
| 165 Action<MockDeviceManagementService::CreateJobFunction> | |
| 166 MockDeviceManagementService::CreateAsyncJob(MockDeviceManagementJob** job) { | |
| 167 return CreateAsyncMockDeviceManagementJob(this, job); | |
| 168 } | |
| 169 | |
| 170 } // namespace policy | |
| OLD | NEW |