Chromium Code Reviews| Index: chrome/browser/chromeos/policy/login_policy_test_base.cc |
| diff --git a/chrome/browser/chromeos/policy/login_policy_test_base.cc b/chrome/browser/chromeos/policy/login_policy_test_base.cc |
| index 7fb6adac12b75160a4d9b39c8850ab8da2bf540b..cb088652bb12189c5b1a1ec75a52065f6b2b4ef1 100644 |
| --- a/chrome/browser/chromeos/policy/login_policy_test_base.cc |
| +++ b/chrome/browser/chromeos/policy/login_policy_test_base.cc |
| @@ -6,6 +6,7 @@ |
| #include "base/files/file_path.h" |
| #include "base/files/file_util.h" |
| #include "base/json/json_writer.h" |
| +#include "base/logging.h" |
| #include "base/values.h" |
| #include "chrome/browser/chrome_notification_types.h" |
| #include "chrome/browser/chromeos/login/ui/webui_login_display.h" |
| @@ -23,6 +24,18 @@ |
| #include "testing/gtest/include/gtest/gtest.h" |
| #include "url/gurl.h" |
| +#include "chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.h" |
| +#include "chrome/browser/chromeos/policy/user_cloud_policy_manager_factory_chromeos.h" |
| +#include "components/policy/core/common/cloud/cloud_policy_client.h" |
| +#include "components/policy/core/common/cloud/cloud_policy_constants.h" |
| +#include "components/policy/core/common/cloud/mock_cloud_policy_client.h" |
| +#include "components/policy/core/browser/browser_policy_connector.h" |
| +#include "chrome/browser/browser_process.h" |
| +#include "chrome/browser/policy/profile_policy_connector.h" |
| +#include "chrome/browser/policy/profile_policy_connector_factory.h" |
| +#include "components/policy/core/common/policy_service.h" |
| + |
| + |
| namespace policy { |
| namespace { |
| @@ -37,13 +50,13 @@ const char kTestSessionSIDCookie[] = "fake-session-SID-cookie"; |
| const char kTestSessionLSIDCookie[] = "fake-session-LSID-cookie"; |
| const char kTestUserinfoToken[] = "fake-userinfo-token"; |
| -std::string GetPolicy(scoped_ptr<base::DictionaryValue> mandatory, |
| - scoped_ptr<base::DictionaryValue> recommended, |
| +std::string GetPolicy(const base::DictionaryValue& mandatory, |
| + const base::DictionaryValue& recommended, |
| const std::string& policyType, |
| const std::string& account) { |
| scoped_ptr<base::DictionaryValue> policy_type_dict(new base::DictionaryValue); |
| - policy_type_dict->Set("mandatory", mandatory.Pass()); |
| - policy_type_dict->Set("recommended", recommended.Pass()); |
| + policy_type_dict->Set("mandatory", mandatory.CreateDeepCopy()); |
|
bartfab (slow)
2015/06/11 23:33:09
I wonder whether the JSON will be slightly differe
pneubeck (no reviews)
2015/06/12 08:55:18
good point and indeed nullptr would lead to a cras
|
| + policy_type_dict->Set("recommended", recommended.CreateDeepCopy()); |
| scoped_ptr<base::ListValue> managed_users_list(new base::ListValue); |
| managed_users_list->AppendString("*"); |
| @@ -74,24 +87,97 @@ LoginPolicyTestBase::LoginPolicyTestBase() { |
| LoginPolicyTestBase::~LoginPolicyTestBase() { |
| } |
| -void LoginPolicyTestBase::SetUp() { |
| - ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); |
| - SetServerPolicy(); |
| +PolicyTestHelper::PolicyTestHelper(const std::string& user_email, |
| + const base::DictionaryValue& mandatory, |
| + const base::DictionaryValue& recommended) |
| + : user_email_(user_email) { |
| + CHECK(temp_dir_.CreateUniqueTempDir()); |
|
bartfab (slow)
2015/06/11 23:33:09
Since this will be used in tests only, I think an
pneubeck (no reviews)
2015/06/12 08:55:18
Done.
|
| + SetServerPolicy(mandatory, recommended); |
| test_server_.reset(new LocalPolicyTestServer(PolicyFilePath())); |
| - ASSERT_TRUE(test_server_->Start()); |
| + CHECK(test_server_->Start()); |
| +} |
| + |
| +void PolicyTestHelper::UpdateCommandLine(base::CommandLine* command_line) { |
| + command_line->AppendSwitchASCII(policy::switches::kDeviceManagementUrl, |
| + test_server_->GetServiceURL().spec()); |
| +} |
| +void PolicyTestHelper::UpdatePolicy(Profile* profile, |
|
bartfab (slow)
2015/06/11 23:33:09
Nit: Missing blank line.
pneubeck (no reviews)
2015/06/12 08:55:18
Done.
|
| + const base::DictionaryValue& mandatory, |
| + const base::DictionaryValue& recommended) { |
| + SetServerPolicy(mandatory, recommended); |
| + |
| + policy::ProfilePolicyConnector* profile_connector = |
|
bartfab (slow)
2015/06/11 23:33:09
Nit: Here and below: const pointers.
pneubeck (no reviews)
2015/06/12 08:55:18
Done.
|
| + policy::ProfilePolicyConnectorFactory::GetForBrowserContext(profile); |
| + policy::PolicyService* policy_service = profile_connector->policy_service(); |
| + |
| + base::RunLoop run_loop; |
| + policy_service->RefreshPolicies(run_loop.QuitClosure()); |
| + run_loop.Run(); |
| +} |
| + |
| +void PolicyTestHelper::WaitForInitialPolicy(Profile* profile) { |
| + BrowserPolicyConnector* connector = |
| + g_browser_process->browser_policy_connector(); |
| + connector->ScheduleServiceInitialization(0); |
| + |
| + UserCloudPolicyManagerChromeOS* policy_manager = |
| + UserCloudPolicyManagerFactoryChromeOS::GetForProfile(profile); |
| + ASSERT_TRUE(policy_manager); |
| + |
| + ASSERT_TRUE(policy_manager->core()->client()); |
| + |
| + // Give a bogus OAuth token to the |policy_manager|. This should make its |
| + // CloudPolicyClient fetch the DMToken. |
| + ASSERT_FALSE(policy_manager->core()->client()->is_registered()); |
| + enterprise_management::DeviceRegisterRequest::Type registration_type = |
|
bartfab (slow)
2015/06/11 23:33:09
Nit: const.
pneubeck (no reviews)
2015/06/12 08:55:18
Done.
|
| + enterprise_management::DeviceRegisterRequest::USER; |
| + policy_manager->core()->client()->Register( |
| + registration_type, |
| + enterprise_management::DeviceRegisterRequest::FLAVOR_USER_REGISTRATION, |
| + "bogus", std::string(), std::string(), std::string()); |
| + |
| + policy::ProfilePolicyConnector* profile_connector = |
| + policy::ProfilePolicyConnectorFactory::GetForBrowserContext(profile); |
| + policy::PolicyService* policy_service = profile_connector->policy_service(); |
| + |
| + base::RunLoop run_loop; |
| + policy_service->RefreshPolicies(run_loop.QuitClosure()); |
| + run_loop.Run(); |
| +} |
| + |
| +PolicyTestHelper::~PolicyTestHelper() { |
|
bartfab (slow)
2015/06/11 23:33:09
Nit: Reorder methods so that declaration and defin
pneubeck (no reviews)
2015/06/12 08:55:18
Done.
|
| +} |
| + |
| +void PolicyTestHelper::SetServerPolicy( |
| + const base::DictionaryValue& mandatory, |
| + const base::DictionaryValue& recommended) { |
| + const std::string policy = GetPolicy( |
| + mandatory, recommended, dm_protocol::kChromeUserPolicyType, user_email_); |
| + const int bytes_written = |
| + base::WriteFile(PolicyFilePath(), policy.data(), policy.size()); |
| + CHECK_EQ(static_cast<int>(policy.size()), bytes_written); |
| +} |
| + |
| +base::FilePath PolicyTestHelper::PolicyFilePath() const { |
| + return temp_dir_.path().AppendASCII("policy.json"); |
| +} |
| +void LoginPolicyTestBase::SetUp() { |
| + scoped_ptr<base::DictionaryValue> mandatory(GetMandatoryPoliciesValue()); |
|
bartfab (slow)
2015/06/11 23:33:09
If you are switching from scoped_ptrs to deep copi
pneubeck (no reviews)
2015/06/12 08:55:18
Done.
|
| + scoped_ptr<base::DictionaryValue> recommended(GetRecommendedPoliciesValue()); |
| + policy_helper_.reset( |
| + new PolicyTestHelper(kAccountId, *mandatory, *recommended)); |
| OobeBaseTest::SetUp(); |
| } |
| void LoginPolicyTestBase::SetUpCommandLine(base::CommandLine* command_line) { |
| - command_line->AppendSwitchASCII(policy::switches::kDeviceManagementUrl, |
| - test_server_->GetServiceURL().spec()); |
| + policy_helper_->UpdateCommandLine(command_line); |
| OobeBaseTest::SetUpCommandLine(command_line); |
| } |
| void LoginPolicyTestBase::SetUpOnMainThread() { |
| - SetMergeSessionParams(kAccountId); |
| + SetMergeSessionParams(); |
| SetUpGaiaServerWithAccessTokens(); |
| OobeBaseTest::SetUpOnMainThread(); |
| } |
| @@ -116,7 +202,7 @@ void LoginPolicyTestBase::SetUpGaiaServerWithAccessTokens() { |
| fake_gaia_->IssueOAuthToken(kTestRefreshToken, token_info); |
| } |
| -void LoginPolicyTestBase::SetMergeSessionParams(const std::string& email) { |
| +void LoginPolicyTestBase::SetMergeSessionParams() { |
| FakeGaia::MergeSessionParams params; |
| params.auth_sid_cookie = kTestAuthSIDCookie; |
| params.auth_lsid_cookie = kTestAuthLSIDCookie; |
| @@ -126,7 +212,7 @@ void LoginPolicyTestBase::SetMergeSessionParams(const std::string& email) { |
| params.gaia_uber_token = kTestGaiaUberToken; |
| params.session_sid_cookie = kTestSessionSIDCookie; |
| params.session_lsid_cookie = kTestSessionLSIDCookie; |
| - params.email = email; |
| + params.email = kAccountId; |
| fake_gaia_->SetMergeSessionParams(params); |
| } |
| @@ -151,18 +237,4 @@ void LoginPolicyTestBase::LogIn(const std::string& user_id, |
| content::NotificationService::AllSources()).Wait(); |
| } |
| -void LoginPolicyTestBase::SetServerPolicy() { |
| - const std::string policy = |
| - GetPolicy(GetMandatoryPoliciesValue(), GetRecommendedPoliciesValue(), |
| - dm_protocol::kChromeUserPolicyType, kAccountId); |
| - |
| - const int bytes_written = |
| - base::WriteFile(PolicyFilePath(), policy.data(), policy.size()); |
| - ASSERT_EQ(static_cast<int>(policy.size()), bytes_written); |
| -} |
| - |
| -base::FilePath LoginPolicyTestBase::PolicyFilePath() const { |
| - return temp_dir_.path().AppendASCII("policy.json"); |
| -} |
| - |
| } // namespace policy |