| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "chrome/browser/ui/webui/signin/signin_create_profile_handler.h" | 5 #include "chrome/browser/ui/webui/signin/signin_create_profile_handler.h" |
| 6 | 6 |
| 7 #include "base/strings/utf_string_conversions.h" | 7 #include "base/strings/utf_string_conversions.h" |
| 8 #include "chrome/browser/prefs/browser_prefs.h" | 8 #include "chrome/browser/prefs/browser_prefs.h" |
| 9 #include "chrome/browser/profiles/profile.h" | 9 #include "chrome/browser/profiles/profile.h" |
| 10 #include "chrome/browser/profiles/profile_attributes_entry.h" | 10 #include "chrome/browser/profiles/profile_attributes_entry.h" |
| (...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 331 &TestSigninCreateProfileHandler::RealDoCreateProfile)); | 331 &TestSigninCreateProfileHandler::RealDoCreateProfile)); |
| 332 | 332 |
| 333 // Expect no calls to register a supervised user. | 333 // Expect no calls to register a supervised user. |
| 334 EXPECT_CALL(*handler(), RegisterSupervisedUser(_, _, _, _)).Times(0); | 334 EXPECT_CALL(*handler(), RegisterSupervisedUser(_, _, _, _)).Times(0); |
| 335 | 335 |
| 336 // Expect a new browser window for the new profile to be opened. | 336 // Expect a new browser window for the new profile to be opened. |
| 337 EXPECT_CALL(*handler(), OpenNewWindowForProfile(_, _)); | 337 EXPECT_CALL(*handler(), OpenNewWindowForProfile(_, _)); |
| 338 | 338 |
| 339 // Create a non-supervised profile. | 339 // Create a non-supervised profile. |
| 340 base::ListValue list_args; | 340 base::ListValue list_args; |
| 341 list_args.Append(new base::StringValue(kTestProfileName)); | 341 list_args.AppendString(kTestProfileName); |
| 342 list_args.Append(new base::StringValue(profiles::GetDefaultAvatarIconUrl(0))); | 342 list_args.AppendString(profiles::GetDefaultAvatarIconUrl(0)); |
| 343 list_args.Append(new base::FundamentalValue(false)); // create_shortcut | 343 list_args.AppendBoolean(false); // create_shortcut |
| 344 list_args.Append(new base::FundamentalValue(false)); // is_supervised | 344 list_args.AppendBoolean(false); // is_supervised |
| 345 handler()->CreateProfile(&list_args); | 345 handler()->CreateProfile(&list_args); |
| 346 | 346 |
| 347 // Expect a JS callbacks with the new profile information. | 347 // Expect a JS callbacks with the new profile information. |
| 348 EXPECT_EQ(1U, web_ui()->call_data().size()); | 348 EXPECT_EQ(1U, web_ui()->call_data().size()); |
| 349 | 349 |
| 350 EXPECT_EQ(kTestWebUIResponse, web_ui()->call_data()[0]->function_name()); | 350 EXPECT_EQ(kTestWebUIResponse, web_ui()->call_data()[0]->function_name()); |
| 351 | 351 |
| 352 std::string callback_name; | 352 std::string callback_name; |
| 353 ASSERT_TRUE(web_ui()->call_data()[0]->arg1()->GetAsString(&callback_name)); | 353 ASSERT_TRUE(web_ui()->call_data()[0]->arg1()->GetAsString(&callback_name)); |
| 354 EXPECT_EQ("create-profile-success", callback_name); | 354 EXPECT_EQ("create-profile-success", callback_name); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 377 .WillOnce(Invoke( | 377 .WillOnce(Invoke( |
| 378 handler(), | 378 handler(), |
| 379 &TestSigninCreateProfileHandler::RealRegisterSupervisedUser)); | 379 &TestSigninCreateProfileHandler::RealRegisterSupervisedUser)); |
| 380 | 380 |
| 381 // Expect no new browser window for the new supervised profile to be opened. | 381 // Expect no new browser window for the new supervised profile to be opened. |
| 382 EXPECT_CALL(*handler(), OpenNewWindowForProfile(_, _)).Times(0); | 382 EXPECT_CALL(*handler(), OpenNewWindowForProfile(_, _)).Times(0); |
| 383 | 383 |
| 384 // Create a supervised profile. | 384 // Create a supervised profile. |
| 385 base::ListValue list_args; | 385 base::ListValue list_args; |
| 386 list_args.Clear(); | 386 list_args.Clear(); |
| 387 list_args.Append(new base::StringValue(kSupervisedUsername1)); | 387 list_args.AppendString(kSupervisedUsername1); |
| 388 list_args.Append(new base::StringValue(profiles::GetDefaultAvatarIconUrl(0))); | 388 list_args.AppendString(profiles::GetDefaultAvatarIconUrl(0)); |
| 389 list_args.Append(new base::FundamentalValue(false)); // create_shortcut | 389 list_args.AppendBoolean(false); // create_shortcut |
| 390 list_args.Append(new base::FundamentalValue(true)); // is_supervised | 390 list_args.AppendBoolean(true); // is_supervised |
| 391 list_args.Append(new base::StringValue("")); // supervised_user_id | 391 list_args.AppendString(""); // supervised_user_id |
| 392 list_args.Append(new base::StringValue(custodian()->GetPath().value())); | 392 list_args.AppendString(custodian()->GetPath().value()); |
| 393 handler()->CreateProfile(&list_args); | 393 handler()->CreateProfile(&list_args); |
| 394 | 394 |
| 395 // Expect a JS callbacks with the new profile information. | 395 // Expect a JS callbacks with the new profile information. |
| 396 EXPECT_EQ(1U, web_ui()->call_data().size()); | 396 EXPECT_EQ(1U, web_ui()->call_data().size()); |
| 397 | 397 |
| 398 EXPECT_EQ(kTestWebUIResponse, web_ui()->call_data()[0]->function_name()); | 398 EXPECT_EQ(kTestWebUIResponse, web_ui()->call_data()[0]->function_name()); |
| 399 | 399 |
| 400 std::string callback_name; | 400 std::string callback_name; |
| 401 ASSERT_TRUE(web_ui()->call_data()[0]->arg1()->GetAsString(&callback_name)); | 401 ASSERT_TRUE(web_ui()->call_data()[0]->arg1()->GetAsString(&callback_name)); |
| 402 EXPECT_EQ("create-profile-success", callback_name); | 402 EXPECT_EQ("create-profile-success", callback_name); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 425 .WillOnce(Invoke( | 425 .WillOnce(Invoke( |
| 426 handler(), | 426 handler(), |
| 427 &TestSigninCreateProfileHandler::RealRegisterSupervisedUser)); | 427 &TestSigninCreateProfileHandler::RealRegisterSupervisedUser)); |
| 428 | 428 |
| 429 // Expect a new browser window for the new profile to be opened. | 429 // Expect a new browser window for the new profile to be opened. |
| 430 EXPECT_CALL(*handler(), OpenNewWindowForProfile(_, _)); | 430 EXPECT_CALL(*handler(), OpenNewWindowForProfile(_, _)); |
| 431 | 431 |
| 432 // Import a supervised profile. | 432 // Import a supervised profile. |
| 433 base::ListValue list_args; | 433 base::ListValue list_args; |
| 434 list_args.Clear(); | 434 list_args.Clear(); |
| 435 list_args.Append(new base::StringValue(kSupervisedUsername1)); | 435 list_args.AppendString(kSupervisedUsername1); |
| 436 list_args.Append(new base::StringValue(profiles::GetDefaultAvatarIconUrl(0))); | 436 list_args.AppendString(profiles::GetDefaultAvatarIconUrl(0)); |
| 437 list_args.Append(new base::FundamentalValue(false)); // create_shortcut | 437 list_args.AppendBoolean(false); // create_shortcut |
| 438 list_args.Append(new base::FundamentalValue(true)); // is_supervised | 438 list_args.AppendBoolean(true); // is_supervised |
| 439 list_args.Append( | 439 list_args.AppendString( |
| 440 new base::StringValue(kSupervisedUserId1)); // supervised_user_id | 440 kSupervisedUserId1); // supervised_user_id |
| 441 list_args.Append(new base::StringValue(custodian()->GetPath().value())); | 441 list_args.AppendString(custodian()->GetPath().value()); |
| 442 handler()->CreateProfile(&list_args); | 442 handler()->CreateProfile(&list_args); |
| 443 | 443 |
| 444 // Expect a JS callbacks with the new profile information. | 444 // Expect a JS callbacks with the new profile information. |
| 445 EXPECT_EQ(1U, web_ui()->call_data().size()); | 445 EXPECT_EQ(1U, web_ui()->call_data().size()); |
| 446 | 446 |
| 447 EXPECT_EQ(kTestWebUIResponse, web_ui()->call_data()[0]->function_name()); | 447 EXPECT_EQ(kTestWebUIResponse, web_ui()->call_data()[0]->function_name()); |
| 448 | 448 |
| 449 std::string callback_name; | 449 std::string callback_name; |
| 450 ASSERT_TRUE(web_ui()->call_data()[0]->arg1()->GetAsString(&callback_name)); | 450 ASSERT_TRUE(web_ui()->call_data()[0]->arg1()->GetAsString(&callback_name)); |
| 451 EXPECT_EQ("create-profile-success", callback_name); | 451 EXPECT_EQ("create-profile-success", callback_name); |
| 452 | 452 |
| 453 const base::DictionaryValue* profile; | 453 const base::DictionaryValue* profile; |
| 454 ASSERT_TRUE(web_ui()->call_data()[0]->arg2()->GetAsDictionary(&profile)); | 454 ASSERT_TRUE(web_ui()->call_data()[0]->arg2()->GetAsDictionary(&profile)); |
| 455 std::string profile_name; | 455 std::string profile_name; |
| 456 ASSERT_TRUE(profile->GetString("name", &profile_name)); | 456 ASSERT_TRUE(profile->GetString("name", &profile_name)); |
| 457 EXPECT_NE("", profile_name); | 457 EXPECT_NE("", profile_name); |
| 458 std::string profile_path; | 458 std::string profile_path; |
| 459 ASSERT_TRUE(profile->GetString("filePath", &profile_path)); | 459 ASSERT_TRUE(profile->GetString("filePath", &profile_path)); |
| 460 EXPECT_NE("", profile_path); | 460 EXPECT_NE("", profile_path); |
| 461 bool is_supervised; | 461 bool is_supervised; |
| 462 ASSERT_TRUE(profile->GetBoolean("isSupervised", &is_supervised)); | 462 ASSERT_TRUE(profile->GetBoolean("isSupervised", &is_supervised)); |
| 463 ASSERT_TRUE(is_supervised); | 463 ASSERT_TRUE(is_supervised); |
| 464 } | 464 } |
| 465 | 465 |
| 466 TEST_F(SigninCreateProfileHandlerTest, ImportSupervisedUserAlreadyOnDevice) { | 466 TEST_F(SigninCreateProfileHandlerTest, ImportSupervisedUserAlreadyOnDevice) { |
| 467 // Import a supervised profile whose already on the current device. | 467 // Import a supervised profile whose already on the current device. |
| 468 base::ListValue list_args; | 468 base::ListValue list_args; |
| 469 list_args.Clear(); | 469 list_args.Clear(); |
| 470 list_args.Append(new base::StringValue(kSupervisedUsername2)); | 470 list_args.AppendString(kSupervisedUsername2); |
| 471 list_args.Append(new base::StringValue(profiles::GetDefaultAvatarIconUrl(0))); | 471 list_args.AppendString(profiles::GetDefaultAvatarIconUrl(0)); |
| 472 list_args.Append(new base::FundamentalValue(false)); | 472 list_args.AppendBoolean(false); |
| 473 list_args.Append(new base::FundamentalValue(true)); | 473 list_args.AppendBoolean(true); |
| 474 list_args.Append(new base::StringValue(kSupervisedUserId2)); | 474 list_args.AppendString(kSupervisedUserId2); |
| 475 list_args.Append(new base::StringValue(custodian()->GetPath().value())); | 475 list_args.AppendString(custodian()->GetPath().value()); |
| 476 handler()->CreateProfile(&list_args); | 476 handler()->CreateProfile(&list_args); |
| 477 | 477 |
| 478 // Expect a JS callbacks containing an error message. | 478 // Expect a JS callbacks containing an error message. |
| 479 EXPECT_EQ(1U, web_ui()->call_data().size()); | 479 EXPECT_EQ(1U, web_ui()->call_data().size()); |
| 480 | 480 |
| 481 EXPECT_EQ(kTestWebUIResponse, web_ui()->call_data()[0]->function_name()); | 481 EXPECT_EQ(kTestWebUIResponse, web_ui()->call_data()[0]->function_name()); |
| 482 | 482 |
| 483 std::string callback_name; | 483 std::string callback_name; |
| 484 ASSERT_TRUE(web_ui()->call_data()[0]->arg1()->GetAsString(&callback_name)); | 484 ASSERT_TRUE(web_ui()->call_data()[0]->arg1()->GetAsString(&callback_name)); |
| 485 EXPECT_EQ("create-profile-error", callback_name); | 485 EXPECT_EQ("create-profile-error", callback_name); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 496 SupervisedUserSyncService* sync_service_ = | 496 SupervisedUserSyncService* sync_service_ = |
| 497 SupervisedUserSyncServiceFactory::GetForProfile(custodian()); | 497 SupervisedUserSyncServiceFactory::GetForProfile(custodian()); |
| 498 sync_service_->StopSyncing(syncer::SUPERVISED_USERS); | 498 sync_service_->StopSyncing(syncer::SUPERVISED_USERS); |
| 499 | 499 |
| 500 // Sign out the custodian. | 500 // Sign out the custodian. |
| 501 signin_manager()->ForceSignOut(); | 501 signin_manager()->ForceSignOut(); |
| 502 | 502 |
| 503 // Create a supervised profile. | 503 // Create a supervised profile. |
| 504 base::ListValue list_args; | 504 base::ListValue list_args; |
| 505 list_args.Clear(); | 505 list_args.Clear(); |
| 506 list_args.Append(new base::StringValue(kSupervisedUsername1)); | 506 list_args.AppendString(kSupervisedUsername1); |
| 507 list_args.Append(new base::StringValue(profiles::GetDefaultAvatarIconUrl(0))); | 507 list_args.AppendString(profiles::GetDefaultAvatarIconUrl(0)); |
| 508 list_args.Append(new base::FundamentalValue(false)); // create_shortcut | 508 list_args.AppendBoolean(false); // create_shortcut |
| 509 list_args.Append(new base::FundamentalValue(true)); // is_supervised | 509 list_args.AppendBoolean(true); // is_supervised |
| 510 list_args.Append(new base::StringValue("")); // supervised_user_id | 510 list_args.AppendString(""); // supervised_user_id |
| 511 list_args.Append(new base::StringValue(custodian()->GetPath().value())); | 511 list_args.AppendString(custodian()->GetPath().value()); |
| 512 handler()->CreateProfile(&list_args); | 512 handler()->CreateProfile(&list_args); |
| 513 | 513 |
| 514 // Expect a JS callbacks containing an error message. | 514 // Expect a JS callbacks containing an error message. |
| 515 EXPECT_EQ(1U, web_ui()->call_data().size()); | 515 EXPECT_EQ(1U, web_ui()->call_data().size()); |
| 516 | 516 |
| 517 EXPECT_EQ(kTestWebUIResponse, web_ui()->call_data()[0]->function_name()); | 517 EXPECT_EQ(kTestWebUIResponse, web_ui()->call_data()[0]->function_name()); |
| 518 | 518 |
| 519 std::string callback_name; | 519 std::string callback_name; |
| 520 ASSERT_TRUE(web_ui()->call_data()[0]->arg1()->GetAsString(&callback_name)); | 520 ASSERT_TRUE(web_ui()->call_data()[0]->arg1()->GetAsString(&callback_name)); |
| 521 EXPECT_EQ("create-profile-error", callback_name); | 521 EXPECT_EQ("create-profile-error", callback_name); |
| 522 | 522 |
| 523 base::string16 expected_error_message = l10n_util::GetStringUTF16( | 523 base::string16 expected_error_message = l10n_util::GetStringUTF16( |
| 524 IDS_PROFILES_CREATE_CUSTODIAN_ACCOUNT_DETAILS_OUT_OF_DATE_ERROR); | 524 IDS_PROFILES_CREATE_CUSTODIAN_ACCOUNT_DETAILS_OUT_OF_DATE_ERROR); |
| 525 base::string16 error_message; | 525 base::string16 error_message; |
| 526 ASSERT_TRUE(web_ui()->call_data()[0]->arg2()->GetAsString(&error_message)); | 526 ASSERT_TRUE(web_ui()->call_data()[0]->arg2()->GetAsString(&error_message)); |
| 527 EXPECT_EQ(expected_error_message, error_message); | 527 EXPECT_EQ(expected_error_message, error_message); |
| 528 } | 528 } |
| 529 | 529 |
| 530 TEST_F(SigninCreateProfileHandlerTest, CustodianHasAuthError) { | 530 TEST_F(SigninCreateProfileHandlerTest, CustodianHasAuthError) { |
| 531 // Set an Auth Error for the custodian. | 531 // Set an Auth Error for the custodian. |
| 532 const GoogleServiceAuthError error( | 532 const GoogleServiceAuthError error( |
| 533 GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS); | 533 GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS); |
| 534 FakeAuthStatusProvider provider( | 534 FakeAuthStatusProvider provider( |
| 535 SigninErrorControllerFactory::GetForProfile(custodian())); | 535 SigninErrorControllerFactory::GetForProfile(custodian())); |
| 536 provider.SetAuthError(kTestGaiaId1, error); | 536 provider.SetAuthError(kTestGaiaId1, error); |
| 537 | 537 |
| 538 // Create a supervised profile. | 538 // Create a supervised profile. |
| 539 base::ListValue list_args; | 539 base::ListValue list_args; |
| 540 list_args.Clear(); | 540 list_args.Clear(); |
| 541 list_args.Append(new base::StringValue(kSupervisedUsername1)); | 541 list_args.AppendString(kSupervisedUsername1); |
| 542 list_args.Append(new base::StringValue(profiles::GetDefaultAvatarIconUrl(0))); | 542 list_args.AppendString(profiles::GetDefaultAvatarIconUrl(0)); |
| 543 list_args.Append(new base::FundamentalValue(false)); // create_shortcut | 543 list_args.AppendBoolean(false); // create_shortcut |
| 544 list_args.Append(new base::FundamentalValue(true)); // is_supervised | 544 list_args.AppendBoolean(true); // is_supervised |
| 545 list_args.Append(new base::StringValue("")); // supervised_user_id | 545 list_args.AppendString(""); // supervised_user_id |
| 546 list_args.Append(new base::StringValue(custodian()->GetPath().value())); | 546 list_args.AppendString(custodian()->GetPath().value()); |
| 547 handler()->CreateProfile(&list_args); | 547 handler()->CreateProfile(&list_args); |
| 548 | 548 |
| 549 // Expect a JS callbacks containing an error message. | 549 // Expect a JS callbacks containing an error message. |
| 550 EXPECT_EQ(1U, web_ui()->call_data().size()); | 550 EXPECT_EQ(1U, web_ui()->call_data().size()); |
| 551 | 551 |
| 552 EXPECT_EQ(kTestWebUIResponse, web_ui()->call_data()[0]->function_name()); | 552 EXPECT_EQ(kTestWebUIResponse, web_ui()->call_data()[0]->function_name()); |
| 553 | 553 |
| 554 std::string callback_name; | 554 std::string callback_name; |
| 555 ASSERT_TRUE(web_ui()->call_data()[0]->arg1()->GetAsString(&callback_name)); | 555 ASSERT_TRUE(web_ui()->call_data()[0]->arg1()->GetAsString(&callback_name)); |
| 556 EXPECT_EQ("create-profile-error", callback_name); | 556 EXPECT_EQ("create-profile-error", callback_name); |
| 557 | 557 |
| 558 base::string16 expected_error_message = l10n_util::GetStringUTF16( | 558 base::string16 expected_error_message = l10n_util::GetStringUTF16( |
| 559 IDS_PROFILES_CREATE_CUSTODIAN_ACCOUNT_DETAILS_OUT_OF_DATE_ERROR); | 559 IDS_PROFILES_CREATE_CUSTODIAN_ACCOUNT_DETAILS_OUT_OF_DATE_ERROR); |
| 560 base::string16 error_message; | 560 base::string16 error_message; |
| 561 ASSERT_TRUE(web_ui()->call_data()[0]->arg2()->GetAsString(&error_message)); | 561 ASSERT_TRUE(web_ui()->call_data()[0]->arg2()->GetAsString(&error_message)); |
| 562 EXPECT_EQ(expected_error_message, error_message); | 562 EXPECT_EQ(expected_error_message, error_message); |
| 563 } | 563 } |
| 564 | 564 |
| 565 TEST_F(SigninCreateProfileHandlerTest, NotAllowedToCreateSupervisedUser) { | 565 TEST_F(SigninCreateProfileHandlerTest, NotAllowedToCreateSupervisedUser) { |
| 566 // Custodian is not permitted to create supervised users. | 566 // Custodian is not permitted to create supervised users. |
| 567 custodian()->GetPrefs()->SetBoolean(prefs::kSupervisedUserCreationAllowed, | 567 custodian()->GetPrefs()->SetBoolean(prefs::kSupervisedUserCreationAllowed, |
| 568 false); | 568 false); |
| 569 | 569 |
| 570 // Create a supervised profile. | 570 // Create a supervised profile. |
| 571 base::ListValue list_args; | 571 base::ListValue list_args; |
| 572 list_args.Clear(); | 572 list_args.Clear(); |
| 573 list_args.Append(new base::StringValue(kSupervisedUsername1)); | 573 list_args.AppendString(kSupervisedUsername1); |
| 574 list_args.Append(new base::StringValue(profiles::GetDefaultAvatarIconUrl(0))); | 574 list_args.AppendString(profiles::GetDefaultAvatarIconUrl(0)); |
| 575 list_args.Append(new base::FundamentalValue(false)); // create_shortcut | 575 list_args.AppendBoolean(false); // create_shortcut |
| 576 list_args.Append(new base::FundamentalValue(true)); // is_supervised | 576 list_args.AppendBoolean(true); // is_supervised |
| 577 list_args.Append(new base::StringValue("")); // supervised_user_id | 577 list_args.AppendString(""); // supervised_user_id |
| 578 list_args.Append(new base::StringValue(custodian()->GetPath().value())); | 578 list_args.AppendString(custodian()->GetPath().value()); |
| 579 handler()->CreateProfile(&list_args); | 579 handler()->CreateProfile(&list_args); |
| 580 | 580 |
| 581 // Expect nothing to happen. | 581 // Expect nothing to happen. |
| 582 EXPECT_EQ(0U, web_ui()->call_data().size()); | 582 EXPECT_EQ(0U, web_ui()->call_data().size()); |
| 583 } | 583 } |
| OLD | NEW |