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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
Property Changes:
Added: svn:eol-style
+ LF
OLDNEW
(Empty)
1 // Copyright (c) 2010 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/chromeos/cros/mock_login_library.h"
6 #include "chrome/browser/chromeos/cros/mock_update_library.h"
7 #include "chrome/browser/chromeos/login/mock_screen_observer.h"
8 #include "chrome/browser/chromeos/login/update_screen.h"
9 #include "chrome/browser/chromeos/login/wizard_controller.h"
10 #include "chrome/browser/chromeos/login/wizard_in_process_browser_test.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12
13 namespace chromeos {
14 using ::testing::_;
15 using ::testing::AtLeast;
16 using ::testing::Return;
17 using ::testing::ReturnRef;
18
19 class UpdateScreenTest : public WizardInProcessBrowserTest {
20 public:
21 UpdateScreenTest() : WizardInProcessBrowserTest("update"),
22 mock_login_library_(NULL),
23 mock_update_library_(NULL) {}
24
25 protected:
26 virtual void SetUpInProcessBrowserTestFixture() {
27 WizardInProcessBrowserTest::SetUpInProcessBrowserTestFixture();
28 cros_mock_->InitStatusAreaMocks();
29 cros_mock_->SetStatusAreaMocksExpectations();
30 ASSERT_TRUE(CrosLibrary::Get()->EnsureLoaded());
31
32 mock_login_library_ = new MockLoginLibrary();
33 cros_mock_->test_api()->SetLoginLibrary(mock_login_library_, true);
34 EXPECT_CALL(*mock_login_library_, EmitLoginPromptReady())
35 .Times(1);
36
37 mock_update_library_ = new MockUpdateLibrary();
38 cros_mock_->test_api()->SetUpdateLibrary(mock_update_library_, true);
39
40 // UpdateScreen::StartUpdate() will be called by the WizardController
41 // just after creating the update screen, so the expectations for that
42 // should be set up here.
43 EXPECT_CALL(*mock_update_library_, AddObserver(_))
44 .Times(1);
45 EXPECT_CALL(*mock_update_library_, RemoveObserver(_))
46 .Times(AtLeast(1));
47 EXPECT_CALL(*mock_update_library_, CheckForUpdate())
48 .Times(1)
49 .WillOnce(Return(true));
50 }
51
52 virtual void TearDownInProcessBrowserTestFixture() {
53 cros_mock_->test_api()->SetUpdateLibrary(NULL, true);
54 WizardInProcessBrowserTest::TearDownInProcessBrowserTestFixture();
55 }
56
57 MockLoginLibrary* mock_login_library_;
58 MockUpdateLibrary* mock_update_library_;
59
60 private:
61 DISALLOW_COPY_AND_ASSIGN(UpdateScreenTest);
62 };
63
64 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestBasic) {
65 ASSERT_TRUE(controller() != NULL);
66 scoped_ptr<MockScreenObserver> mock_screen_observer(new MockScreenObserver());
67 controller()->set_observer(mock_screen_observer.get());
68 UpdateScreen* update_screen = controller()->GetUpdateScreen();
69 ASSERT_TRUE(update_screen != NULL);
70 ASSERT_EQ(controller()->current_screen(), update_screen);
71 UpdateView* update_view = update_screen->view();
72 ASSERT_TRUE(update_view != NULL);
73 controller()->set_observer(NULL);
74 }
75
76 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestNoUpdate) {
77 ASSERT_TRUE(controller() != NULL);
78 scoped_ptr<MockScreenObserver> mock_screen_observer(new MockScreenObserver());
79 controller()->set_observer(mock_screen_observer.get());
80 UpdateScreen* update_screen = controller()->GetUpdateScreen();
81 ASSERT_TRUE(update_screen != NULL);
82 ASSERT_EQ(controller()->current_screen(), update_screen);
83 update_screen->SetMinimalUpdateTime(0);
84
85 UpdateLibrary::Status status;
86 status.status = UPDATE_STATUS_IDLE;
87 EXPECT_CALL(*mock_update_library_, status())
88 .Times(AtLeast(1))
89 .WillRepeatedly(ReturnRef(status));
90 EXPECT_CALL(*mock_screen_observer, OnExit(ScreenObserver::UPDATE_NOUPDATE))
91 .Times(1);
92 update_screen->UpdateStatusChanged(mock_update_library_);
93
94 controller()->set_observer(NULL);
95 }
96
97 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestUpdateAvailable) {
98 ASSERT_TRUE(controller() != NULL);
99 scoped_ptr<MockScreenObserver> mock_screen_observer(new MockScreenObserver());
100 controller()->set_observer(mock_screen_observer.get());
101 UpdateScreen* update_screen = controller()->GetUpdateScreen();
102 ASSERT_TRUE(update_screen != NULL);
103 ASSERT_EQ(controller()->current_screen(), update_screen);
104 update_screen->SetMinimalUpdateTime(0);
105
106 UpdateLibrary::Status status;
107
108 status.status = UPDATE_STATUS_UPDATE_AVAILABLE;
109 status.new_version = "latest and greatest";
110 EXPECT_CALL(*mock_update_library_, status())
111 .Times(AtLeast(1))
112 .WillRepeatedly(ReturnRef(status));
113 update_screen->UpdateStatusChanged(mock_update_library_);
114
115 status.status = UPDATE_STATUS_DOWNLOADING;
116 status.download_progress = 0.0;
117 EXPECT_CALL(*mock_update_library_, status())
118 .Times(AtLeast(1))
119 .WillRepeatedly(ReturnRef(status));
120 update_screen->UpdateStatusChanged(mock_update_library_);
121
122 status.download_progress = 0.5;
123 EXPECT_CALL(*mock_update_library_, status())
124 .Times(AtLeast(1))
125 .WillRepeatedly(ReturnRef(status));
126 update_screen->UpdateStatusChanged(mock_update_library_);
127
128 status.download_progress = 1.0;
129 EXPECT_CALL(*mock_update_library_, status())
130 .Times(AtLeast(1))
131 .WillRepeatedly(ReturnRef(status));
132 update_screen->UpdateStatusChanged(mock_update_library_);
133
134 status.status = UPDATE_STATUS_VERIFYING;
135 EXPECT_CALL(*mock_update_library_, status())
136 .Times(AtLeast(1))
137 .WillRepeatedly(ReturnRef(status));
138 update_screen->UpdateStatusChanged(mock_update_library_);
139
140 status.status = UPDATE_STATUS_FINALIZING;
141 EXPECT_CALL(*mock_update_library_, status())
142 .Times(AtLeast(1))
143 .WillRepeatedly(ReturnRef(status));
144 update_screen->UpdateStatusChanged(mock_update_library_);
145
146 status.status = UPDATE_STATUS_UPDATED_NEED_REBOOT;
147 EXPECT_CALL(*mock_update_library_, status())
148 .Times(AtLeast(1))
149 .WillRepeatedly(ReturnRef(status));
150 EXPECT_CALL(*mock_update_library_, RebootAfterUpdate())
151 .Times(1);
152 update_screen->UpdateStatusChanged(mock_update_library_);
153
154 controller()->set_observer(NULL);
155 }
156
157 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestErrorIssuingUpdateCheck) {
158 ASSERT_TRUE(controller() != NULL);
159 scoped_ptr<MockScreenObserver> mock_screen_observer(new MockScreenObserver());
160 controller()->set_observer(mock_screen_observer.get());
161 UpdateScreen* update_screen = controller()->GetUpdateScreen();
162 ASSERT_TRUE(update_screen != NULL);
163 ASSERT_EQ(controller()->current_screen(), update_screen);
164 update_screen->SetMinimalUpdateTime(0);
165
166 UpdateLibrary::Status status;
167
168 // First, cancel the update that is already in progress.
169 EXPECT_CALL(*mock_update_library_, status())
170 .Times(AtLeast(1))
171 .WillRepeatedly(ReturnRef(status));
172 update_screen->CancelUpdate();
173
174 // Run UpdateScreen::StartUpdate() again, but CheckForUpdate() will fail
175 // issuing the update check this time.
176 EXPECT_CALL(*mock_update_library_, AddObserver(_))
177 .Times(1);
178 EXPECT_CALL(*mock_update_library_, RemoveObserver(_))
179 .Times(AtLeast(1));
180 EXPECT_CALL(*mock_update_library_, CheckForUpdate())
181 .Times(1)
182 .WillOnce(Return(false));
183
184 status.status = UPDATE_STATUS_ERROR;
185 EXPECT_CALL(*mock_update_library_, status())
186 .Times(AtLeast(1))
187 .WillRepeatedly(ReturnRef(status));
188 EXPECT_CALL(*mock_screen_observer,
189 OnExit(ScreenObserver::UPDATE_ERROR_CHECKING_FOR_UPDATE))
190 .Times(1);
191 update_screen->StartUpdate();
192
193 controller()->set_observer(NULL);
194 }
195
196 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestErrorCheckingForUpdate) {
197 ASSERT_TRUE(controller() != NULL);
198 scoped_ptr<MockScreenObserver> mock_screen_observer(new MockScreenObserver());
199 controller()->set_observer(mock_screen_observer.get());
200 UpdateScreen* update_screen = controller()->GetUpdateScreen();
201 ASSERT_TRUE(update_screen != NULL);
202 ASSERT_EQ(controller()->current_screen(), update_screen);
203 update_screen->SetMinimalUpdateTime(0);
204
205 UpdateLibrary::Status status;
206 status.status = UPDATE_STATUS_ERROR;
207 EXPECT_CALL(*mock_update_library_, status())
208 .Times(AtLeast(1))
209 .WillRepeatedly(ReturnRef(status));
210 EXPECT_CALL(*mock_screen_observer,
211 OnExit(ScreenObserver::UPDATE_ERROR_CHECKING_FOR_UPDATE))
212 .Times(1);
213 update_screen->UpdateStatusChanged(mock_update_library_);
214
215 controller()->set_observer(NULL);
216 }
217
218 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestErrorUpdating) {
219 ASSERT_TRUE(controller() != NULL);
220 scoped_ptr<MockScreenObserver> mock_screen_observer(new MockScreenObserver());
221 controller()->set_observer(mock_screen_observer.get());
222 UpdateScreen* update_screen = controller()->GetUpdateScreen();
223 ASSERT_TRUE(update_screen != NULL);
224 ASSERT_EQ(controller()->current_screen(), update_screen);
225 update_screen->SetMinimalUpdateTime(0);
226
227 UpdateLibrary::Status status;
228
229 status.status = UPDATE_STATUS_UPDATE_AVAILABLE;
230 status.new_version = "latest and greatest";
231 EXPECT_CALL(*mock_update_library_, status())
232 .Times(AtLeast(1))
233 .WillRepeatedly(ReturnRef(status));
234 update_screen->UpdateStatusChanged(mock_update_library_);
235
236 status.status = UPDATE_STATUS_ERROR;
237 EXPECT_CALL(*mock_update_library_, status())
238 .Times(AtLeast(1))
239 .WillRepeatedly(ReturnRef(status));
240 EXPECT_CALL(*mock_screen_observer,
241 OnExit(ScreenObserver::UPDATE_ERROR_UPDATING))
242 .Times(1);
243 update_screen->UpdateStatusChanged(mock_update_library_);
244
245 controller()->set_observer(NULL);
246 }
247
248 } // namespace chromeos
OLDNEW
« 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