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 |