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

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

Issue 5026001: Rework the device management backend implementation. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 10 years, 1 month 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
Index: chrome/browser/policy/device_management_backend_impl_unittest.cc
diff --git a/chrome/browser/policy/device_management_backend_impl_unittest.cc b/chrome/browser/policy/device_management_backend_impl_unittest.cc
index 1e93f3a6ef6e6356d7ee025fd5055b84f54a8319..d5a77d31950f56636f43b97433ff347e3a396ae3 100644
--- a/chrome/browser/policy/device_management_backend_impl_unittest.cc
+++ b/chrome/browser/policy/device_management_backend_impl_unittest.cc
@@ -40,8 +40,10 @@ template<typename TESTBASE>
class DeviceManagementBackendImplTestBase : public TESTBASE {
protected:
DeviceManagementBackendImplTestBase()
- : io_thread_(BrowserThread::IO, &loop_),
- service_(kServiceURL) {}
+ : io_thread_(BrowserThread::IO, &loop_) {
+ ResetBackend();
+ service_.reset(backend_->Get());
+ }
virtual void SetUp() {
URLFetcher::set_factory(&factory_);
@@ -49,13 +51,22 @@ class DeviceManagementBackendImplTestBase : public TESTBASE {
virtual void TearDown() {
URLFetcher::set_factory(NULL);
+ service_.reset();
+ backend_.reset();
loop_.RunAllPending();
}
+ void ResetBackend() {
+ backend_.reset(new DeviceManagementBackendImpl(kServiceURL, NULL));
+ }
+
+ TestURLFetcherFactory factory_;
+ scoped_ptr<DeviceManagementBackendImpl> backend_;
+ scoped_ptr<DeviceManagementBackend> service_;
+
+ private:
MessageLoopForUI loop_;
BrowserThread io_thread_;
- TestURLFetcherFactory factory_;
- DeviceManagementBackendImpl service_;
};
struct FailedRequestParams {
@@ -85,7 +96,7 @@ TEST_P(DeviceManagementBackendImplFailedRequestTest, RegisterRequest) {
DeviceRegisterResponseDelegateMock mock;
EXPECT_CALL(mock, OnError(GetParam().expected_error_));
em::DeviceRegisterRequest request;
- service_.ProcessRegisterRequest("token", "device id", request, &mock);
+ service_->ProcessRegisterRequest("token", "device id", request, &mock);
TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
ASSERT_TRUE(fetcher);
@@ -101,7 +112,7 @@ TEST_P(DeviceManagementBackendImplFailedRequestTest, UnregisterRequest) {
DeviceUnregisterResponseDelegateMock mock;
EXPECT_CALL(mock, OnError(GetParam().expected_error_));
em::DeviceUnregisterRequest request;
- service_.ProcessUnregisterRequest("token", request, &mock);
+ service_->ProcessUnregisterRequest("token", request, &mock);
TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
ASSERT_TRUE(fetcher);
@@ -121,7 +132,7 @@ TEST_P(DeviceManagementBackendImplFailedRequestTest, PolicyRequest) {
em::DevicePolicySettingRequest* setting_request =
request.add_setting_request();
setting_request->set_key("policy");
- service_.ProcessPolicyRequest("token", request, &mock);
+ service_->ProcessPolicyRequest("token", request, &mock);
TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
ASSERT_TRUE(fetcher);
@@ -231,7 +242,7 @@ TEST_F(DeviceManagementBackendImplTest, RegisterRequest) {
expected_response.set_device_management_token("mtoken");
EXPECT_CALL(mock, HandleRegisterResponse(MessageEquals(expected_response)));
em::DeviceRegisterRequest request;
- service_.ProcessRegisterRequest("token", "device id", request, &mock);
+ service_->ProcessRegisterRequest("token", "device id", request, &mock);
TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
ASSERT_TRUE(fetcher);
@@ -273,7 +284,7 @@ TEST_F(DeviceManagementBackendImplTest, UnregisterRequest) {
em::DeviceUnregisterResponse expected_response;
EXPECT_CALL(mock, HandleUnregisterResponse(MessageEquals(expected_response)));
em::DeviceUnregisterRequest request;
- service_.ProcessUnregisterRequest("dmtokenvalue", request, &mock);
+ service_->ProcessUnregisterRequest("dmtokenvalue", request, &mock);
TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
ASSERT_TRUE(fetcher);
@@ -335,7 +346,7 @@ TEST_F(DeviceManagementBackendImplTest, PolicyRequest) {
request.add_setting_request();
setting_request->set_key("policy");
setting_request->set_watermark("stale");
- service_.ProcessPolicyRequest("dmtokenvalue", request, &mock);
+ service_->ProcessPolicyRequest("dmtokenvalue", request, &mock);
TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
ASSERT_TRUE(fetcher);
@@ -372,4 +383,90 @@ TEST_F(DeviceManagementBackendImplTest, PolicyRequest) {
response_data);
}
markusheintz_ 2010/11/18 12:40:36 Sorry if this is a dumb question but what exactly
Mattias Nissler (ping if slow) 2010/11/19 17:21:53 Yes, that's a reset of a scoped_ptr, so the backen
+TEST_F(DeviceManagementBackendImplTest, CancelRegisterRequest) {
+ DeviceRegisterResponseDelegateMock mock;
+ EXPECT_CALL(mock, HandleRegisterResponse(_)).Times(0);
+ em::DeviceRegisterRequest request;
+ service_->ProcessRegisterRequest("token", "device id", request, &mock);
+ TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
+ ASSERT_TRUE(fetcher);
+
+ // There shouldn't be any callbacks.
+ service_.reset();
+}
+
+TEST_F(DeviceManagementBackendImplTest, CancelUnregisterRequest) {
+ DeviceUnregisterResponseDelegateMock mock;
+ EXPECT_CALL(mock, HandleUnregisterResponse(_)).Times(0);
+ em::DeviceUnregisterRequest request;
+ service_->ProcessUnregisterRequest("dmtokenvalue", request, &mock);
+ TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
+ ASSERT_TRUE(fetcher);
+
+ // There shouldn't be any callbacks.
+ service_.reset();
+}
+
+TEST_F(DeviceManagementBackendImplTest, CancelPolicyRequest) {
+ DevicePolicyResponseDelegateMock mock;
+ EXPECT_CALL(mock, HandlePolicyResponse(_)).Times(0);
+ em::DevicePolicyRequest request;
+ request.set_policy_scope("chromium");
markusheintz_ 2010/11/18 12:40:36 Not sure if this is important for you test, but th
Mattias Nissler (ping if slow) 2010/11/19 17:21:53 Done.
+ em::DevicePolicySettingRequest* setting_request =
+ request.add_setting_request();
+ setting_request->set_key("policy");
+ setting_request->set_watermark("stale");
+ service_->ProcessPolicyRequest("dmtokenvalue", request, &mock);
+ TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
+ ASSERT_TRUE(fetcher);
+
+ // There shouldn't be any callbacks.
+ service_.reset();
+}
+
+TEST_F(DeviceManagementBackendImplTest, BackendSwapping) {
+ // Start with a non-existing backend.
+ backend_.reset();
+
+ // Make a request. We should not see any fetchers being created.
+ DeviceRegisterResponseDelegateMock mock;
+ em::DeviceRegisterResponse expected_response;
+ expected_response.set_device_management_token("mtoken");
+ EXPECT_CALL(mock, HandleRegisterResponse(MessageEquals(expected_response)));
+ em::DeviceRegisterRequest request;
+ service_->ProcessRegisterRequest("token", "device id", request, &mock);
+ TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
+ ASSERT_FALSE(fetcher);
+
+ // Now create a backend. That should start the job.
+ ResetBackend();
+ fetcher = factory_.GetFetcherByID(0);
+ ASSERT_TRUE(fetcher);
+ factory_.RemoveFetcherFromMap(0);
+
+ // Killing the backend should stop the job.
+ backend_.reset();
+ fetcher = factory_.GetFetcherByID(0);
+ ASSERT_FALSE(fetcher);
+
+ // Recreate the backend and process the job, which should trigger the
+ // callback.
+ ResetBackend();
+ fetcher = factory_.GetFetcherByID(0);
+ ASSERT_TRUE(fetcher);
+
+ std::string response_data;
+ em::DeviceManagementResponse response_wrapper;
+ response_wrapper.set_error(em::DeviceManagementResponse::SUCCESS);
+ response_wrapper.mutable_register_response()->CopyFrom(expected_response);
+ ASSERT_TRUE(response_wrapper.SerializeToString(&response_data));
+ URLRequestStatus status(URLRequestStatus::SUCCESS, 0);
+ fetcher->delegate()->OnURLFetchComplete(fetcher,
+ GURL(kServiceURL),
+ status,
+ 200,
+ ResponseCookies(),
+ response_data);
+}
+
} // namespace policy

Powered by Google App Engine
This is Rietveld 408576698