Chromium Code Reviews| 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 |