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

Side by Side Diff: chrome/browser/policy/cloud/mock_device_management_service.cc

Issue 109743002: Move policy code into components/policy. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: moar fixes Created 7 years 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(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
OLDNEW
« no previous file with comments | « chrome/browser/policy/cloud/mock_device_management_service.h ('k') | chrome/browser/policy/cloud/policy_builder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698