tray_supervised_user_unittest.cc revision 5f1c94371a64b3196d4be9466099bb892df9b88e
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 "ash/system/chromeos/supervised/tray_supervised_user.h" 6 7#include "ash/shell.h" 8#include "ash/system/user/login_status.h" 9#include "ash/test/ash_test_base.h" 10#include "ash/test/test_system_tray_delegate.h" 11#include "ui/message_center/message_center.h" 12#include "ui/message_center/notification.h" 13#include "ui/message_center/notification_list.h" 14#include "ui/message_center/notification_types.h" 15 16using message_center::NotificationList; 17 18namespace ash { 19 20class TraySupervisedUserTest : public test::AshTestBase { 21 public: 22 TraySupervisedUserTest() {} 23 virtual ~TraySupervisedUserTest() {} 24 25 protected: 26 message_center::Notification* GetPopup(); 27 28 private: 29 DISALLOW_COPY_AND_ASSIGN(TraySupervisedUserTest); 30}; 31 32message_center::Notification* TraySupervisedUserTest::GetPopup() { 33 NotificationList::PopupNotifications popups = 34 message_center::MessageCenter::Get()->GetPopupNotifications(); 35 for (NotificationList::PopupNotifications::const_iterator iter = 36 popups.begin(); iter != popups.end(); ++iter) { 37 if ((*iter)->id() == TraySupervisedUser::kNotificationId) 38 return *iter; 39 } 40 return NULL; 41} 42 43class TraySupervisedUserInitialTest : public TraySupervisedUserTest { 44 public: 45 TraySupervisedUserInitialTest() {} 46 virtual ~TraySupervisedUserInitialTest() {} 47 48 virtual void SetUp() OVERRIDE; 49 virtual void TearDown() OVERRIDE; 50 51 private: 52 DISALLOW_COPY_AND_ASSIGN(TraySupervisedUserInitialTest); 53}; 54 55void TraySupervisedUserInitialTest::SetUp() { 56 test::TestSystemTrayDelegate::SetInitialLoginStatus( 57 user::LOGGED_IN_SUPERVISED); 58 test::AshTestBase::SetUp(); 59} 60 61void TraySupervisedUserInitialTest::TearDown() { 62 test::AshTestBase::TearDown(); 63 // SetInitialLoginStatus() is reset in AshTestHelper::TearDown(). 64} 65 66TEST_F(TraySupervisedUserTest, SupervisedUserHasNotification) { 67 test::TestSystemTrayDelegate* delegate = 68 static_cast<test::TestSystemTrayDelegate*>( 69 ash::Shell::GetInstance()->system_tray_delegate()); 70 delegate->SetLoginStatus(user::LOGGED_IN_SUPERVISED); 71 72 message_center::Notification* notification = GetPopup(); 73 ASSERT_NE(static_cast<message_center::Notification*>(NULL), notification); 74 EXPECT_EQ(static_cast<int>(message_center::SYSTEM_PRIORITY), 75 notification->rich_notification_data().priority); 76} 77 78TEST_F(TraySupervisedUserInitialTest, SupervisedUserNoCrash) { 79 // Initial login status is already SUPERVISED, which should create 80 // the notification and should not cause crashes. 81 message_center::Notification* notification = GetPopup(); 82 ASSERT_NE(static_cast<message_center::Notification*>(NULL), notification); 83 EXPECT_EQ(static_cast<int>(message_center::SYSTEM_PRIORITY), 84 notification->rich_notification_data().priority); 85} 86 87} // namespace 88