Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / chromeos / login / managed / managed_user_creation_browsertest.cc
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
5 #include <string>
6
7 #include "base/compiler_specific.h"
8 #include "base/run_loop.h"
9 #include "base/strings/utf_string_conversions.h"
10 #include "base/threading/sequenced_worker_pool.h"
11 #include "chrome/browser/chrome_notification_types.h"
12 #include "chrome/browser/chromeos/login/login_display_host_impl.h"
13 #include "chrome/browser/chromeos/login/login_manager_test.h"
14 #include "chrome/browser/chromeos/login/managed/managed_user_test_base.h"
15 #include "chrome/browser/chromeos/login/managed/supervised_user_authentication.h"
16 #include "chrome/browser/chromeos/login/startup_utils.h"
17 #include "chrome/browser/chromeos/login/supervised_user_manager.h"
18 #include "chrome/browser/chromeos/login/webui_login_view.h"
19 #include "chrome/browser/chromeos/net/network_portal_detector_test_impl.h"
20 #include "chrome/browser/chromeos/settings/stub_cros_settings_provider.h"
21 #include "chrome/browser/managed_mode/managed_user_constants.h"
22 #include "chrome/browser/managed_mode/managed_user_registration_utility.h"
23 #include "chrome/browser/managed_mode/managed_user_registration_utility_stub.h"
24 #include "chrome/browser/managed_mode/managed_user_shared_settings_service.h"
25 #include "chrome/browser/managed_mode/managed_user_shared_settings_service_factory.h"
26 #include "chrome/browser/managed_mode/managed_user_sync_service.h"
27 #include "chrome/browser/managed_mode/managed_user_sync_service_factory.h"
28 #include "chromeos/cryptohome/mock_async_method_caller.h"
29 #include "chromeos/cryptohome/mock_homedir_methods.h"
30 #include "content/public/browser/notification_service.h"
31 #include "content/public/test/browser_test_utils.h"
32 #include "content/public/test/test_utils.h"
33 #include "sync/api/attachments/attachment_service_proxy_for_test.h"
34 #include "sync/api/fake_sync_change_processor.h"
35 #include "sync/api/sync_change.h"
36 #include "sync/api/sync_error_factory_mock.h"
37 #include "sync/protocol/sync.pb.h"
38
39 using testing::_;
40 using chromeos::ManagedUserTestBase;
41 using chromeos::kTestSupervisedUserDisplayName;
42 using chromeos::kTestManager;
43
44 namespace chromeos {
45
46 class SupervisedUserCreationTest : public ManagedUserTestBase {
47  public:
48   SupervisedUserCreationTest() : ManagedUserTestBase() {}
49
50  private:
51   DISALLOW_COPY_AND_ASSIGN(SupervisedUserCreationTest);
52 };
53
54 class SupervisedUserTransactionCleanupTest : public ManagedUserTestBase {
55  public:
56   SupervisedUserTransactionCleanupTest() : ManagedUserTestBase() {}
57
58  private:
59   DISALLOW_COPY_AND_ASSIGN(SupervisedUserTransactionCleanupTest);
60 };
61
62 class SupervisedUserOwnerCreationTest : public ManagedUserTestBase {
63  public:
64   SupervisedUserOwnerCreationTest() : ManagedUserTestBase() {}
65
66   virtual void SetUpInProcessBrowserTestFixture() OVERRIDE {
67     ManagedUserTestBase::SetUpInProcessBrowserTestFixture();
68     cros_settings_provider_.reset(new StubCrosSettingsProvider());
69     cros_settings_provider_->Set(kDeviceOwner, base::StringValue(kTestManager));
70   }
71
72  private:
73   scoped_ptr<StubCrosSettingsProvider> cros_settings_provider_;
74   DISALLOW_COPY_AND_ASSIGN(SupervisedUserOwnerCreationTest);
75 };
76
77 class SupervisedUserTransactionCleanupTest2
78     : public SupervisedUserTransactionCleanupTest {
79  public:
80   SupervisedUserTransactionCleanupTest2()
81       : SupervisedUserTransactionCleanupTest() {}
82
83   virtual void SetUpInProcessBrowserTestFixture() OVERRIDE {
84     SupervisedUserTransactionCleanupTest::SetUpInProcessBrowserTestFixture();
85     EXPECT_CALL(*mock_async_method_caller_, AsyncRemove(_, _)).Times(1);
86   }
87
88  private:
89   DISALLOW_COPY_AND_ASSIGN(SupervisedUserTransactionCleanupTest2);
90 };
91
92 IN_PROC_BROWSER_TEST_F(SupervisedUserCreationTest,
93                        PRE_PRE_PRE_CreateAndRemoveSupervisedUser) {
94   PrepareUsers();
95 }
96
97 IN_PROC_BROWSER_TEST_F(SupervisedUserCreationTest,
98                        PRE_PRE_CreateAndRemoveSupervisedUser) {
99   StartFlowLoginAsManager();
100   FillNewUserData(kTestSupervisedUserDisplayName);
101   StartUserCreation("managed-user-creation-next-button",
102                     kTestSupervisedUserDisplayName);
103 }
104
105 IN_PROC_BROWSER_TEST_F(SupervisedUserCreationTest,
106                        PRE_CreateAndRemoveSupervisedUser) {
107   SigninAsSupervisedUser(true, 0, kTestSupervisedUserDisplayName);
108 }
109
110 IN_PROC_BROWSER_TEST_F(SupervisedUserCreationTest,
111                        CreateAndRemoveSupervisedUser) {
112   RemoveSupervisedUser(3, 0, kTestSupervisedUserDisplayName);
113 }
114
115 IN_PROC_BROWSER_TEST_F(SupervisedUserOwnerCreationTest,
116                        PRE_PRE_PRE_CreateAndRemoveSupervisedUser) {
117   PrepareUsers();
118 }
119
120 IN_PROC_BROWSER_TEST_F(SupervisedUserOwnerCreationTest,
121                        PRE_PRE_CreateAndRemoveSupervisedUser) {
122   StartFlowLoginAsManager();
123   FillNewUserData(kTestSupervisedUserDisplayName);
124   StartUserCreation("managed-user-creation-next-button",
125                     kTestSupervisedUserDisplayName);
126 }
127
128 IN_PROC_BROWSER_TEST_F(SupervisedUserOwnerCreationTest,
129                        PRE_CreateAndRemoveSupervisedUser) {
130   SigninAsSupervisedUser(true, 0, kTestSupervisedUserDisplayName);
131 }
132
133 IN_PROC_BROWSER_TEST_F(SupervisedUserOwnerCreationTest,
134                        CreateAndRemoveSupervisedUser) {
135   RemoveSupervisedUser(3, 0, kTestSupervisedUserDisplayName);
136 }
137
138 IN_PROC_BROWSER_TEST_F(SupervisedUserTransactionCleanupTest,
139                        PRE_PRE_CreateAndCancelSupervisedUser) {
140   PrepareUsers();
141 }
142
143 IN_PROC_BROWSER_TEST_F(SupervisedUserTransactionCleanupTest,
144                        PRE_CreateAndCancelSupervisedUser) {
145   StartFlowLoginAsManager();
146   FillNewUserData(kTestSupervisedUserDisplayName);
147
148   EXPECT_CALL(*mock_homedir_methods_, MountEx(_, _, _, _)).Times(1);
149   EXPECT_CALL(*mock_homedir_methods_, AddKeyEx(_, _, _, _, _)).Times(1);
150
151   JSEval("$('managed-user-creation-next-button').click()");
152
153   testing::Mock::VerifyAndClearExpectations(mock_homedir_methods_);
154
155   EXPECT_TRUE(registration_utility_stub_->register_was_called());
156   EXPECT_EQ(registration_utility_stub_->display_name(),
157             base::UTF8ToUTF16(kTestSupervisedUserDisplayName));
158
159   std::string user_id = registration_utility_stub_->managed_user_id();
160
161   // Make sure user is already in list.
162   ASSERT_EQ(3UL, UserManager::Get()->GetUsers().size());
163
164   // We wait for token now. Press cancel button at this point.
165   JSEval("$('cancel-add-user-button').click()");
166 }
167
168 IN_PROC_BROWSER_TEST_(
169     SupervisedUserTransactionCleanupTest,
170     CreateAndCancelSupervisedUser,
171     SupervisedUserTransactionCleanupTest2,
172     testing::internal::GetTypeId<SupervisedUserTransactionCleanupTest>()) {
173   // Make sure there is no supervised user in list.
174   ASSERT_EQ(2UL, UserManager::Get()->GetUsers().size());
175 }
176
177 }  // namespace chromeos