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

Side by Side Diff: chrome/browser/sync/sync_ui_util_unittest.cc

Issue 12077030: Allow signin to continue even if sync is disabled by policy. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix windows sync integration test failure Created 7 years, 10 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <set> 5 #include <set>
6 #include "base/basictypes.h" 6 #include "base/basictypes.h"
7 #include "base/utf_string_conversions.h" 7 #include "base/utf_string_conversions.h"
8 #include "chrome/browser/profiles/profile.h" 8 #include "chrome/browser/profiles/profile.h"
9 #include "chrome/browser/signin/fake_auth_status_provider.h"
9 #include "chrome/browser/signin/signin_manager.h" 10 #include "chrome/browser/signin/signin_manager.h"
10 #include "chrome/browser/signin/signin_manager_fake.h" 11 #include "chrome/browser/signin/signin_manager_fake.h"
11 #include "chrome/browser/sync/profile_sync_service_mock.h" 12 #include "chrome/browser/sync/profile_sync_service_mock.h"
12 #include "chrome/browser/sync/sync_ui_util.h" 13 #include "chrome/browser/sync/sync_ui_util.h"
13 #include "content/public/test/test_browser_thread.h" 14 #include "content/public/test/test_browser_thread.h"
14 #include "grit/generated_resources.h" 15 #include "grit/generated_resources.h"
15 #include "testing/gmock/include/gmock/gmock-actions.h" 16 #include "testing/gmock/include/gmock/gmock-actions.h"
16 #include "testing/gmock/include/gmock/gmock.h" 17 #include "testing/gmock/include/gmock/gmock.h"
17 #include "testing/gtest/include/gtest/gtest.h" 18 #include "testing/gtest/include/gtest/gtest.h"
18 #include "ui/base/l10n/l10n_util.h" 19 #include "ui/base/l10n/l10n_util.h"
19 20
20 using ::testing::AtMost; 21 using ::testing::AtMost;
21 using ::testing::NiceMock; 22 using ::testing::NiceMock;
22 using ::testing::Return; 23 using ::testing::Return;
23 using ::testing::ReturnRef; 24 using ::testing::ReturnRef;
24 using ::testing::SetArgPointee; 25 using ::testing::SetArgPointee;
25 using ::testing::_; 26 using ::testing::_;
26 using content::BrowserThread; 27 using content::BrowserThread;
27 28
28 // A number of distinct states of the ProfileSyncService can be generated for 29 // A number of distinct states of the ProfileSyncService can be generated for
29 // tests. 30 // tests.
30 enum DistinctState { 31 enum DistinctState {
31 STATUS_CASE_SETUP_IN_PROGRESS, 32 STATUS_CASE_SETUP_IN_PROGRESS,
32 STATUS_CASE_SETUP_ERROR, 33 STATUS_CASE_SETUP_ERROR,
33 STATUS_CASE_AUTHENTICATING, 34 STATUS_CASE_AUTHENTICATING,
34 STATUS_CASE_AUTH_ERROR, 35 STATUS_CASE_AUTH_ERROR,
35 STATUS_CASE_PROTOCOL_ERROR, 36 STATUS_CASE_PROTOCOL_ERROR,
36 STATUS_CASE_PASSPHRASE_ERROR, 37 STATUS_CASE_PASSPHRASE_ERROR,
37 STATUS_CASE_SYNCED, 38 STATUS_CASE_SYNCED,
39 STATUS_CASE_SYNC_DISABLED_BY_POLICY,
38 NUMBER_OF_STATUS_CASES 40 NUMBER_OF_STATUS_CASES
39 }; 41 };
40 42
41 namespace { 43 namespace {
42 44
43 // Mock that allows us to mock a SigninManager that is authenticating.
44 class SigninManagerMock : public SigninManager {
45 public:
46 MOCK_CONST_METHOD0(AuthInProgress, bool());
47 };
48
49 // Utility function to test that GetStatusLabelsForSyncGlobalError returns 45 // Utility function to test that GetStatusLabelsForSyncGlobalError returns
50 // the correct results for the given states. 46 // the correct results for the given states.
51 void VerifySyncGlobalErrorResult(NiceMock<ProfileSyncServiceMock>* service, 47 void VerifySyncGlobalErrorResult(NiceMock<ProfileSyncServiceMock>* service,
52 const SigninManager& signin, 48 const SigninManager& signin,
53 GoogleServiceAuthError::State error_state, 49 GoogleServiceAuthError::State error_state,
54 bool is_signed_in, 50 bool is_signed_in,
55 bool is_error) { 51 bool is_error) {
56 EXPECT_CALL(*service, HasSyncSetupCompleted()) 52 EXPECT_CALL(*service, HasSyncSetupCompleted())
57 .WillRepeatedly(Return(is_signed_in)); 53 .WillRepeatedly(Return(is_signed_in));
58 54
(...skipping 16 matching lines...) Expand all
75 TEST(SyncUIUtilTest, PassphraseGlobalError) { 71 TEST(SyncUIUtilTest, PassphraseGlobalError) {
76 MessageLoopForUI message_loop; 72 MessageLoopForUI message_loop;
77 content::TestBrowserThread ui_thread(BrowserThread::UI, &message_loop); 73 content::TestBrowserThread ui_thread(BrowserThread::UI, &message_loop);
78 scoped_ptr<Profile> profile( 74 scoped_ptr<Profile> profile(
79 ProfileSyncServiceMock::MakeSignedInTestingProfile()); 75 ProfileSyncServiceMock::MakeSignedInTestingProfile());
80 NiceMock<ProfileSyncServiceMock> service(profile.get()); 76 NiceMock<ProfileSyncServiceMock> service(profile.get());
81 FakeSigninManager signin(profile.get()); 77 FakeSigninManager signin(profile.get());
82 browser_sync::SyncBackendHost::Status status; 78 browser_sync::SyncBackendHost::Status status;
83 EXPECT_CALL(service, QueryDetailedSyncStatus(_)) 79 EXPECT_CALL(service, QueryDetailedSyncStatus(_))
84 .WillRepeatedly(Return(false)); 80 .WillRepeatedly(Return(false));
85
86 EXPECT_CALL(service, IsPassphraseRequired()) 81 EXPECT_CALL(service, IsPassphraseRequired())
87 .WillRepeatedly(Return(true)); 82 .WillRepeatedly(Return(true));
88 EXPECT_CALL(service, IsPassphraseRequiredForDecryption()) 83 EXPECT_CALL(service, IsPassphraseRequiredForDecryption())
89 .WillRepeatedly(Return(true)); 84 .WillRepeatedly(Return(true));
90 VerifySyncGlobalErrorResult( 85 VerifySyncGlobalErrorResult(
91 &service, signin, GoogleServiceAuthError::NONE, true, true); 86 &service, signin, GoogleServiceAuthError::NONE, true, true);
92 } 87 }
93 88
94 // Test that GetStatusLabelsForSyncGlobalError returns an error if a 89 // Test that GetStatusLabelsForSyncGlobalError returns an error if a
95 // passphrase is required and not for auth errors. 90 // passphrase is required and not for auth errors.
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 147
153 FakeSigninManager signin(profile.get()); 148 FakeSigninManager signin(profile.get());
154 for (size_t i = 0; i < arraysize(table); ++i) { 149 for (size_t i = 0; i < arraysize(table); ++i) {
155 VerifySyncGlobalErrorResult(&service, signin, table[i], true, false); 150 VerifySyncGlobalErrorResult(&service, signin, table[i], true, false);
156 VerifySyncGlobalErrorResult(&service, signin, table[i], false, false); 151 VerifySyncGlobalErrorResult(&service, signin, table[i], false, false);
157 } 152 }
158 } 153 }
159 // Loads a ProfileSyncServiceMock to emulate one of a number of distinct cases 154 // Loads a ProfileSyncServiceMock to emulate one of a number of distinct cases
160 // in order to perform tests on the generated messages. 155 // in order to perform tests on the generated messages.
161 void GetDistinctCase(ProfileSyncServiceMock& service, 156 void GetDistinctCase(ProfileSyncServiceMock& service,
162 SigninManagerMock& signin, 157 FakeSigninManager* signin,
163 GoogleServiceAuthError** auth_error, 158 FakeAuthStatusProvider* provider,
164 int caseNumber) { 159 int caseNumber) {
165 // Auth Error object is returned by reference in mock and needs to stay in 160 // Auth Error object is returned by reference in mock and needs to stay in
166 // scope throughout test, so it is owned by calling method. However it is 161 // scope throughout test, so it is owned by calling method. However it is
167 // immutable so can only be allocated in this method. 162 // immutable so can only be allocated in this method.
168 switch (caseNumber) { 163 switch (caseNumber) {
169 case STATUS_CASE_SETUP_IN_PROGRESS: { 164 case STATUS_CASE_SETUP_IN_PROGRESS: {
170 EXPECT_CALL(service, HasSyncSetupCompleted()) 165 EXPECT_CALL(service, HasSyncSetupCompleted())
171 .WillOnce(Return(false)); 166 .WillRepeatedly(Return(false));
172 EXPECT_CALL(service, FirstSetupInProgress()) 167 EXPECT_CALL(service, FirstSetupInProgress())
173 .WillOnce(Return(true)); 168 .WillRepeatedly(Return(true));
174 browser_sync::SyncBackendHost::Status status; 169 browser_sync::SyncBackendHost::Status status;
175 EXPECT_CALL(service, QueryDetailedSyncStatus(_)) 170 EXPECT_CALL(service, QueryDetailedSyncStatus(_))
176 .WillOnce(DoAll(SetArgPointee<0>(status), 171 .WillRepeatedly(DoAll(SetArgPointee<0>(status),
177 Return(false))); 172 Return(false)));
178 *auth_error = new GoogleServiceAuthError(GoogleServiceAuthError::NONE);
179 EXPECT_CALL(service, GetAuthError())
180 .WillOnce(ReturnRef(**auth_error));
181 EXPECT_CALL(signin, AuthInProgress()).WillRepeatedly(Return(false));
182 return; 173 return;
183 } 174 }
184 case STATUS_CASE_SETUP_ERROR: { 175 case STATUS_CASE_SETUP_ERROR: {
185 EXPECT_CALL(service, HasSyncSetupCompleted()) 176 EXPECT_CALL(service, HasSyncSetupCompleted())
186 .WillOnce(Return(false)); 177 .WillRepeatedly(Return(false));
187 EXPECT_CALL(service, FirstSetupInProgress()) 178 EXPECT_CALL(service, FirstSetupInProgress())
188 .WillOnce(Return(false)); 179 .WillRepeatedly(Return(false));
189 EXPECT_CALL(service, HasUnrecoverableError()) 180 EXPECT_CALL(service, HasUnrecoverableError())
190 .WillOnce(Return(true)); 181 .WillRepeatedly(Return(true));
191 EXPECT_CALL(signin, AuthInProgress()).WillRepeatedly(Return(false));
192 browser_sync::SyncBackendHost::Status status; 182 browser_sync::SyncBackendHost::Status status;
193 EXPECT_CALL(service, QueryDetailedSyncStatus(_)) 183 EXPECT_CALL(service, QueryDetailedSyncStatus(_))
194 .WillOnce(DoAll(SetArgPointee<0>(status), 184 .WillRepeatedly(DoAll(SetArgPointee<0>(status),
195 Return(false))); 185 Return(false)));
196 return; 186 return;
197 } 187 }
198 case STATUS_CASE_AUTHENTICATING: { 188 case STATUS_CASE_AUTHENTICATING: {
199 EXPECT_CALL(service, HasSyncSetupCompleted()) 189 EXPECT_CALL(service, HasSyncSetupCompleted())
200 .WillOnce(Return(true)); 190 .WillRepeatedly(Return(true));
191 EXPECT_CALL(service, sync_initialized()).WillRepeatedly(Return(true));
192 EXPECT_CALL(service, IsPassphraseRequired())
193 .WillRepeatedly(Return(false));
201 browser_sync::SyncBackendHost::Status status; 194 browser_sync::SyncBackendHost::Status status;
202 EXPECT_CALL(service, QueryDetailedSyncStatus(_)) 195 EXPECT_CALL(service, QueryDetailedSyncStatus(_))
203 .WillOnce(DoAll(SetArgPointee<0>(status), 196 .WillRepeatedly(DoAll(SetArgPointee<0>(status),
204 Return(false))); 197 Return(false)));
205 EXPECT_CALL(service, HasUnrecoverableError()) 198 EXPECT_CALL(service, HasUnrecoverableError())
206 .WillOnce(Return(false)); 199 .WillRepeatedly(Return(false));
207 EXPECT_CALL(signin, AuthInProgress()).WillRepeatedly(Return(true)); 200 signin->set_auth_in_progress(true);
208 *auth_error = new GoogleServiceAuthError(GoogleServiceAuthError::NONE);
209 EXPECT_CALL(service, GetAuthError())
210 .WillOnce(ReturnRef(**auth_error));
211 return; 201 return;
212 } 202 }
213 case STATUS_CASE_AUTH_ERROR: { 203 case STATUS_CASE_AUTH_ERROR: {
214 EXPECT_CALL(service, HasSyncSetupCompleted()) 204 EXPECT_CALL(service, HasSyncSetupCompleted())
215 .WillOnce(Return(true)); 205 .WillRepeatedly(Return(true));
206 EXPECT_CALL(service, sync_initialized()).WillRepeatedly(Return(true));
207 EXPECT_CALL(service, IsPassphraseRequired())
208 .WillRepeatedly(Return(false));
216 browser_sync::SyncBackendHost::Status status; 209 browser_sync::SyncBackendHost::Status status;
217 EXPECT_CALL(service, QueryDetailedSyncStatus(_)) 210 EXPECT_CALL(service, QueryDetailedSyncStatus(_))
218 .WillOnce(DoAll(SetArgPointee<0>(status), 211 .WillRepeatedly(DoAll(SetArgPointee<0>(status),
219 Return(false))); 212 Return(false)));
220 *auth_error = new GoogleServiceAuthError( 213 provider->SetAuthError(GoogleServiceAuthError(
221 GoogleServiceAuthError::SERVICE_UNAVAILABLE); 214 GoogleServiceAuthError::SERVICE_UNAVAILABLE));
222 EXPECT_CALL(service, HasUnrecoverableError()) 215 EXPECT_CALL(service, HasUnrecoverableError())
223 .WillOnce(Return(false)); 216 .WillRepeatedly(Return(false));
224 EXPECT_CALL(signin, AuthInProgress()).WillRepeatedly(Return(false));
225 EXPECT_CALL(service, GetAuthError())
226 .WillOnce(ReturnRef(**auth_error));
227 return; 217 return;
228 } 218 }
229 case STATUS_CASE_PROTOCOL_ERROR: { 219 case STATUS_CASE_PROTOCOL_ERROR: {
230 EXPECT_CALL(service, HasSyncSetupCompleted()) 220 EXPECT_CALL(service, HasSyncSetupCompleted())
231 .WillOnce(Return(true)); 221 .WillRepeatedly(Return(true));
222 EXPECT_CALL(service, sync_initialized()).WillRepeatedly(Return(true));
223 EXPECT_CALL(service, IsPassphraseRequired())
224 .WillRepeatedly(Return(false));
232 syncer::SyncProtocolError protocolError; 225 syncer::SyncProtocolError protocolError;
233 protocolError.action = syncer::STOP_AND_RESTART_SYNC; 226 protocolError.action = syncer::STOP_AND_RESTART_SYNC;
234 browser_sync::SyncBackendHost::Status status; 227 browser_sync::SyncBackendHost::Status status;
235 status.sync_protocol_error = protocolError; 228 status.sync_protocol_error = protocolError;
236 EXPECT_CALL(service, QueryDetailedSyncStatus(_)) 229 EXPECT_CALL(service, QueryDetailedSyncStatus(_))
237 .WillOnce(DoAll(SetArgPointee<0>(status), 230 .WillRepeatedly(DoAll(SetArgPointee<0>(status),
238 Return(false))); 231 Return(false)));
239 *auth_error = new GoogleServiceAuthError(GoogleServiceAuthError::NONE);
240 EXPECT_CALL(service, GetAuthError())
241 .WillOnce(ReturnRef(**auth_error));
242 EXPECT_CALL(signin, AuthInProgress()).WillRepeatedly(Return(false));
243 EXPECT_CALL(service, HasUnrecoverableError()) 232 EXPECT_CALL(service, HasUnrecoverableError())
244 .WillOnce(Return(false)); 233 .WillRepeatedly(Return(false));
245 return; 234 return;
246 } 235 }
247 case STATUS_CASE_PASSPHRASE_ERROR: { 236 case STATUS_CASE_PASSPHRASE_ERROR: {
248 EXPECT_CALL(service, HasSyncSetupCompleted()) 237 EXPECT_CALL(service, HasSyncSetupCompleted())
249 .WillOnce(Return(true)); 238 .WillRepeatedly(Return(true));
239 EXPECT_CALL(service, sync_initialized()).WillRepeatedly(Return(true));
250 browser_sync::SyncBackendHost::Status status; 240 browser_sync::SyncBackendHost::Status status;
251 EXPECT_CALL(service, QueryDetailedSyncStatus(_)) 241 EXPECT_CALL(service, QueryDetailedSyncStatus(_))
252 .WillOnce(DoAll(SetArgPointee<0>(status), 242 .WillRepeatedly(DoAll(SetArgPointee<0>(status),
253 Return(false))); 243 Return(false)));
254 *auth_error = new GoogleServiceAuthError(GoogleServiceAuthError::NONE);
255 EXPECT_CALL(service, GetAuthError())
256 .WillOnce(ReturnRef(**auth_error));
257 EXPECT_CALL(service, HasUnrecoverableError()) 244 EXPECT_CALL(service, HasUnrecoverableError())
258 .WillOnce(Return(false)); 245 .WillRepeatedly(Return(false));
259 EXPECT_CALL(signin, AuthInProgress()).WillRepeatedly(Return(false));
260 EXPECT_CALL(service, IsPassphraseRequired()) 246 EXPECT_CALL(service, IsPassphraseRequired())
261 .WillOnce(Return(true)); 247 .WillRepeatedly(Return(true));
262 EXPECT_CALL(service, IsPassphraseRequiredForDecryption()) 248 EXPECT_CALL(service, IsPassphraseRequiredForDecryption())
263 .WillOnce(Return(true)); 249 .WillRepeatedly(Return(true));
264 return; 250 return;
265 } 251 }
266 case STATUS_CASE_SYNCED: { 252 case STATUS_CASE_SYNCED: {
267 EXPECT_CALL(service, HasSyncSetupCompleted()) 253 EXPECT_CALL(service, HasSyncSetupCompleted())
268 .WillOnce(Return(true)); 254 .WillRepeatedly(Return(true));
255 EXPECT_CALL(service, sync_initialized()).WillRepeatedly(Return(true));
256 EXPECT_CALL(service, IsPassphraseRequired())
257 .WillRepeatedly(Return(false));
269 browser_sync::SyncBackendHost::Status status; 258 browser_sync::SyncBackendHost::Status status;
270 EXPECT_CALL(service, QueryDetailedSyncStatus(_)) 259 EXPECT_CALL(service, QueryDetailedSyncStatus(_))
271 .WillOnce(DoAll(SetArgPointee<0>(status), 260 .WillRepeatedly(DoAll(SetArgPointee<0>(status),
272 Return(false))); 261 Return(false)));
273 *auth_error = new GoogleServiceAuthError(GoogleServiceAuthError::NONE);
274 EXPECT_CALL(service, GetAuthError())
275 .WillOnce(ReturnRef(**auth_error));
276 EXPECT_CALL(signin, AuthInProgress()).WillRepeatedly(Return(false));
277 EXPECT_CALL(service, HasUnrecoverableError()) 262 EXPECT_CALL(service, HasUnrecoverableError())
278 .WillOnce(Return(false)); 263 .WillRepeatedly(Return(false));
279 EXPECT_CALL(service, IsPassphraseRequired()) 264 EXPECT_CALL(service, IsPassphraseRequired())
280 .WillOnce(Return(false)); 265 .WillRepeatedly(Return(false));
266 return;
267 }
268 case STATUS_CASE_SYNC_DISABLED_BY_POLICY: {
269 EXPECT_CALL(service, IsManaged()).WillRepeatedly(Return(true));
270 EXPECT_CALL(service, HasSyncSetupCompleted())
271 .WillRepeatedly(Return(false));
272 EXPECT_CALL(service, sync_initialized()).WillRepeatedly(Return(false));
273 EXPECT_CALL(service, IsPassphraseRequired())
274 .WillRepeatedly(Return(false));
275 browser_sync::SyncBackendHost::Status status;
276 EXPECT_CALL(service, QueryDetailedSyncStatus(_))
277 .WillRepeatedly(DoAll(SetArgPointee<0>(status),
278 Return(false)));
279 EXPECT_CALL(service, HasUnrecoverableError())
280 .WillRepeatedly(Return(false));
281 return; 281 return;
282 } 282 }
283 default: 283 default:
284 NOTREACHED(); 284 NOTREACHED();
285 } 285 }
286 } 286 }
287 287
288 // This test ensures that a each distinctive ProfileSyncService statuses 288 // This test ensures that a each distinctive ProfileSyncService statuses
289 // will return a unique combination of status and link messages from 289 // will return a unique combination of status and link messages from
290 // GetStatusLabels(). 290 // GetStatusLabels().
291 TEST(SyncUIUtilTest, DistinctCasesReportUniqueMessageSets) { 291 TEST(SyncUIUtilTest, DistinctCasesReportUniqueMessageSets) {
292 std::set<string16> messages; 292 std::set<string16> messages;
293 for (int idx = 0; idx != NUMBER_OF_STATUS_CASES; idx++) { 293 for (int idx = 0; idx != NUMBER_OF_STATUS_CASES; idx++) {
294 scoped_ptr<Profile> profile( 294 scoped_ptr<Profile> profile(
295 ProfileSyncServiceMock::MakeSignedInTestingProfile()); 295 ProfileSyncServiceMock::MakeSignedInTestingProfile());
296 ProfileSyncServiceMock service(profile.get()); 296 ProfileSyncServiceMock service(profile.get());
297 NiceMock<SigninManagerMock> signin; 297 FakeSigninManager signin(profile.get());
298 GoogleServiceAuthError* auth_error = NULL; 298 signin.SetAuthenticatedUsername("test_user@test.com");
299 GetDistinctCase(service, signin, &auth_error, idx); 299 FakeAuthStatusProvider provider(signin.signin_global_error());
300 GetDistinctCase(service, &signin, &provider, idx);
300 string16 status_label; 301 string16 status_label;
301 string16 link_label; 302 string16 link_label;
302 sync_ui_util::GetStatusLabels(&service, 303 sync_ui_util::GetStatusLabels(&service,
303 signin, 304 signin,
304 sync_ui_util::WITH_HTML, 305 sync_ui_util::WITH_HTML,
305 &status_label, 306 &status_label,
306 &link_label); 307 &link_label);
307 // If the status and link message combination is already present in the set 308 // If the status and link message combination is already present in the set
308 // of messages already seen, this is a duplicate rather than a unique 309 // of messages already seen, this is a duplicate rather than a unique
309 // message, and the test has failed. 310 // message, and the test has failed.
311 EXPECT_FALSE(status_label.empty()) <<
312 "Empty status label returned for case #" << idx;
310 string16 combined_label = 313 string16 combined_label =
311 status_label + string16(ASCIIToUTF16("#")) + link_label; 314 status_label + string16(ASCIIToUTF16("#")) + link_label;
312 EXPECT_TRUE(messages.find(combined_label) == messages.end()); 315 EXPECT_TRUE(messages.find(combined_label) == messages.end()) <<
316 "Duplicate message for case #" << idx << ": " << combined_label;
313 messages.insert(combined_label); 317 messages.insert(combined_label);
314 if (auth_error) 318 testing::Mock::VerifyAndClearExpectations(&service);
315 delete auth_error; 319 testing::Mock::VerifyAndClearExpectations(&signin);
316 } 320 }
317 } 321 }
318 322
319 // This test ensures that the html_links parameter on GetStatusLabels() is 323 // This test ensures that the html_links parameter on GetStatusLabels() is
320 // honored. 324 // honored.
321 TEST(SyncUIUtilTest, HtmlNotIncludedInStatusIfNotRequested) { 325 TEST(SyncUIUtilTest, HtmlNotIncludedInStatusIfNotRequested) {
322 for (int idx = 0; idx != NUMBER_OF_STATUS_CASES; idx++) { 326 for (int idx = 0; idx != NUMBER_OF_STATUS_CASES; idx++) {
323 scoped_ptr<Profile> profile( 327 scoped_ptr<Profile> profile(
324 ProfileSyncServiceMock::MakeSignedInTestingProfile()); 328 ProfileSyncServiceMock::MakeSignedInTestingProfile());
325 ProfileSyncServiceMock service(profile.get()); 329 ProfileSyncServiceMock service(profile.get());
326 NiceMock<SigninManagerMock> signin; 330 FakeSigninManager signin(profile.get());
327 GoogleServiceAuthError* auth_error = NULL; 331 signin.SetAuthenticatedUsername("test_user@test.com");
328 GetDistinctCase(service, signin, &auth_error, idx); 332 FakeAuthStatusProvider provider(signin.signin_global_error());
333 GetDistinctCase(service, &signin, &provider, idx);
329 string16 status_label; 334 string16 status_label;
330 string16 link_label; 335 string16 link_label;
331 sync_ui_util::GetStatusLabels(&service, 336 sync_ui_util::GetStatusLabels(&service,
332 signin, 337 signin,
333 sync_ui_util::PLAIN_TEXT, 338 sync_ui_util::PLAIN_TEXT,
334 &status_label, 339 &status_label,
335 &link_label); 340 &link_label);
341
336 // Ensures a search for string 'href' (found in links, not a string to be 342 // Ensures a search for string 'href' (found in links, not a string to be
337 // found in an English language message) fails when links are excluded from 343 // found in an English language message) fails when links are excluded from
338 // the status label. 344 // the status label.
345 EXPECT_FALSE(status_label.empty());
339 EXPECT_EQ(status_label.find(string16(ASCIIToUTF16("href"))), 346 EXPECT_EQ(status_label.find(string16(ASCIIToUTF16("href"))),
340 string16::npos); 347 string16::npos);
341 if (auth_error) { 348 testing::Mock::VerifyAndClearExpectations(&service);
342 delete auth_error; 349 testing::Mock::VerifyAndClearExpectations(&signin);
343 }
344 } 350 }
345 } 351 }
OLDNEW
« no previous file with comments | « chrome/browser/sync/sync_ui_util.cc ('k') | chrome/browser/sync/test/integration/migration_errors_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698