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

Side by Side Diff: chrome/browser/profiles/gaia_info_update_service_unittest.cc

Issue 386733003: GAIAInfoUpdateService: cleanup and extend tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "chrome/browser/profiles/gaia_info_update_service.h" 5 #include "chrome/browser/profiles/gaia_info_update_service.h"
6 6
7 #include "base/prefs/pref_service.h" 7 #include "base/prefs/pref_service.h"
8 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
9 #include "chrome/browser/browser_process.h" 9 #include "chrome/browser/browser_process.h"
10 #include "chrome/browser/profiles/profile_downloader.h" 10 #include "chrome/browser/profiles/profile_downloader.h"
(...skipping 16 matching lines...) Expand all
27 class ProfileDownloaderMock : public ProfileDownloader { 27 class ProfileDownloaderMock : public ProfileDownloader {
28 public: 28 public:
29 explicit ProfileDownloaderMock(ProfileDownloaderDelegate* delegate) 29 explicit ProfileDownloaderMock(ProfileDownloaderDelegate* delegate)
30 : ProfileDownloader(delegate) { 30 : ProfileDownloader(delegate) {
31 } 31 }
32 32
33 virtual ~ProfileDownloaderMock() { 33 virtual ~ProfileDownloaderMock() {
34 } 34 }
35 35
36 MOCK_CONST_METHOD0(GetProfileFullName, base::string16()); 36 MOCK_CONST_METHOD0(GetProfileFullName, base::string16());
37 MOCK_CONST_METHOD0(GetProfileGivenName, base::string16());
37 MOCK_CONST_METHOD0(GetProfilePicture, SkBitmap()); 38 MOCK_CONST_METHOD0(GetProfilePicture, SkBitmap());
38 MOCK_CONST_METHOD0(GetProfilePictureStatus, 39 MOCK_CONST_METHOD0(GetProfilePictureStatus,
39 ProfileDownloader::PictureStatus()); 40 ProfileDownloader::PictureStatus());
40 MOCK_CONST_METHOD0(GetProfilePictureURL, std::string()); 41 MOCK_CONST_METHOD0(GetProfilePictureURL, std::string());
41 }; 42 };
42 43
43 class GAIAInfoUpdateServiceMock : public GAIAInfoUpdateService { 44 class GAIAInfoUpdateServiceMock : public GAIAInfoUpdateService {
44 public: 45 public:
45 explicit GAIAInfoUpdateServiceMock(Profile* profile) 46 explicit GAIAInfoUpdateServiceMock(Profile* profile)
46 : GAIAInfoUpdateService(profile) { 47 : GAIAInfoUpdateService(profile) {
47 } 48 }
48 49
49 virtual ~GAIAInfoUpdateServiceMock() { 50 virtual ~GAIAInfoUpdateServiceMock() {
50 } 51 }
51 52
52 MOCK_METHOD0(Update, void()); 53 MOCK_METHOD0(Update, void());
53 }; 54 };
54 55
55 class GAIAInfoUpdateServiceTest : public ProfileInfoCacheTest { 56 class GAIAInfoUpdateServiceTest : public ProfileInfoCacheTest {
56 protected: 57 protected:
57 GAIAInfoUpdateServiceTest() : profile_(NULL) { 58 GAIAInfoUpdateServiceTest() : profile_(NULL) {
58 } 59 }
59 60
60 Profile* profile() { 61 Profile* profile() {
61 if (!profile_) { 62 if (!profile_)
62 profile_ = testing_profile_manager_.CreateTestingProfile("Person 1"); 63 profile_ = CreateProfile("Person 1");
63 // The testing manager sets the profile name manually, which counts as
64 // a user-customized profile name. Reset this to match the default name
65 // we are actually using.
66 size_t index = GetCache()->GetIndexOfProfileWithPath(profile_->GetPath());
67 GetCache()->SetProfileIsUsingDefaultNameAtIndex(index, true);
68 }
69 return profile_; 64 return profile_;
70 } 65 }
71 66
72 NiceMock<GAIAInfoUpdateServiceMock>* service() { return service_.get(); } 67 NiceMock<GAIAInfoUpdateServiceMock>* service() { return service_.get(); }
73 NiceMock<ProfileDownloaderMock>* downloader() { return downloader_.get(); } 68 NiceMock<ProfileDownloaderMock>* downloader() { return downloader_.get(); }
74 69
70 Profile* CreateProfile(const std::string& name) {
71 Profile* profile = testing_profile_manager_.CreateTestingProfile(name);
72 // The testing manager sets the profile name manually, which counts as
73 // a user-customized profile name. Reset this to match the default name
74 // we are actually using.
75 size_t index = GetCache()->GetIndexOfProfileWithPath(profile->GetPath());
76 GetCache()->SetProfileIsUsingDefaultNameAtIndex(index, true);
77 return profile;
78 }
79
80 static std::string GivenName(const std::string& id) {
81 return id + "first";
82 }
83 static std::string FullName(const std::string& id) {
84 return GivenName(id) + " " + id + "last";
85 }
86 static base::string16 GivenName16(const std::string& id) {
87 return base::UTF8ToUTF16(GivenName(id));
88 }
89 static base::string16 FullName16(const std::string& id) {
90 return base::UTF8ToUTF16(FullName(id));
91 }
92
93 void ProfileDownloadSuccess(
94 const base::string16& full_name,
95 const base::string16& given_name,
96 const gfx::Image& image,
97 const std::string& url) {
98 EXPECT_CALL(*downloader(), GetProfileFullName()).
99 WillOnce(Return(full_name));
100 EXPECT_CALL(*downloader(), GetProfileGivenName()).
101 WillOnce(Return(given_name));
102 const SkBitmap* bmp = image.ToSkBitmap();
103 EXPECT_CALL(*downloader(), GetProfilePicture()).WillOnce(Return(*bmp));
104 EXPECT_CALL(*downloader(), GetProfilePictureStatus()).
105 WillOnce(Return(ProfileDownloader::PICTURE_SUCCESS));
106 EXPECT_CALL(*downloader(), GetProfilePictureURL()).WillOnce(Return(url));
107
108 service()->OnProfileDownloadSuccess(downloader());
109 }
110
111 void RenameProfile(const base::string16& full_name,
112 const base::string16& given_name) {
113 gfx::Image image = gfx::test::CreateImage();
114 std::string url("foo.com");
115 ProfileDownloadSuccess(full_name, given_name, image, url);
116
117 // Make sure the right profile was updated correctly.
118 size_t index = GetCache()->GetIndexOfProfileWithPath(profile()->GetPath());
119 EXPECT_EQ(full_name, GetCache()->GetGAIANameOfProfileAtIndex(index));
120 EXPECT_EQ(given_name, GetCache()->GetGAIAGivenNameOfProfileAtIndex(index));
121 }
122
75 private: 123 private:
76 virtual void SetUp() OVERRIDE; 124 virtual void SetUp() OVERRIDE;
77 virtual void TearDown() OVERRIDE; 125 virtual void TearDown() OVERRIDE;
78 126
79 Profile* profile_; 127 Profile* profile_;
80 scoped_ptr<NiceMock<GAIAInfoUpdateServiceMock> > service_; 128 scoped_ptr<NiceMock<GAIAInfoUpdateServiceMock> > service_;
81 scoped_ptr<NiceMock<ProfileDownloaderMock> > downloader_; 129 scoped_ptr<NiceMock<ProfileDownloaderMock> > downloader_;
82 }; 130 };
83 131
84 void GAIAInfoUpdateServiceTest::SetUp() { 132 void GAIAInfoUpdateServiceTest::SetUp() {
85 ProfileInfoCacheTest::SetUp(); 133 ProfileInfoCacheTest::SetUp();
86 service_.reset(new NiceMock<GAIAInfoUpdateServiceMock>(profile())); 134 service_.reset(new NiceMock<GAIAInfoUpdateServiceMock>(profile()));
87 downloader_.reset(new NiceMock<ProfileDownloaderMock>(service())); 135 downloader_.reset(new NiceMock<ProfileDownloaderMock>(service()));
88 } 136 }
89 137
90 void GAIAInfoUpdateServiceTest::TearDown() { 138 void GAIAInfoUpdateServiceTest::TearDown() {
91 downloader_.reset(); 139 downloader_.reset();
92 service_->Shutdown(); 140 service_->Shutdown();
93 service_.reset(); 141 service_.reset();
94 ProfileInfoCacheTest::TearDown(); 142 ProfileInfoCacheTest::TearDown();
95 } 143 }
96 144
97 } // namespace 145 } // namespace
98 146
99 TEST_F(GAIAInfoUpdateServiceTest, DownloadSuccess) { 147 TEST_F(GAIAInfoUpdateServiceTest, DownloadSuccess) {
100 base::string16 name = base::ASCIIToUTF16("Pat Smith");
101 EXPECT_CALL(*downloader(), GetProfileFullName()).WillOnce(Return(name));
102 gfx::Image image = gfx::test::CreateImage();
103 const SkBitmap* bmp = image.ToSkBitmap();
104 EXPECT_CALL(*downloader(), GetProfilePicture()).WillOnce(Return(*bmp));
105 EXPECT_CALL(*downloader(), GetProfilePictureStatus()).
106 WillOnce(Return(ProfileDownloader::PICTURE_SUCCESS));
107 std::string url("foo.com");
108 EXPECT_CALL(*downloader(), GetProfilePictureURL()).WillOnce(Return(url));
109
110 // No URL should be cached yet. 148 // No URL should be cached yet.
111 EXPECT_EQ(std::string(), service()->GetCachedPictureURL()); 149 EXPECT_EQ(std::string(), service()->GetCachedPictureURL());
112 150
113 service()->OnProfileDownloadSuccess(downloader()); 151 base::string16 name = base::ASCIIToUTF16("Pat Smith");
152 base::string16 given_name = base::ASCIIToUTF16("Pat");
153 gfx::Image image = gfx::test::CreateImage();
154 std::string url("foo.com");
155 ProfileDownloadSuccess(name, given_name, image, url);
114 156
115 // On success both the profile info and GAIA info should be updated. 157 // On success the GAIA info should be updated.
116 size_t index = GetCache()->GetIndexOfProfileWithPath(profile()->GetPath()); 158 size_t index = GetCache()->GetIndexOfProfileWithPath(profile()->GetPath());
117 EXPECT_EQ(name, GetCache()->GetNameOfProfileAtIndex(index));
Marc Treib 2014/07/11 12:25:26 The GAIAInfoUpdateService does *not* actually upda
noms (inactive) 2014/07/11 13:25:08 Hmm. GetNameOfProfile() returns either the Gaia na
Marc Treib 2014/07/11 13:30:28 Not quite - it uses the local profile name if it's
noms (inactive) 2014/07/11 13:52:29 I agree it should not be tested here. Ok. On 2014
118 EXPECT_EQ(name, GetCache()->GetGAIANameOfProfileAtIndex(index)); 159 EXPECT_EQ(name, GetCache()->GetGAIANameOfProfileAtIndex(index));
160 EXPECT_EQ(given_name, GetCache()->GetGAIAGivenNameOfProfileAtIndex(index));
119 EXPECT_TRUE(gfx::test::IsEqual( 161 EXPECT_TRUE(gfx::test::IsEqual(
120 image, *GetCache()->GetGAIAPictureOfProfileAtIndex(index))); 162 image, *GetCache()->GetGAIAPictureOfProfileAtIndex(index)));
121 EXPECT_EQ(url, service()->GetCachedPictureURL()); 163 EXPECT_EQ(url, service()->GetCachedPictureURL());
122 } 164 }
123 165
124 TEST_F(GAIAInfoUpdateServiceTest, DownloadFailure) { 166 TEST_F(GAIAInfoUpdateServiceTest, DownloadFailure) {
125 size_t index = GetCache()->GetIndexOfProfileWithPath(profile()->GetPath()); 167 size_t index = GetCache()->GetIndexOfProfileWithPath(profile()->GetPath());
126 base::string16 old_name = GetCache()->GetNameOfProfileAtIndex(index); 168 base::string16 old_name = GetCache()->GetNameOfProfileAtIndex(index);
127 gfx::Image old_image = GetCache()->GetAvatarIconOfProfileAtIndex(index); 169 gfx::Image old_image = GetCache()->GetAvatarIconOfProfileAtIndex(index);
128 170
129 EXPECT_EQ(std::string(), service()->GetCachedPictureURL()); 171 EXPECT_EQ(std::string(), service()->GetCachedPictureURL());
130 172
131 service()->OnProfileDownloadFailure(downloader(), 173 service()->OnProfileDownloadFailure(downloader(),
132 ProfileDownloaderDelegate::SERVICE_ERROR); 174 ProfileDownloaderDelegate::SERVICE_ERROR);
133 175
134 // On failure nothing should be updated. 176 // On failure nothing should be updated.
135 EXPECT_EQ(old_name, GetCache()->GetNameOfProfileAtIndex(index)); 177 EXPECT_EQ(old_name, GetCache()->GetNameOfProfileAtIndex(index));
136 EXPECT_EQ(base::string16(), GetCache()->GetGAIANameOfProfileAtIndex(index)); 178 EXPECT_EQ(base::string16(), GetCache()->GetGAIANameOfProfileAtIndex(index));
179 EXPECT_EQ(base::string16(),
180 GetCache()->GetGAIAGivenNameOfProfileAtIndex(index));
137 EXPECT_TRUE(gfx::test::IsEqual( 181 EXPECT_TRUE(gfx::test::IsEqual(
138 old_image, GetCache()->GetAvatarIconOfProfileAtIndex(index))); 182 old_image, GetCache()->GetAvatarIconOfProfileAtIndex(index)));
139 EXPECT_EQ(NULL, GetCache()->GetGAIAPictureOfProfileAtIndex(index)); 183 EXPECT_EQ(NULL, GetCache()->GetGAIAPictureOfProfileAtIndex(index));
140 EXPECT_EQ(std::string(), service()->GetCachedPictureURL()); 184 EXPECT_EQ(std::string(), service()->GetCachedPictureURL());
141 } 185 }
142 186
187 TEST_F(GAIAInfoUpdateServiceTest, HandlesProfileReordering) {
188 size_t index = GetCache()->GetIndexOfProfileWithPath(profile()->GetPath());
189 GetCache()->SetNameOfProfileAtIndex(index, FullName16("B"));
190 GetCache()->SetProfileIsUsingDefaultNameAtIndex(index, true);
191
192 CreateProfile(FullName("A"));
193 CreateProfile(FullName("C"));
194 CreateProfile(FullName("E"));
195
196 size_t index_before =
197 GetCache()->GetIndexOfProfileWithPath(profile()->GetPath());
198
199 // Rename our profile.
200 RenameProfile(FullName16("D"), GivenName16("D"));
201 // Profiles should have been reordered in the cache.
202 EXPECT_NE(index_before,
203 GetCache()->GetIndexOfProfileWithPath(profile()->GetPath()));
204 // Rename the profile back to the original name, it should go back to its
205 // original position.
206 RenameProfile(FullName16("B"), GivenName16("B"));
207 EXPECT_EQ(index_before,
208 GetCache()->GetIndexOfProfileWithPath(profile()->GetPath()));
209
210 // Rename only the given name of our profile.
211 RenameProfile(FullName16("B"), GivenName16("D"));
212 // Rename the profile back to the original name, it should go back to its
213 // original position.
214 RenameProfile(FullName16("B"), GivenName16("B"));
215 EXPECT_EQ(index_before,
216 GetCache()->GetIndexOfProfileWithPath(profile()->GetPath()));
217
218 // Rename only the full name of our profile.
219 RenameProfile(FullName16("D"), GivenName16("B"));
220 // Rename the profile back to the original name, it should go back to its
221 // original position.
222 RenameProfile(FullName16("B"), GivenName16("B"));
223 EXPECT_EQ(index_before,
224 GetCache()->GetIndexOfProfileWithPath(profile()->GetPath()));
225 }
226
143 TEST_F(GAIAInfoUpdateServiceTest, ShouldUseGAIAProfileInfo) { 227 TEST_F(GAIAInfoUpdateServiceTest, ShouldUseGAIAProfileInfo) {
144 #if defined(OS_CHROMEOS) 228 #if defined(OS_CHROMEOS)
145 // This feature should never be enabled on ChromeOS. 229 // This feature should never be enabled on ChromeOS.
146 EXPECT_FALSE(GAIAInfoUpdateService::ShouldUseGAIAProfileInfo(profile())); 230 EXPECT_FALSE(GAIAInfoUpdateService::ShouldUseGAIAProfileInfo(profile()));
147 #endif 231 #endif
148 } 232 }
149 233
150 TEST_F(GAIAInfoUpdateServiceTest, ScheduleUpdate) { 234 TEST_F(GAIAInfoUpdateServiceTest, ScheduleUpdate) {
151 EXPECT_TRUE(service()->timer_.IsRunning()); 235 EXPECT_TRUE(service()->timer_.IsRunning());
152 service()->timer_.Stop(); 236 service()->timer_.Stop();
(...skipping 29 matching lines...) Expand all
182 266
183 TEST_F(GAIAInfoUpdateServiceTest, LogIn) { 267 TEST_F(GAIAInfoUpdateServiceTest, LogIn) {
184 // Log in. 268 // Log in.
185 EXPECT_CALL(*service(), Update()); 269 EXPECT_CALL(*service(), Update());
186 SigninManager* signin_manager = 270 SigninManager* signin_manager =
187 SigninManagerFactory::GetForProfile(profile()); 271 SigninManagerFactory::GetForProfile(profile());
188 signin_manager->OnExternalSigninCompleted("pat@example.com"); 272 signin_manager->OnExternalSigninCompleted("pat@example.com");
189 } 273 }
190 274
191 #endif 275 #endif
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698