Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / chromeos / login / supervised / supervised_user_test_base.h
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 #ifndef CHROME_BROWSER_CHROMEOS_LOGIN_SUPERVISED_SUPERVISED_USER_TEST_BASE_H_
5 #define CHROME_BROWSER_CHROMEOS_LOGIN_SUPERVISED_SUPERVISED_USER_TEST_BASE_H_
6
7 #include <string>
8
9 #include "base/compiler_specific.h"
10 #include "chrome/browser/chromeos/login/login_manager_test.h"
11 #include "chrome/browser/chromeos/net/network_portal_detector_test_impl.h"
12 #include "chrome/browser/profiles/profile.h"
13 #include "chrome/browser/supervised_user/supervised_user_registration_utility_stub.h"
14 #include "chromeos/cryptohome/mock_async_method_caller.h"
15 #include "chromeos/cryptohome/mock_homedir_methods.h"
16 #include "sync/api/fake_sync_change_processor.h"
17 #include "sync/api/sync_change.h"
18 #include "sync/api/sync_error_factory_mock.h"
19 #include "sync/protocol/sync.pb.h"
20
21 namespace chromeos {
22
23 const char kTestManager[] = "test-manager@gmail.com";
24 const char kTestOtherUser[] = "test-user@gmail.com";
25
26 const char kTestManagerPassword[] = "password";
27 const char kTestSupervisedUserDisplayName[] = "John Doe";
28 const char kTestSupervisedUserPassword[] = "simplepassword";
29
30 class SupervisedUsersSyncTestAdapter {
31  public:
32   explicit SupervisedUsersSyncTestAdapter(Profile* profile);
33
34   bool HasChanges() { return !processor_->changes().empty(); }
35
36   scoped_ptr< ::sync_pb::ManagedUserSpecifics> GetFirstChange();
37
38   void AddChange(const ::sync_pb::ManagedUserSpecifics& proto, bool update);
39
40   syncer::FakeSyncChangeProcessor* processor_;
41   SupervisedUserSyncService* service_;
42   int next_sync_data_id_;
43 };
44
45 class SupervisedUsersSharedSettingsSyncTestAdapter {
46  public:
47   explicit SupervisedUsersSharedSettingsSyncTestAdapter(Profile* profile);
48
49   bool HasChanges() { return !processor_->changes().empty(); }
50
51   scoped_ptr< ::sync_pb::ManagedUserSharedSettingSpecifics> GetFirstChange();
52
53   void AddChange(const ::sync_pb::ManagedUserSharedSettingSpecifics& proto,
54                  bool update);
55
56   void AddChange(const std::string& mu_id,
57                  const std::string& key,
58                  const base::Value& value,
59                  bool acknowledged,
60                  bool update);
61
62   syncer::FakeSyncChangeProcessor* processor_;
63   SupervisedUserSharedSettingsService* service_;
64   int next_sync_data_id_;
65 };
66
67 class SupervisedUserTestBase : public chromeos::LoginManagerTest {
68  public:
69   SupervisedUserTestBase();
70   virtual ~SupervisedUserTestBase();
71
72   virtual void SetUpInProcessBrowserTestFixture() OVERRIDE;
73
74  protected:
75   virtual void TearDown() OVERRIDE;
76
77   virtual void TearDownInProcessBrowserTestFixture() OVERRIDE;
78
79   void JSEval(const std::string& script);
80
81   void JSExpectAsync(const std::string& function);
82
83   void JSSetTextField(const std::string& element_selector,
84                       const std::string& value);
85
86   void PrepareUsers();
87   void StartFlowLoginAsManager();
88   void FillNewUserData(const std::string& display_name);
89   void StartUserCreation(const std::string& button_id,
90                          const std::string& expected_display_name);
91   void SigninAsSupervisedUser(bool check_homedir_calls,
92                               int user_index,
93                               const std::string& expected_display_name);
94   void SigninAsManager(int user_index);
95   void RemoveSupervisedUser(unsigned long original_user_count,
96                             int user_index,
97                             const std::string& expected_display_name);
98
99   cryptohome::MockAsyncMethodCaller* mock_async_method_caller_;
100   cryptohome::MockHomedirMethods* mock_homedir_methods_;
101   NetworkPortalDetectorTestImpl* network_portal_detector_;
102   SupervisedUserRegistrationUtilityStub* registration_utility_stub_;
103   scoped_ptr<ScopedTestingSupervisedUserRegistrationUtility> scoped_utility_;
104   scoped_ptr<SupervisedUsersSharedSettingsSyncTestAdapter>
105       shared_settings_adapter_;
106   scoped_ptr<SupervisedUsersSyncTestAdapter> supervised_users_adapter_;
107
108  private:
109   DISALLOW_COPY_AND_ASSIGN(SupervisedUserTestBase);
110 };
111
112 }  // namespace chromeos
113
114 #endif  // CHROME_BROWSER_CHROMEOS_LOGIN_SUPERVISED_SUPERVISED_USER_TEST_BASE_H_