15c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Copyright 2014 The Chromium Authors. All rights reserved. 25c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Use of this source code is governed by a BSD-style license that can be 35c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// found in the LICENSE file. 45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_SUPERVISED_SUPERVISED_USER_TEST_BASE_H_ 55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define CHROME_BROWSER_CHROMEOS_LOGIN_SUPERVISED_SUPERVISED_USER_TEST_BASE_H_ 65c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 75c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include <string> 85c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 95c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "base/compiler_specific.h" 105c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "chrome/browser/chromeos/login/login_manager_test.h" 115c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "chrome/browser/chromeos/net/network_portal_detector_test_impl.h" 125c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "chrome/browser/profiles/profile.h" 13f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "chrome/browser/supervised_user/supervised_user_registration_utility_stub.h" 145c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "chromeos/cryptohome/mock_async_method_caller.h" 155c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "chromeos/cryptohome/mock_homedir_methods.h" 165c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "sync/api/fake_sync_change_processor.h" 175c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "sync/api/sync_change.h" 185c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "sync/api/sync_error_factory_mock.h" 195c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "sync/protocol/sync.pb.h" 205c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 215c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liunamespace chromeos { 225c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 235c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuconst char kTestManager[] = "test-manager@gmail.com"; 245c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuconst char kTestOtherUser[] = "test-user@gmail.com"; 255c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 265c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuconst char kTestManagerPassword[] = "password"; 275c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuconst char kTestSupervisedUserDisplayName[] = "John Doe"; 285c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuconst char kTestSupervisedUserPassword[] = "simplepassword"; 295c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class SupervisedUsersSyncTestAdapter { 315c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu public: 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) explicit SupervisedUsersSyncTestAdapter(Profile* profile); 335c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 345c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu bool HasChanges() { return !processor_->changes().empty(); } 355c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 365c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu scoped_ptr< ::sync_pb::ManagedUserSpecifics> GetFirstChange(); 375c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 385c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu void AddChange(const ::sync_pb::ManagedUserSpecifics& proto, bool update); 395c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 405c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu syncer::FakeSyncChangeProcessor* processor_; 41f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) SupervisedUserSyncService* service_; 425c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu int next_sync_data_id_; 435c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}; 445c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class SupervisedUsersSharedSettingsSyncTestAdapter { 465c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu public: 475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) explicit SupervisedUsersSharedSettingsSyncTestAdapter(Profile* profile); 485c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 495c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu bool HasChanges() { return !processor_->changes().empty(); } 505c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 515c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu scoped_ptr< ::sync_pb::ManagedUserSharedSettingSpecifics> GetFirstChange(); 525c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 535c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu void AddChange(const ::sync_pb::ManagedUserSharedSettingSpecifics& proto, 545c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu bool update); 555c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 565c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu void AddChange(const std::string& mu_id, 575c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const std::string& key, 585c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const base::Value& value, 595c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu bool acknowledged, 605c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu bool update); 615c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 625c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu syncer::FakeSyncChangeProcessor* processor_; 63f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) SupervisedUserSharedSettingsService* service_; 645c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu int next_sync_data_id_; 655c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}; 665c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class SupervisedUserTestBase : public chromeos::LoginManagerTest { 685c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu public: 695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SupervisedUserTestBase(); 705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual ~SupervisedUserTestBase(); 715c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 725c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu virtual void SetUpInProcessBrowserTestFixture() OVERRIDE; 735c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 745c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu protected: 755c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu virtual void TearDown() OVERRIDE; 765c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 775c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu virtual void TearDownInProcessBrowserTestFixture() OVERRIDE; 785c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 795c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu void JSEval(const std::string& script); 805c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 815c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu void JSExpectAsync(const std::string& function); 825c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 835c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu void JSSetTextField(const std::string& element_selector, 845c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const std::string& value); 855c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 865c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu void PrepareUsers(); 875c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu void StartFlowLoginAsManager(); 885c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu void FillNewUserData(const std::string& display_name); 895c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu void StartUserCreation(const std::string& button_id, 905c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const std::string& expected_display_name); 915c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu void SigninAsSupervisedUser(bool check_homedir_calls, 925c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu int user_index, 935c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const std::string& expected_display_name); 945c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu void SigninAsManager(int user_index); 951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void RemoveSupervisedUser(size_t original_user_count, 965c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu int user_index, 975c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const std::string& expected_display_name); 985c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 995c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu cryptohome::MockAsyncMethodCaller* mock_async_method_caller_; 1005c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu cryptohome::MockHomedirMethods* mock_homedir_methods_; 1015c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu NetworkPortalDetectorTestImpl* network_portal_detector_; 102f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) SupervisedUserRegistrationUtilityStub* registration_utility_stub_; 103f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) scoped_ptr<ScopedTestingSupervisedUserRegistrationUtility> scoped_utility_; 1045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_ptr<SupervisedUsersSharedSettingsSyncTestAdapter> 1055c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu shared_settings_adapter_; 1065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_ptr<SupervisedUsersSyncTestAdapter> supervised_users_adapter_; 1075c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 1085c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu private: 1095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(SupervisedUserTestBase); 1105c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}; 1115c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 1125c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} // namespace chromeos 1135c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 1145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif // CHROME_BROWSER_CHROMEOS_LOGIN_SUPERVISED_SUPERVISED_USER_TEST_BASE_H_ 115