Home | History | Annotate | Download | only in managed
      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