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_manager_test.h" 13 #include "chrome/browser/chromeos/login/managed/managed_user_test_base.h" 14 #include "chrome/browser/chromeos/login/managed/supervised_user_authentication.h" 15 #include "chrome/browser/chromeos/login/startup_utils.h" 16 #include "chrome/browser/chromeos/login/ui/login_display_host_impl.h" 17 #include "chrome/browser/chromeos/login/ui/webui_login_view.h" 18 #include "chrome/browser/chromeos/login/users/supervised_user_manager.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/supervised_user/supervised_user_constants.h" 22 #include "chrome/browser/supervised_user/supervised_user_registration_utility.h" 23 #include "chrome/browser/supervised_user/supervised_user_registration_utility_stub.h" 24 #include "chrome/browser/supervised_user/supervised_user_shared_settings_service.h" 25 #include "chrome/browser/supervised_user/supervised_user_shared_settings_service_factory.h" 26 #include "chrome/browser/supervised_user/supervised_user_sync_service.h" 27 #include "chrome/browser/supervised_user/supervised_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 DISABLED_PRE_PRE_PRE_CreateAndRemoveSupervisedUser) { 94 PrepareUsers(); 95 } 96 97 IN_PROC_BROWSER_TEST_F(SupervisedUserCreationTest, 98 DISABLED_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 DISABLED_PRE_CreateAndRemoveSupervisedUser) { 107 SigninAsSupervisedUser(true, 0, kTestSupervisedUserDisplayName); 108 } 109 110 IN_PROC_BROWSER_TEST_F(SupervisedUserCreationTest, 111 DISABLED_CreateAndRemoveSupervisedUser) { 112 RemoveSupervisedUser(3, 0, kTestSupervisedUserDisplayName); 113 } 114 115 IN_PROC_BROWSER_TEST_F(SupervisedUserOwnerCreationTest, 116 DISABLED_PRE_PRE_PRE_CreateAndRemoveSupervisedUser) { 117 PrepareUsers(); 118 } 119 120 IN_PROC_BROWSER_TEST_F(SupervisedUserOwnerCreationTest, 121 DISABLED_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 DISABLED_PRE_CreateAndRemoveSupervisedUser) { 130 SigninAsSupervisedUser(true, 0, kTestSupervisedUserDisplayName); 131 } 132 133 IN_PROC_BROWSER_TEST_F(SupervisedUserOwnerCreationTest, 134 DISABLED_CreateAndRemoveSupervisedUser) { 135 RemoveSupervisedUser(3, 0, kTestSupervisedUserDisplayName); 136 } 137 138 IN_PROC_BROWSER_TEST_F(SupervisedUserTransactionCleanupTest, 139 DISABLED_PRE_PRE_CreateAndCancelSupervisedUser) { 140 PrepareUsers(); 141 } 142 143 IN_PROC_BROWSER_TEST_F(SupervisedUserTransactionCleanupTest, 144 DISABLED_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_->supervised_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 DISABLED_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 178