Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3161)

Unified Diff: chrome/browser/chromeos/login/update_screen_browsertest.cc

Issue 3130044: Added browser test for the OOBE update screen.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/chromeos/login/update_screen.cc ('k') | chrome/browser/chromeos/login/update_view.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/chromeos/login/update_screen_browsertest.cc
===================================================================
--- chrome/browser/chromeos/login/update_screen_browsertest.cc (revision 0)
+++ chrome/browser/chromeos/login/update_screen_browsertest.cc (revision 0)
@@ -0,0 +1,248 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/chromeos/cros/mock_login_library.h"
+#include "chrome/browser/chromeos/cros/mock_update_library.h"
+#include "chrome/browser/chromeos/login/mock_screen_observer.h"
+#include "chrome/browser/chromeos/login/update_screen.h"
+#include "chrome/browser/chromeos/login/wizard_controller.h"
+#include "chrome/browser/chromeos/login/wizard_in_process_browser_test.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace chromeos {
+using ::testing::_;
+using ::testing::AtLeast;
+using ::testing::Return;
+using ::testing::ReturnRef;
+
+class UpdateScreenTest : public WizardInProcessBrowserTest {
+ public:
+ UpdateScreenTest() : WizardInProcessBrowserTest("update"),
+ mock_login_library_(NULL),
+ mock_update_library_(NULL) {}
+
+ protected:
+ virtual void SetUpInProcessBrowserTestFixture() {
+ WizardInProcessBrowserTest::SetUpInProcessBrowserTestFixture();
+ cros_mock_->InitStatusAreaMocks();
+ cros_mock_->SetStatusAreaMocksExpectations();
+ ASSERT_TRUE(CrosLibrary::Get()->EnsureLoaded());
+
+ mock_login_library_ = new MockLoginLibrary();
+ cros_mock_->test_api()->SetLoginLibrary(mock_login_library_, true);
+ EXPECT_CALL(*mock_login_library_, EmitLoginPromptReady())
+ .Times(1);
+
+ mock_update_library_ = new MockUpdateLibrary();
+ cros_mock_->test_api()->SetUpdateLibrary(mock_update_library_, true);
+
+ // UpdateScreen::StartUpdate() will be called by the WizardController
+ // just after creating the update screen, so the expectations for that
+ // should be set up here.
+ EXPECT_CALL(*mock_update_library_, AddObserver(_))
+ .Times(1);
+ EXPECT_CALL(*mock_update_library_, RemoveObserver(_))
+ .Times(AtLeast(1));
+ EXPECT_CALL(*mock_update_library_, CheckForUpdate())
+ .Times(1)
+ .WillOnce(Return(true));
+ }
+
+ virtual void TearDownInProcessBrowserTestFixture() {
+ cros_mock_->test_api()->SetUpdateLibrary(NULL, true);
+ WizardInProcessBrowserTest::TearDownInProcessBrowserTestFixture();
+ }
+
+ MockLoginLibrary* mock_login_library_;
+ MockUpdateLibrary* mock_update_library_;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(UpdateScreenTest);
+};
+
+IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestBasic) {
+ ASSERT_TRUE(controller() != NULL);
+ scoped_ptr<MockScreenObserver> mock_screen_observer(new MockScreenObserver());
+ controller()->set_observer(mock_screen_observer.get());
+ UpdateScreen* update_screen = controller()->GetUpdateScreen();
+ ASSERT_TRUE(update_screen != NULL);
+ ASSERT_EQ(controller()->current_screen(), update_screen);
+ UpdateView* update_view = update_screen->view();
+ ASSERT_TRUE(update_view != NULL);
+ controller()->set_observer(NULL);
+}
+
+IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestNoUpdate) {
+ ASSERT_TRUE(controller() != NULL);
+ scoped_ptr<MockScreenObserver> mock_screen_observer(new MockScreenObserver());
+ controller()->set_observer(mock_screen_observer.get());
+ UpdateScreen* update_screen = controller()->GetUpdateScreen();
+ ASSERT_TRUE(update_screen != NULL);
+ ASSERT_EQ(controller()->current_screen(), update_screen);
+ update_screen->SetMinimalUpdateTime(0);
+
+ UpdateLibrary::Status status;
+ status.status = UPDATE_STATUS_IDLE;
+ EXPECT_CALL(*mock_update_library_, status())
+ .Times(AtLeast(1))
+ .WillRepeatedly(ReturnRef(status));
+ EXPECT_CALL(*mock_screen_observer, OnExit(ScreenObserver::UPDATE_NOUPDATE))
+ .Times(1);
+ update_screen->UpdateStatusChanged(mock_update_library_);
+
+ controller()->set_observer(NULL);
+}
+
+IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestUpdateAvailable) {
+ ASSERT_TRUE(controller() != NULL);
+ scoped_ptr<MockScreenObserver> mock_screen_observer(new MockScreenObserver());
+ controller()->set_observer(mock_screen_observer.get());
+ UpdateScreen* update_screen = controller()->GetUpdateScreen();
+ ASSERT_TRUE(update_screen != NULL);
+ ASSERT_EQ(controller()->current_screen(), update_screen);
+ update_screen->SetMinimalUpdateTime(0);
+
+ UpdateLibrary::Status status;
+
+ status.status = UPDATE_STATUS_UPDATE_AVAILABLE;
+ status.new_version = "latest and greatest";
+ EXPECT_CALL(*mock_update_library_, status())
+ .Times(AtLeast(1))
+ .WillRepeatedly(ReturnRef(status));
+ update_screen->UpdateStatusChanged(mock_update_library_);
+
+ status.status = UPDATE_STATUS_DOWNLOADING;
+ status.download_progress = 0.0;
+ EXPECT_CALL(*mock_update_library_, status())
+ .Times(AtLeast(1))
+ .WillRepeatedly(ReturnRef(status));
+ update_screen->UpdateStatusChanged(mock_update_library_);
+
+ status.download_progress = 0.5;
+ EXPECT_CALL(*mock_update_library_, status())
+ .Times(AtLeast(1))
+ .WillRepeatedly(ReturnRef(status));
+ update_screen->UpdateStatusChanged(mock_update_library_);
+
+ status.download_progress = 1.0;
+ EXPECT_CALL(*mock_update_library_, status())
+ .Times(AtLeast(1))
+ .WillRepeatedly(ReturnRef(status));
+ update_screen->UpdateStatusChanged(mock_update_library_);
+
+ status.status = UPDATE_STATUS_VERIFYING;
+ EXPECT_CALL(*mock_update_library_, status())
+ .Times(AtLeast(1))
+ .WillRepeatedly(ReturnRef(status));
+ update_screen->UpdateStatusChanged(mock_update_library_);
+
+ status.status = UPDATE_STATUS_FINALIZING;
+ EXPECT_CALL(*mock_update_library_, status())
+ .Times(AtLeast(1))
+ .WillRepeatedly(ReturnRef(status));
+ update_screen->UpdateStatusChanged(mock_update_library_);
+
+ status.status = UPDATE_STATUS_UPDATED_NEED_REBOOT;
+ EXPECT_CALL(*mock_update_library_, status())
+ .Times(AtLeast(1))
+ .WillRepeatedly(ReturnRef(status));
+ EXPECT_CALL(*mock_update_library_, RebootAfterUpdate())
+ .Times(1);
+ update_screen->UpdateStatusChanged(mock_update_library_);
+
+ controller()->set_observer(NULL);
+}
+
+IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestErrorIssuingUpdateCheck) {
+ ASSERT_TRUE(controller() != NULL);
+ scoped_ptr<MockScreenObserver> mock_screen_observer(new MockScreenObserver());
+ controller()->set_observer(mock_screen_observer.get());
+ UpdateScreen* update_screen = controller()->GetUpdateScreen();
+ ASSERT_TRUE(update_screen != NULL);
+ ASSERT_EQ(controller()->current_screen(), update_screen);
+ update_screen->SetMinimalUpdateTime(0);
+
+ UpdateLibrary::Status status;
+
+ // First, cancel the update that is already in progress.
+ EXPECT_CALL(*mock_update_library_, status())
+ .Times(AtLeast(1))
+ .WillRepeatedly(ReturnRef(status));
+ update_screen->CancelUpdate();
+
+ // Run UpdateScreen::StartUpdate() again, but CheckForUpdate() will fail
+ // issuing the update check this time.
+ EXPECT_CALL(*mock_update_library_, AddObserver(_))
+ .Times(1);
+ EXPECT_CALL(*mock_update_library_, RemoveObserver(_))
+ .Times(AtLeast(1));
+ EXPECT_CALL(*mock_update_library_, CheckForUpdate())
+ .Times(1)
+ .WillOnce(Return(false));
+
+ status.status = UPDATE_STATUS_ERROR;
+ EXPECT_CALL(*mock_update_library_, status())
+ .Times(AtLeast(1))
+ .WillRepeatedly(ReturnRef(status));
+ EXPECT_CALL(*mock_screen_observer,
+ OnExit(ScreenObserver::UPDATE_ERROR_CHECKING_FOR_UPDATE))
+ .Times(1);
+ update_screen->StartUpdate();
+
+ controller()->set_observer(NULL);
+}
+
+IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestErrorCheckingForUpdate) {
+ ASSERT_TRUE(controller() != NULL);
+ scoped_ptr<MockScreenObserver> mock_screen_observer(new MockScreenObserver());
+ controller()->set_observer(mock_screen_observer.get());
+ UpdateScreen* update_screen = controller()->GetUpdateScreen();
+ ASSERT_TRUE(update_screen != NULL);
+ ASSERT_EQ(controller()->current_screen(), update_screen);
+ update_screen->SetMinimalUpdateTime(0);
+
+ UpdateLibrary::Status status;
+ status.status = UPDATE_STATUS_ERROR;
+ EXPECT_CALL(*mock_update_library_, status())
+ .Times(AtLeast(1))
+ .WillRepeatedly(ReturnRef(status));
+ EXPECT_CALL(*mock_screen_observer,
+ OnExit(ScreenObserver::UPDATE_ERROR_CHECKING_FOR_UPDATE))
+ .Times(1);
+ update_screen->UpdateStatusChanged(mock_update_library_);
+
+ controller()->set_observer(NULL);
+}
+
+IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestErrorUpdating) {
+ ASSERT_TRUE(controller() != NULL);
+ scoped_ptr<MockScreenObserver> mock_screen_observer(new MockScreenObserver());
+ controller()->set_observer(mock_screen_observer.get());
+ UpdateScreen* update_screen = controller()->GetUpdateScreen();
+ ASSERT_TRUE(update_screen != NULL);
+ ASSERT_EQ(controller()->current_screen(), update_screen);
+ update_screen->SetMinimalUpdateTime(0);
+
+ UpdateLibrary::Status status;
+
+ status.status = UPDATE_STATUS_UPDATE_AVAILABLE;
+ status.new_version = "latest and greatest";
+ EXPECT_CALL(*mock_update_library_, status())
+ .Times(AtLeast(1))
+ .WillRepeatedly(ReturnRef(status));
+ update_screen->UpdateStatusChanged(mock_update_library_);
+
+ status.status = UPDATE_STATUS_ERROR;
+ EXPECT_CALL(*mock_update_library_, status())
+ .Times(AtLeast(1))
+ .WillRepeatedly(ReturnRef(status));
+ EXPECT_CALL(*mock_screen_observer,
+ OnExit(ScreenObserver::UPDATE_ERROR_UPDATING))
+ .Times(1);
+ update_screen->UpdateStatusChanged(mock_update_library_);
+
+ controller()->set_observer(NULL);
+}
+
+} // namespace chromeos
Property changes on: chrome/browser/chromeos/login/update_screen_browsertest.cc
___________________________________________________________________
Added: svn:eol-style
+ LF
« no previous file with comments | « chrome/browser/chromeos/login/update_screen.cc ('k') | chrome/browser/chromeos/login/update_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698