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

Side by Side Diff: chrome/browser/ui/sync/one_click_signin_helper_unittest.cc

Issue 120343004: Reland r242290, r241609, r242134. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years 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 "base/prefs/pref_service.h" 5 #include "base/prefs/pref_service.h"
6 #include "base/prefs/scoped_user_pref_update.h" 6 #include "base/prefs/scoped_user_pref_update.h"
7 #include "base/strings/utf_string_conversions.h" 7 #include "base/strings/utf_string_conversions.h"
8 #include "base/values.h" 8 #include "base/values.h"
9 #include "chrome/browser/chrome_notification_types.h" 9 #include "chrome/browser/chrome_notification_types.h"
10 #include "chrome/browser/content_settings/cookie_settings.h" 10 #include "chrome/browser/content_settings/cookie_settings.h"
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 #include "grit/generated_resources.h" 44 #include "grit/generated_resources.h"
45 #include "testing/gtest/include/gtest/gtest.h" 45 #include "testing/gtest/include/gtest/gtest.h"
46 #include "ui/base/l10n/l10n_util.h" 46 #include "ui/base/l10n/l10n_util.h"
47 47
48 using ::testing::_; 48 using ::testing::_;
49 using ::testing::AtLeast; 49 using ::testing::AtLeast;
50 using ::testing::Return; 50 using ::testing::Return;
51 51
52 namespace { 52 namespace {
53 53
54 // Explicit URLs are sign in URLs created by chrome for specific sign in access
55 // points. Implicit URLs are those to sign for some Google service, like gmail
56 // or drive. In former case, with a valid URL, we don't want to offer the
57 // interstitial. In all other cases we do.
58
59 const char kImplicitURLString[] =
60 "https://accounts.google.com/ServiceLogin"
61 "?service=foo&continue=http://foo.google.com";
62
63 class SigninManagerMock : public FakeSigninManager { 54 class SigninManagerMock : public FakeSigninManager {
64 public: 55 public:
65 explicit SigninManagerMock(Profile* profile) : FakeSigninManager(profile) { 56 explicit SigninManagerMock(Profile* profile) : FakeSigninManager(profile) {
66 Initialize(profile, NULL); 57 Initialize(profile, NULL);
67 } 58 }
68 MOCK_CONST_METHOD1(IsAllowedUsername, bool(const std::string& username)); 59 MOCK_CONST_METHOD1(IsAllowedUsername, bool(const std::string& username));
69 }; 60 };
70 61
71 static BrowserContextKeyedService* BuildSigninManagerMock( 62 static BrowserContextKeyedService* BuildSigninManagerMock(
72 content::BrowserContext* profile) { 63 content::BrowserContext* profile) {
(...skipping 668 matching lines...) Expand 10 before | Expand all | Expand 10 after
741 EXPECT_CALL(*sync_service, RemoveObserver(helper)); 732 EXPECT_CALL(*sync_service, RemoveObserver(helper));
742 SetContents(NULL); 733 SetContents(NULL);
743 } 734 }
744 735
745 // I/O thread tests 736 // I/O thread tests
746 737
747 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThread) { 738 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThread) {
748 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false)); 739 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false));
749 EXPECT_EQ(OneClickSigninHelper::CAN_OFFER, 740 EXPECT_EQ(OneClickSigninHelper::CAN_OFFER,
750 OneClickSigninHelper::CanOfferOnIOThreadImpl( 741 OneClickSigninHelper::CanOfferOnIOThreadImpl(
751 valid_gaia_url_, std::string(), &request_, io_data.get())); 742 valid_gaia_url_, &request_, io_data.get()));
752 } 743 }
753 744
754 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadIncognito) { 745 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadIncognito) {
755 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(true)); 746 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(true));
756 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER, 747 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER,
757 OneClickSigninHelper::CanOfferOnIOThreadImpl( 748 OneClickSigninHelper::CanOfferOnIOThreadImpl(
758 valid_gaia_url_, std::string(), &request_, io_data.get())); 749 valid_gaia_url_, &request_, io_data.get()));
759 } 750 }
760 751
761 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadNoIOData) { 752 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadNoIOData) {
762 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER, 753 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER,
763 OneClickSigninHelper::CanOfferOnIOThreadImpl( 754 OneClickSigninHelper::CanOfferOnIOThreadImpl(
764 valid_gaia_url_, std::string(), &request_, NULL)); 755 valid_gaia_url_, &request_, NULL));
765 } 756 }
766 757
767 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadBadURL) { 758 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadBadURL) {
768 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false)); 759 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false));
769 EXPECT_EQ( 760 EXPECT_EQ(
770 OneClickSigninHelper::IGNORE_REQUEST, 761 OneClickSigninHelper::IGNORE_REQUEST,
771 OneClickSigninHelper::CanOfferOnIOThreadImpl( 762 OneClickSigninHelper::CanOfferOnIOThreadImpl(
772 GURL("https://foo.com/"), std::string(), &request_, io_data.get())); 763 GURL("https://foo.com/"), &request_, io_data.get()));
773 EXPECT_EQ(OneClickSigninHelper::IGNORE_REQUEST, 764 EXPECT_EQ(OneClickSigninHelper::IGNORE_REQUEST,
774 OneClickSigninHelper::CanOfferOnIOThreadImpl( 765 OneClickSigninHelper::CanOfferOnIOThreadImpl(
775 GURL("http://accounts.google.com/"), 766 GURL("http://accounts.google.com/"),
776 std::string(),
777 &request_, 767 &request_,
778 io_data.get())); 768 io_data.get()));
779 } 769 }
780 770
781 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadReferrer) {
782 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false));
783 std::string continue_url(signin::GetPromoURL(
784 signin::SOURCE_START_PAGE, false).spec());
785
786 EXPECT_EQ(OneClickSigninHelper::CAN_OFFER,
787 OneClickSigninHelper::CanOfferOnIOThreadImpl(
788 valid_gaia_url_, continue_url, &request_, io_data.get()));
789
790 EXPECT_EQ(OneClickSigninHelper::CAN_OFFER,
791 OneClickSigninHelper::CanOfferOnIOThreadImpl(
792 valid_gaia_url_, kImplicitURLString, &request_, io_data.get()));
793
794 std::string bad_url_1 = continue_url;
795 const std::string service_name = "chromiumsync";
796 bad_url_1.replace(bad_url_1.find(service_name), service_name.length(),
797 "foo");
798
799 EXPECT_EQ(OneClickSigninHelper::CAN_OFFER,
800 OneClickSigninHelper::CanOfferOnIOThreadImpl(
801 valid_gaia_url_, bad_url_1, &request_, io_data.get()));
802
803 std::string bad_url_2 = continue_url;
804 const std::string source_num = "%3D0";
805 bad_url_2.replace(bad_url_1.find(source_num), source_num.length(), "%3D10");
806
807 EXPECT_EQ(OneClickSigninHelper::CAN_OFFER,
808 OneClickSigninHelper::CanOfferOnIOThreadImpl(
809 valid_gaia_url_, bad_url_2, &request_, io_data.get()));
810
811 std::string bad_url_3 = continue_url;
812 const std::string source = "source%3D0";
813 bad_url_3.erase(bad_url_1.find(source), source.length());
814
815 EXPECT_EQ(OneClickSigninHelper::CAN_OFFER,
816 OneClickSigninHelper::CanOfferOnIOThreadImpl(
817 valid_gaia_url_, bad_url_3, &request_, io_data.get()));
818 }
819
820 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadDisabled) { 771 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadDisabled) {
821 EnableOneClick(false); 772 EnableOneClick(false);
822 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false)); 773 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false));
823 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER, 774 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER,
824 OneClickSigninHelper::CanOfferOnIOThreadImpl( 775 OneClickSigninHelper::CanOfferOnIOThreadImpl(
825 valid_gaia_url_, std::string(), &request_, io_data.get())); 776 valid_gaia_url_, &request_, io_data.get()));
826 } 777 }
827 778
828 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadSignedIn) { 779 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadSignedIn) {
829 PrefService* pref_service = profile()->GetPrefs(); 780 PrefService* pref_service = profile()->GetPrefs();
830 pref_service->SetString(prefs::kGoogleServicesUsername, "user@gmail.com"); 781 pref_service->SetString(prefs::kGoogleServicesUsername, "user@gmail.com");
831 782
832 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false)); 783 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false));
833 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER, 784 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER,
834 OneClickSigninHelper::CanOfferOnIOThreadImpl( 785 OneClickSigninHelper::CanOfferOnIOThreadImpl(
835 valid_gaia_url_, std::string(), &request_, io_data.get())); 786 valid_gaia_url_, &request_, io_data.get()));
836 } 787 }
837 788
838 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadEmailNotAllowed) { 789 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadEmailNotAllowed) {
839 SetAllowedUsernamePattern("*@example.com"); 790 SetAllowedUsernamePattern("*@example.com");
840 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false)); 791 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false));
841 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER, 792 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER,
842 OneClickSigninHelper::CanOfferOnIOThreadImpl( 793 OneClickSigninHelper::CanOfferOnIOThreadImpl(
843 valid_gaia_url_, std::string(), &request_, io_data.get())); 794 valid_gaia_url_, &request_, io_data.get()));
844 } 795 }
845 796
846 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadEmailAlreadyUsed) { 797 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadEmailAlreadyUsed) {
847 ProfileInfoCache* cache = testing_profile_manager_.profile_info_cache(); 798 ProfileInfoCache* cache = testing_profile_manager_.profile_info_cache();
848 const base::FilePath& user_data_dir = cache->GetUserDataDir(); 799 const base::FilePath& user_data_dir = cache->GetUserDataDir();
849 cache->AddProfileToCache(user_data_dir.Append(FILE_PATH_LITERAL("user")), 800 cache->AddProfileToCache(user_data_dir.Append(FILE_PATH_LITERAL("user")),
850 UTF8ToUTF16("user"), 801 UTF8ToUTF16("user"),
851 UTF8ToUTF16("user@gmail.com"), 0, std::string()); 802 UTF8ToUTF16("user@gmail.com"), 0, std::string());
852 803
853 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false)); 804 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false));
854 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER, 805 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER,
855 OneClickSigninHelper::CanOfferOnIOThreadImpl( 806 OneClickSigninHelper::CanOfferOnIOThreadImpl(
856 valid_gaia_url_, std::string(), &request_, io_data.get())); 807 valid_gaia_url_, &request_, io_data.get()));
857 } 808 }
858 809
859 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadWithRejectedEmail) { 810 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadWithRejectedEmail) {
860 AddEmailToOneClickRejectedList("user@gmail.com"); 811 AddEmailToOneClickRejectedList("user@gmail.com");
861 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false)); 812 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false));
862 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER, 813 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER,
863 OneClickSigninHelper::CanOfferOnIOThreadImpl( 814 OneClickSigninHelper::CanOfferOnIOThreadImpl(
864 valid_gaia_url_, std::string(), &request_, io_data.get())); 815 valid_gaia_url_, &request_, io_data.get()));
865 } 816 }
866 817
867 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadNoSigninCookies) { 818 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadNoSigninCookies) {
868 AllowSigninCookies(false); 819 AllowSigninCookies(false);
869 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false)); 820 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false));
870 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER, 821 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER,
871 OneClickSigninHelper::CanOfferOnIOThreadImpl( 822 OneClickSigninHelper::CanOfferOnIOThreadImpl(
872 valid_gaia_url_, std::string(), &request_, io_data.get())); 823 valid_gaia_url_, &request_, io_data.get()));
873 } 824 }
874 825
875 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadDisabledByPolicy) { 826 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadDisabledByPolicy) {
876 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false)); 827 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false));
877 EXPECT_EQ(OneClickSigninHelper::CAN_OFFER, 828 EXPECT_EQ(OneClickSigninHelper::CAN_OFFER,
878 OneClickSigninHelper::CanOfferOnIOThreadImpl( 829 OneClickSigninHelper::CanOfferOnIOThreadImpl(
879 valid_gaia_url_, std::string(), &request_, io_data.get())); 830 valid_gaia_url_, &request_, io_data.get()));
880 831
881 // Simulate a policy disabling signin by writing kSigninAllowed directly. 832 // Simulate a policy disabling signin by writing kSigninAllowed directly.
882 // We should not offer to sign in the browser. 833 // We should not offer to sign in the browser.
883 profile()->GetTestingPrefService()->SetManagedPref( 834 profile()->GetTestingPrefService()->SetManagedPref(
884 prefs::kSigninAllowed, base::Value::CreateBooleanValue(false)); 835 prefs::kSigninAllowed, base::Value::CreateBooleanValue(false));
885 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER, 836 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER,
886 OneClickSigninHelper::CanOfferOnIOThreadImpl( 837 OneClickSigninHelper::CanOfferOnIOThreadImpl(
887 valid_gaia_url_, std::string(), &request_, io_data.get())); 838 valid_gaia_url_, &request_, io_data.get()));
888 839
889 // Reset the preference. 840 // Reset the preference.
890 profile()->GetTestingPrefService()->SetManagedPref( 841 profile()->GetTestingPrefService()->SetManagedPref(
891 prefs::kSigninAllowed, base::Value::CreateBooleanValue(true)); 842 prefs::kSigninAllowed, base::Value::CreateBooleanValue(true));
892 843
893 // Simulate a policy disabling sync by writing kSyncManaged directly. 844 // Simulate a policy disabling sync by writing kSyncManaged directly.
894 // We should still offer to sign in the browser. 845 // We should still offer to sign in the browser.
895 profile()->GetTestingPrefService()->SetManagedPref( 846 profile()->GetTestingPrefService()->SetManagedPref(
896 prefs::kSyncManaged, base::Value::CreateBooleanValue(true)); 847 prefs::kSyncManaged, base::Value::CreateBooleanValue(true));
897 EXPECT_EQ(OneClickSigninHelper::CAN_OFFER, 848 EXPECT_EQ(OneClickSigninHelper::CAN_OFFER,
898 OneClickSigninHelper::CanOfferOnIOThreadImpl( 849 OneClickSigninHelper::CanOfferOnIOThreadImpl(
899 valid_gaia_url_, std::string(), &request_, io_data.get())); 850 valid_gaia_url_, &request_, io_data.get()));
900 } 851 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698