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

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

Issue 5178005: 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_service_unittest.cc
diff --git a/chrome/browser/policy/device_management_backend_impl_unittest.cc b/chrome/browser/policy/device_management_service_unittest.cc
similarity index 73%
rename from chrome/browser/policy/device_management_backend_impl_unittest.cc
rename to chrome/browser/policy/device_management_service_unittest.cc
index 1e93f3a6ef6e6356d7ee025fd5055b84f54a8319..b9df3d58ee446a05b3459b28b9a049313dc6faf7 100644
--- a/chrome/browser/policy/device_management_backend_impl_unittest.cc
+++ b/chrome/browser/policy/device_management_service_unittest.cc
@@ -2,15 +2,17 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/policy/device_management_backend_impl.h"
+#include "chrome/browser/policy/device_management_service.h"
#include "base/message_loop.h"
#include "base/string_split.h"
#include "chrome/browser/browser_thread.h"
#include "chrome/browser/policy/device_management_backend_mock.h"
#include "chrome/common/net/test_url_fetcher_factory.h"
+#include "chrome/test/test_url_request_context_getter.h"
#include "net/base/escape.h"
#include "net/url_request/url_request_status.h"
+#include "net/url_request/url_request_unittest.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "testing/gmock/include/gmock/gmock.h"
@@ -33,15 +35,18 @@ const char kResponseErrorActivationPending[] = "\x08\x04";
} // namespace
-// Unit tests for the google apps policy backend. The pattern here is each test
-// case triggeres a request and installs a mock delegate. The test will run and
-// the default action installed on the test delegate will quit the loop.
+// Unit tests for the device management policy backend. The tests are run
+// against a TestURLFetcherFactory that is used to short-circuit the request
+// without calling into the actual network stack.
template<typename TESTBASE>
-class DeviceManagementBackendImplTestBase : public TESTBASE {
+class DeviceManagementServiceTestBase : public TESTBASE {
protected:
- DeviceManagementBackendImplTestBase()
- : io_thread_(BrowserThread::IO, &loop_),
- service_(kServiceURL) {}
+ DeviceManagementServiceTestBase()
+ : request_context_(new TestURLRequestContextGetter()),
+ io_thread_(BrowserThread::IO, &loop_) {
+ ResetBackend();
+ backend_->Initialize(request_context_.get());
+ }
virtual void SetUp() {
URLFetcher::set_factory(&factory_);
@@ -49,13 +54,25 @@ class DeviceManagementBackendImplTestBase : public TESTBASE {
virtual void TearDown() {
URLFetcher::set_factory(NULL);
+ service_.reset();
+ backend_.reset();
loop_.RunAllPending();
}
+ void ResetBackend() {
+ service_.reset();
+ backend_.reset(new DeviceManagementService(kServiceURL));
+ service_.reset(backend_->CreateBackend());
+ }
+
+ TestURLFetcherFactory factory_;
+ scoped_refptr<TestURLRequestContextGetter> request_context_;
+ scoped_ptr<DeviceManagementService> backend_;
+ scoped_ptr<DeviceManagementBackend> service_;
+
+ private:
MessageLoopForUI loop_;
BrowserThread io_thread_;
- TestURLFetcherFactory factory_;
- DeviceManagementBackendImpl service_;
};
struct FailedRequestParams {
@@ -76,16 +93,16 @@ struct FailedRequestParams {
// A parameterized test case for erroneous response situations, they're mostly
// the same for all kinds of requests.
-class DeviceManagementBackendImplFailedRequestTest
- : public DeviceManagementBackendImplTestBase<
+class DeviceManagementServiceFailedRequestTest
+ : public DeviceManagementServiceTestBase<
testing::TestWithParam<FailedRequestParams> > {
};
-TEST_P(DeviceManagementBackendImplFailedRequestTest, RegisterRequest) {
+TEST_P(DeviceManagementServiceFailedRequestTest, 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);
@@ -97,11 +114,11 @@ TEST_P(DeviceManagementBackendImplFailedRequestTest, RegisterRequest) {
GetParam().response_);
}
-TEST_P(DeviceManagementBackendImplFailedRequestTest, UnregisterRequest) {
+TEST_P(DeviceManagementServiceFailedRequestTest, 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);
@@ -113,7 +130,7 @@ TEST_P(DeviceManagementBackendImplFailedRequestTest, UnregisterRequest) {
GetParam().response_);
}
-TEST_P(DeviceManagementBackendImplFailedRequestTest, PolicyRequest) {
+TEST_P(DeviceManagementServiceFailedRequestTest, PolicyRequest) {
DevicePolicyResponseDelegateMock mock;
EXPECT_CALL(mock, OnError(GetParam().expected_error_));
em::DevicePolicyRequest request;
@@ -121,7 +138,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);
@@ -134,8 +151,8 @@ TEST_P(DeviceManagementBackendImplFailedRequestTest, PolicyRequest) {
}
INSTANTIATE_TEST_CASE_P(
- DeviceManagementBackendImplFailedRequestTestInstance,
- DeviceManagementBackendImplFailedRequestTest,
+ DeviceManagementServiceFailedRequestTestInstance,
+ DeviceManagementServiceFailedRequestTest,
testing::Values(
FailedRequestParams(
DeviceManagementBackend::kErrorRequestFailed,
@@ -173,8 +190,8 @@ INSTANTIATE_TEST_CASE_P(
200,
PROTO_STRING(kResponseErrorActivationPending))));
-class DeviceManagementBackendImplTest
- : public DeviceManagementBackendImplTestBase<testing::Test> {
+class DeviceManagementServiceTest
+ : public DeviceManagementServiceTestBase<testing::Test> {
};
MATCHER_P(MessageEquals, reference, "") {
@@ -225,13 +242,13 @@ class QueryParams {
ParamMap params_;
};
-TEST_F(DeviceManagementBackendImplTest, RegisterRequest) {
+TEST_F(DeviceManagementServiceTest, RegisterRequest) {
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);
+ service_->ProcessRegisterRequest("token", "device id", request, &mock);
TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
ASSERT_TRUE(fetcher);
@@ -268,12 +285,12 @@ TEST_F(DeviceManagementBackendImplTest, RegisterRequest) {
response_data);
}
-TEST_F(DeviceManagementBackendImplTest, UnregisterRequest) {
+TEST_F(DeviceManagementServiceTest, UnregisterRequest) {
DeviceUnregisterResponseDelegateMock mock;
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);
@@ -310,7 +327,7 @@ TEST_F(DeviceManagementBackendImplTest, UnregisterRequest) {
response_data);
}
-TEST_F(DeviceManagementBackendImplTest, PolicyRequest) {
+TEST_F(DeviceManagementServiceTest, PolicyRequest) {
DevicePolicyResponseDelegateMock mock;
em::DevicePolicyResponse expected_response;
em::DevicePolicySetting* policy_setting = expected_response.add_setting();
@@ -335,7 +352,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 +389,80 @@ TEST_F(DeviceManagementBackendImplTest, PolicyRequest) {
response_data);
}
+TEST_F(DeviceManagementServiceTest, 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(DeviceManagementServiceTest, 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(DeviceManagementServiceTest, CancelPolicyRequest) {
+ DevicePolicyResponseDelegateMock mock;
+ EXPECT_CALL(mock, HandlePolicyResponse(_)).Times(0);
+ em::DevicePolicyRequest request;
+ request.set_policy_scope("chromium");
+ 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(DeviceManagementServiceTest, JobQueueing) {
+ // Start with a non-initialized backend.
+ ResetBackend();
+
+ // 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 initialize the backend. That should start the job.
+ backend_->Initialize(request_context_.get());
+ fetcher = factory_.GetFetcherByID(0);
+ ASSERT_TRUE(fetcher);
+ factory_.RemoveFetcherFromMap(0);
+
+ // Check that the request is processed as expected.
+ 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
« no previous file with comments | « chrome/browser/policy/device_management_service_browsertest.cc ('k') | chrome/browser/policy/device_token_fetcher.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698