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 "chrome/browser/drive/drive_notification_manager_factory.h"
6
7#include "base/command_line.h"
8#include "base/compiler_specific.h"
9#include "chrome/browser/chromeos/profiles/profile_helper.h"
10#include "chrome/browser/profiles/profile.h"
11#include "chrome/common/chrome_switches.h"
12#include "chrome/test/base/in_process_browser_test.h"
13#include "chromeos/chromeos_switches.h"
14#include "chromeos/login/user_names.h"
15#include "components/user_manager/user_manager.h"
16#include "testing/gtest/include/gtest/gtest.h"
17
18namespace drive {
19
20class DriveNotificationManagerFactoryLoginScreenBrowserTest
21    : public InProcessBrowserTest {
22 protected:
23  virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
24    command_line->AppendSwitch(chromeos::switches::kLoginManager);
25    command_line->AppendSwitchASCII(chromeos::switches::kLoginProfile, "user");
26  }
27};
28
29// Verify that no DriveNotificationManager is instantiated for the sign-in
30// profile on the login screen.
31IN_PROC_BROWSER_TEST_F(DriveNotificationManagerFactoryLoginScreenBrowserTest,
32                       NoDriveNotificationManager) {
33  Profile* signin_profile =
34      chromeos::ProfileHelper::GetSigninProfile()->GetOriginalProfile();
35  EXPECT_FALSE(DriveNotificationManagerFactory::FindForBrowserContext(
36      signin_profile));
37}
38
39class DriveNotificationManagerFactoryGuestBrowserTest
40    : public InProcessBrowserTest {
41 protected:
42  virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
43    command_line->AppendSwitch(chromeos::switches::kGuestSession);
44    command_line->AppendSwitch(::switches::kIncognito);
45    command_line->AppendSwitchASCII(chromeos::switches::kLoginProfile, "user");
46    command_line->AppendSwitchASCII(chromeos::switches::kLoginUser,
47                                    chromeos::login::kGuestUserName);
48  }
49};
50
51// Verify that no DriveNotificationManager is instantiated for the sign-in
52// profile or the guest profile while a guest session is in progress.
53IN_PROC_BROWSER_TEST_F(DriveNotificationManagerFactoryGuestBrowserTest,
54                       NoDriveNotificationManager) {
55  user_manager::UserManager* user_manager = user_manager::UserManager::Get();
56  EXPECT_TRUE(user_manager->IsLoggedInAsGuest());
57  Profile* guest_profile =
58      chromeos::ProfileHelper::Get()
59          ->GetProfileByUserUnsafe(user_manager->GetActiveUser())
60          ->GetOriginalProfile();
61  Profile* signin_profile =
62      chromeos::ProfileHelper::GetSigninProfile()->GetOriginalProfile();
63  EXPECT_FALSE(DriveNotificationManagerFactory::FindForBrowserContext(
64      guest_profile));
65  EXPECT_FALSE(DriveNotificationManagerFactory::FindForBrowserContext(
66      signin_profile));
67}
68
69}  // namespace drive
70