Home | History | Annotate | Download | only in login
      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 "base/compiler_specific.h"
      6 #include "chrome/browser/chromeos/login/screens/user_selection_screen.h"
      7 #include "chrome/browser/chromeos/login/users/fake_user_manager.h"
      8 #include "chrome/browser/chromeos/login/users/multi_profile_user_controller.h"
      9 #include "chrome/browser/chromeos/login/users/multi_profile_user_controller_delegate.h"
     10 #include "chrome/browser/chromeos/login/users/user.h"
     11 #include "chrome/browser/signin/screenlock_bridge.h"
     12 #include "chrome/test/base/testing_browser_process.h"
     13 #include "chrome/test/base/testing_profile_manager.h"
     14 #include "testing/gtest/include/gtest/gtest.h"
     15 
     16 namespace {
     17 
     18 const char* kOwner = "owner (at) gmail.com";
     19 const char* kUsers[] = {"a (at) gmail.com", "b (at) gmail.com", kOwner};
     20 
     21 }  // namespace
     22 
     23 namespace chromeos {
     24 
     25 class SigninPrepareUserListTest
     26     : public testing::Test,
     27       public MultiProfileUserControllerDelegate {
     28  public:
     29   SigninPrepareUserListTest()
     30       : fake_user_manager_(new FakeUserManager()),
     31         user_manager_enabler_(fake_user_manager_) {
     32   }
     33 
     34   virtual ~SigninPrepareUserListTest() {
     35   }
     36 
     37   virtual void SetUp() OVERRIDE {
     38     profile_manager_.reset(
     39         new TestingProfileManager(TestingBrowserProcess::GetGlobal()));
     40     ASSERT_TRUE(profile_manager_->SetUp());
     41     controller_.reset(new MultiProfileUserController(
     42         this, TestingBrowserProcess::GetGlobal()->local_state()));
     43     fake_user_manager_->set_multi_profile_user_controller(controller_.get());
     44 
     45     for (size_t i = 0; i < arraysize(kUsers); ++i) {
     46       const std::string user_email(kUsers[i]);
     47       fake_user_manager_->AddUser(user_email);
     48     }
     49     fake_user_manager_->set_owner_email(kUsers[2]);
     50   }
     51 
     52   virtual void TearDown() OVERRIDE {
     53     controller_.reset();
     54     profile_manager_.reset();
     55   }
     56 
     57   // MultiProfileUserControllerDelegate overrides:
     58   virtual void OnUserNotAllowed(const std::string& user_email) OVERRIDE {
     59   }
     60 
     61   FakeUserManager* fake_user_manager_;
     62   ScopedUserManagerEnabler user_manager_enabler_;
     63   scoped_ptr<TestingProfileManager> profile_manager_;
     64   std::map<std::string,
     65            ScreenlockBridge::LockHandler::AuthType> user_auth_type_map;
     66   scoped_ptr<MultiProfileUserController> controller_;
     67 
     68   DISALLOW_COPY_AND_ASSIGN(SigninPrepareUserListTest);
     69 };
     70 
     71 TEST_F(SigninPrepareUserListTest, BasicList) {
     72   UserList users_to_send = UserSelectionScreen::PrepareUserListForSending(
     73       fake_user_manager_->GetUsers(),
     74       kOwner,
     75       true /* is signin to add */);
     76 
     77   size_t list_length = 3;
     78   EXPECT_EQ(list_length, users_to_send.size());
     79 }
     80 
     81 }  // namespace chromeos
     82